先从官网进行源码的下载
安装一些依赖 libnuma-dev, meson, ninja 等
从源码编译出dpdk并进行安装
cd dpdk-<version>
meson build -Dexamples=all --wipe
cd build
ninja
sudo su
ninja install
ldconfig
下载安装igb_uio的内核驱动
sudo apt-get install linux-headers-$(uname -r)
sudo apt install dpdk-igb-uio-dkms
安装驱动尝试运行helloworld
-
安装uio.ko和igb_uio.ko
sudo modprobe uio sudo modprobe igb_uio
效果如下:
immortal@Ubuntu22:~/dpdk-21.11.1/examples/helloworld/build$ lsmod | grep uio igb_uio 24576 0 uio 20480 1 igb_uio
-
设置hugepage
sudo su echo 1024 > /sys/kernel/mm/hugepages/hugepages-2048kB/nr_hugepages mkdir -p /mnt/huge mount -t hugetlbfs pagesize=2MB /mnt/huge
-
切换网卡驱动
./usertools/dpdk-devbind.py --status //查看网卡 ifconfig sudo ifconfig ens33 down //down掉当前网卡 ./usertools/dpdk-devbind.py -b igb_uio 02:01.0 //绑定igb_uio为当前网卡驱动 # ./usertools/dpdk-devbind.py -b e1000 02:01.0 //切换为原网卡驱动 ./usertools/dpdk-devbind.py --status-dev net
效果如下:
immortal@Ubuntu22:~/dpdk-21.11.1/examples/helloworld/build$ dpdk-devbind.py --status-dev net Network devices using DPDK-compatible driver ============================================ 0000:02:01.0 '82545EM Gigabit Ethernet Controller (Copper) 100f' drv=igb_uio unused=e1000,vfio-pci
-
编译并运行helloworld
cd dpdk-<version>/examples/helloworld sudo apt install pkg-config make cd build sudo ./helloworld
效果如下:
immortal@Ubuntu22:~/dpdk-21.11.1/examples/helloworld/build$ sudo ./helloworld EAL: Detected CPU lcores: 16 EAL: Detected NUMA nodes: 1 EAL: Detected shared linkage of DPDK EAL: Multi-process socket /var/run/dpdk/rte/mp_socket EAL: Selected IOVA mode 'PA' EAL: No available 1048576 kB hugepages reported EAL: VFIO support initialized EAL: Probe PCI driver: net_e1000_em (8086:100f) device: 0000:02:01.0 (socket 0) EAL: Error reading from file descriptor 76: Input/output error TELEMETRY: No legacy callbacks, legacy socket not created hello from core 1 hello from core 2 hello from core 3 hello from core 4 hello from core 5 hello from core 6 hello from core 7 hello from core 8 hello from core 9 hello from core 10 hello from core 11 hello from core 12 hello from core 13 hello from core 14 hello from core 15 hello from core 0