--log-level=eal,8 as suggested by @VipinVarghese revealed that this was a permissions issue:
$ ./examples/helloworld/build/helloworld --log-level=eal,8 EAL: Detected lcore 0 as core 0 on socket 0 EAL: Detected lcore 1 as core 0 on socket 0 EAL: Detected lcore 2 as core 0 on socket 0 EAL: Detected lcore 3 as core 0 on socket 0 EAL: Support maximum 128 logical core(s) by configuration. EAL: Detected 4 lcore(s) EAL: Detected 1 NUMA nodes EAL: open shared lib /usr/lib/x86_64-linux-gnu/dpdk/pmds-20.0/librte_pmd_qede.so EAL: Registered [vdev] bus. EAL: Registered [pci] bus. EAL: Registered [eth] device class. EAL: open shared lib /usr/lib/x86_64-linux-gnu/dpdk/pmds-20.0/librte_pmd_aesni_mb.so ... EAL: Ask a virtual area of 0x61000 bytes EAL: Virtual area found at 0xd00600000 (size = 0x61000) EAL: Memseg list allocated: 0x800kB at socket 0 EAL: Ask a virtual area of 0x400000000 bytes EAL: Virtual area found at 0xd00800000 (size = 0x400000000) EAL: TSC frequency is ~2590000 KHz EAL: Master lcore 0 is ready (tid=7fc11ed01d00;cpuset=) EAL: lcore 2 is ready (tid=7fc116ffd700;cpuset=) EAL: lcore 3 is ready (tid=7fc1167fc700;cpuset=) EAL: lcore 1 is ready (tid=7fc1177fe700;cpuset=) EAL: Trying to obtain current memory policy. EAL: Setting policy MPOL_PREFERRED for socket 0 EAL: get_seg_fd(): open failed: Permission denied EAL: Couldn't get fd on hugepage file EAL: attempted to allocate 1 segments, but only 0 were allocated EAL: Restoring previous memory policy: 0 EAL: error allocating rte services array EAL: FATAL: rte_service_init() failed EAL: rte_service_init() failed PANIC in main(): Cannot init EAL 5: [./examples/helloworld/build/helloworld(+0x11de) [0x56459e5391de]] 4: [/lib/x86_64-linux-gnu/libc.so.6(__libc_start_main+0xf3) [0x7fc11eed00b3]] 3: [./examples/helloworld/build/helloworld(+0x111c) [0x56459e53911c]] 2: [/lib/x86_64-linux-gnu/librte_eal.so.20.0(__rte_panic+0xc5) [0x7fc11f0a737e]] 1: [/lib/x86_64-linux-gnu/librte_eal.so.20.0(rte_dump_stack+0x32) [0x7fc11f0bec52]] Aborted (core dumped)
Tried solving the permissions problem (EAL: get_seg_fd(): open failed: Permission denied), but it only worked when I ran it as root:
$ sudo ./examples/helloworld/build/helloworld EAL: Detected 4 lcore(s) EAL: Detected 1 NUMA nodes EAL: Multi-process socket /var/run/dpdk/rte/mp_socket EAL: Selected IOVA mode 'PA' EAL: No available hugepages reported in hugepages-1048576kB EAL: Probing VFIO support... EAL: VFIO support initialized EAL: PCI device 0000:02:01.0 on NUMA socket -1 EAL: Invalid NUMA socket, default to 0 EAL: probe driver: 8086:100f net_e1000_em EAL: PCI device 0000:03:00.0 on NUMA socket -1 EAL: Invalid NUMA socket, default to 0 EAL: probe driver: 15ad:7b0 net_vmxnet3 hello from core 1 hello from core 2 hello from core 3 hello from core 0
As it turns out, this is the correct approach, even though the documentation appears to assume that this is obvious. There is no mention of root privileges required on section “6.2. Running a Sample Application”, excerpt below:
Copy the DPDK application binary to your target, then run the application as follows (assuming the platform has four memory channels per processor socket, and that cores 0-3 are present and are to be used for running the application):
./dpdk-helloworld -l 0-3 -n 4
However, this point is mentioned later in the documentation, see “8.2. Running DPDK Applications Without Root Privileges” where there’s a clear note:
The instructions below will allow running DPDK as non-root with older Linux kernel versions. However, since version 4.0, the kernel does not allow unprivileged processes to read the physical address information from the pagemaps file, making it impossible for those processes to use HW devices which require physical addresses
There is also a hint in the FAQ:
- What does “EAL: map_all_hugepages(): open failed: Permission denied Cannot init memory” mean? This is most likely due to the test application not being run with sudo to promote the user to a superuser. Alternatively, applications can also be run as regular user. For more information, please refer to DPDK Getting Started Guide.
And an email touching on this topic:
2016-07-07 16:47, Jez Higgins: > Is it possible to get DPDK up and running as non-root - if so, can > anyone guide me to what I'm missing? Or should I be giving this up as a > bad job? You can try the --no-huge option. But most of drivers won't work without hugepage currently. A rework of the memory allocation is needed to make it work better.
That was four years ago. Perhaps there is already a solution which does not require
--no-huge? If so, other answers are most welcome. For now, I’m going with this.
CLICK HERE to find out more related problems solutions.