Приложение DPDK не может работать без бесплатной огромной страницы
Я строю Helloworld
приложение в ДПДК. Я получаю сообщение об ошибке No free hugepages reported in hugepages-1048567
,
(1) Я строю DPDK-18.11, используя RTE_TARGET=x86_64-linuxapp-native-gcc
,
(2) я бегу usertools/dpdk-setup.sh
, бежать [15]
(построить DPDK).
(3) запустить [22]
Выделите огромные страницы. Я установил 1024 огромных страницы.
(4) запустить [18]
вставьте igb_uio
модуль.
(5) запустить [24]
привязывай свой NIC (e1000e
) чтобы igb_uio
модуль.
Затем я иду в examples/helloworld/
, бежать make
построить приложение. Когда я бегу ./build/app/helloworld -l 0-1 -n 4
, Я получаю следующее сообщение (без огромной страницы):
xiarui@wcf-OptiPlex-7060:~/dpdk/dpdk-18.11/examples/helloworld/build/app$ sudo ./helloworld -l 0 -n 4
EAL: Detected 12 lcore(s)
EAL: Detected 1 NUMA nodes
EAL: Multi-process socket /var/run/dpdk/rte/mp_socket
EAL: No free hugepages reported in hugepages-1048576kB
EAL: Probing VFIO support...
EAL: PCI device 0000:00:1f.6 on NUMA socket -1
EAL: Invalid NUMA socket, default to 0
EAL: probe driver: 8086:15bb net_e1000_em
hello from core 0
Я уже выделил hugepages
в сценарии установки и получите следующий вывод:
AnonHugePages: 0 kB
ShmemHugePages: 0 kB
HugePages_Total: 1024
HugePages_Free: 1024
HugePages_Rsvd: 0
HugePages_Surp: 0
Hugepagesize: 2048 kB
Кроме того, я нахожу e1000e
не может связываться с VFIO
так что я использую только igb_uio
Водитель.
Network devices using DPDK-compatible driver
============================================
0000:00:1f.6 'Ethernet Connection (7) I219-LM 15bb' drv=igb_uio unused=e1000e
Мой профиль хоста: CPU:
Architecture: x86_64
CPU op-mode(s): 32-bit, 64-bit
Byte Order: Little Endian
CPU(s): 12
On-line CPU(s) list: 0-11
Thread(s) per core: 2
Core(s) per socket: 6
Socket(s): 1
NUMA node(s): 1
Vendor ID: GenuineIntel
CPU family: 6
Model: 158
Model name: Intel(R) Core(TM) i7-8700 CPU @ 3.20GHz
Stepping: 10
CPU MHz: 800.493
CPU max MHz: 4600.0000
CPU min MHz: 800.0000
BogoMIPS: 6384.00
Virtualization: VT-x
L1d cache: 32K
L1i cache: 32K
L2 cache: 256K
L3 cache: 12288K
NUMA node0 CPU(s): 0-11
Объем памяти:
xiarui@wcf-OptiPlex-7060:~/dpdk/dpdk-18.11/examples/helloworld/build/app$ free -h
total used free shared buff/cache available
Mem: 7.6G 2.4G 4.4G 159M 809M 4.8G
Swap: 2.0G 0B 2.0G
Все идет хуже, когда я бегу pktgen-3.6.0
, Я получаю следующую ошибку:
>>> sdk '/home/xiarui/dpdk/dpdk-18.11', target 'x86_64-native-linuxapp-gcc'
Trying ./app/x86_64-native-linuxapp-gcc/pktgen
sudo -E ./app/x86_64-native-linuxapp-gcc/pktgen -l 0-1 -n 4 --proc-type auto --log-level 7 --file-prefix pg -- -T -P --crc-strip -m 1.0 -f themes/black-yellow.theme
Copyright (c) <2010-2019>, Intel Corporation. All rights reserved. Powered by DPDK
EAL: Detected 12 lcore(s)
EAL: Detected 1 NUMA nodes
EAL: Auto-detected process type: PRIMARY
EAL: Multi-process socket /var/run/dpdk/pg/mp_socket
EAL: No free hugepages reported in hugepages-1048576kB
EAL: Probing VFIO support...
EAL: PCI device 0000:00:1f.6 on NUMA socket -1
EAL: Invalid NUMA socket, default to 0
EAL: probe driver: 8086:15bb net_e1000_em
Lua 5.3.3 Copyright (C) 1994-2016 Lua.org, PUC-Rio
*** Copyright (c) <2010-2019>, Intel Corporation. All rights reserved.
*** Pktgen created by: Keith Wiles -- >>> Powered by DPDK <<<
Initialize Port 0 -- TxQ 1, RxQ 1, Src MAC 8c:ec:4b:a5:17:4f
eth_em_start(): Unable to initialize the hardware
!PANIC!: rte_eth_dev_start: port=0, Input/output error
PANIC in pktgen_config_ports():
rte_eth_dev_start: port=0, Input/output error6: [./app/x86_64-native-linuxapp-gcc/pktgen(_start+0x2a) [0x56038a3d29ba]]
5: [/lib/x86_64-linux-gnu/libc.so.6(__libc_start_main+0xe7) [0x7fe0b33a3b97]]
4: [./app/x86_64-native-linuxapp-gcc/pktgen(main+0xe52) [0x56038a3ca782]]
3: [./app/x86_64-native-linuxapp-gcc/pktgen(pktgen_config_ports+0x1ef1) [0x56038a403761]]
2: [./app/x86_64-native-linuxapp-gcc/pktgen(__rte_panic+0xc5) [0x56038a3bb544]]
1: [./app/x86_64-native-linuxapp-gcc/pktgen(rte_dump_stack+0x2e) [0x56038a4f5f4e]]
Не могли бы вы поделиться со мной идеей? Спасибо за ваше время.
2 ответа
EAL: No free hugepages reported in hugepages-1048576kB EAL: Probing VFIO support... EAL: PCI device 0000:00:1f.6 on NUMA socket -1 EAL: Invalid NUMA socket, default to 0 EAL: probe driver: 8086:15bb net_e1000_em hello from core 0
Нет свободных 1Гб огромных страниц - это не ошибка, это просто информация.
Вы получили hello from core 0
вывод, так что ваше приложение hello world работает просто отлично, поздравляю!
Я бегу testpmd
в usertools/dpdk-setup.sh
и вещь плохая. Я получаю следующую ошибку:
Launching app
EAL: Detected 12 lcore(s)
EAL: Detected 1 NUMA nodes
EAL: Multi-process socket /var/run/dpdk/rte/mp_socket
EAL: No free hugepages reported in hugepages-1048576kB
EAL: Probing VFIO support...
EAL: PCI device 0000:00:1f.6 on NUMA socket -1
EAL: Invalid NUMA socket, default to 0
EAL: probe driver: 8086:15bb net_e1000_em
Interactive-mode selected
testpmd: create a new mbuf pool <mbuf_pool_socket_0>: n=203456, size=2176, socket=0
testpmd: preferred mempool ops selected: ring_mp_mc
EAL: Error - exiting with code: 1
Cause: Creation of mbuf pool for socket 0 failed: Cannot allocate memory
Кажется, приложение не может выделить память из огромных страниц.
Спасибо за ваше время.
РЕДАКТИРОВАТЬ
Я думаю, я был слишком жесток для hugepage allocation
, Поэтому я стараюсь выделить 2000*2MB
hugepages. Тогда все работает нормально.
bitmask: 0x0f
Launching app
EAL: Detected 12 lcore(s)
EAL: Detected 1 NUMA nodes
EAL: Multi-process socket /var/run/dpdk/rte/mp_socket
EAL: No free hugepages reported in hugepages-1048576kB
EAL: Probing VFIO support...
EAL: PCI device 0000:00:1f.6 on NUMA socket -1
EAL: Invalid NUMA socket, default to 0
EAL: probe driver: 8086:15bb net_e1000_em
testpmd: No probed ethernet devices
Interactive-mode selected
testpmd: create a new mbuf pool <mbuf_pool_socket_0>: n=171456, size=2176, socket=0
testpmd: preferred mempool ops selected: ring_mp_mc
Done
testpmd>
Я нахожу в своем VBox, у меня есть только два ядра, я выделяю только 128 огромных страниц, и все работает нормально. Однако, когда я использую рабочий стол с 12 ядрами, 128 огромных страниц недостаточно.
Не могли бы вы поделиться некоторыми принципами размещения огромных страниц? или просто чем больше, тем лучше. Спасибо за то, что вы поделились своими идеями.