参考资料
https://doc.dpdk.org/
https://core.dpdk.org/doc/quick-start/
创建桥接口
设置grub
1 2 3 4 5 6 7 8 9 10 11 12 13 打开grub,添加 GRUB_CMDLINE_LINUX 参数sudo vim /etc/default/grub 大页内存每页大小为2M,一共设置1024页面,即2GB, 如果内存多的,CPU又支持1GB的大页内存,可以每页设置1GB的大页内存 GRUB_CMDLINE_LINUX="iommu=pt intel_iommu=on" 重新生成grub.cfgsudo grub-mkconfig -o /boot/grub/grub.cfg reboot
编译dpdk https://doc.dpdk.org/guides-22.11/linux_gsg/build_dpdk.html
1 2 3 4 5 6 7 pacman -S meson python-pyelftools pacman -S pkg-config meson build cd build ninja ninja install ldconfig
大页配置 1 2 3 4 5 6 7 8 9 grub配置了也可不再配置 查看虚拟机大叶内存cat /proc/meminfo | grep Huge 设置内存大小echo 256 > /sys/devices/system/node/node0/hugepages/hugepages-2048kB/nr_hugepages mkdir -p /dev/hugepages mountpoint -q /dev/hugepages || mount -t hugetlbfs nodev /dev/hugepages ./usertools/dpdk-hugepages.py --show
加载驱动 1 2 3 modprobe vfio-pci modprobe uio_pci_generic modprobe uio
使能网卡UIO 1 2 3 4 5 6 ./usertools/dpdk-devbind.py --status ifconfig enp7s0 down ifconfig enp8s0 down./usertools/dpdk-devbind.py --bind=uio_pci_generic enp7s0./usertools/dpdk-devbind.py --bind=uio_pci_generic enp8s0./usertools/dpdk-devbind.py --status
测试用例
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 ./build/app/dpdk-testpmd -l 0 -1 -n2 -- -i --total-num-mbufs 2048 testpmd> show port stats all ######################## NIC statistics for port 0 ######################## RX-packets: 244 RX-missed: 0 RX-bytes: 18096 RX-errors: 0 RX-nombuf: 0 TX-packets: 0 TX-errors: 0 TX-bytes: 0 Throughput (since last show) Rx-pps: 0 Rx-bps: 0 Tx-pps: 0 Tx-bps: 0 ############################################################################ ######################## NIC statistics for port 1 ######################## RX-packets: 0 RX-missed: 0 RX-bytes: 0 RX-errors: 0 RX-nombuf: 0 TX-packets: 0 TX-errors: 0 TX-bytes: 0 Throughput (since last show) Rx-pps: 0 Rx-bps: 0 Tx-pps: 0 Tx-bps: 0 ############################################################################ testpmd> show config fwd testpmd> start testpmd> show port stats all testpmd> stop testpmd> show port stats all
编译示例 1 2 3 4 5 6 7 8 9 10 11 cd example/helloworld/ sudo find / -name "libdpdk.pc" export PKG_CONFIG_PATH ="/usr/local/lib/pkgconfig/" pkg-config --cflags libdpdk -I/usr/local/include -include rte_config.h -march=native make sudo su export LD_LIBRARY_PATH =$LD_LIBRARY_PATH :/usr/local/lib export PKG_CONFIG_PATH =$PKG_CONFIG_PATH :/usr/local/lib/pkgconfig ./build/helloworld -l 0 -1 -n 2
./build/examples/dpdk-ethtool
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 Cause: rte_pktmbuf_pool_create failed 出现以上错误错误可以通过修改hugepages配置修复 echo 256 > /sys/ devices/system/ node/node0/ hugepages/hugepages-2048kB/ nr_hugepages1 . 8 G: setenv othbootargs default_hugepagesz=1024 m hugepagesz=1024 m hugepages=8 cat /sys/ devices/system/ node/node0/ hugepages/hugepages-*/ nr_hugepages 2 . 1 G(size =2 m): setenv othbootargs default_hugepagesz=2 m hugepagesz=2 m hugepages=512 cat /sys/ devices/system/ node/node0/ hugepages/hugepages-*/ nr_hugepages 3 . 1 G(size =4 m) setenv othbootargs default_hugepagesz=4 m hugepagesz=4 m hugepages=256 cat /sys/ devices/system/ node/node0/ hugepages/hugepages-*/ nr_hugepages 4 . 8 M(size =1024 k) setenv othbootargs default_hugepagesz=1024 k hugepagesz=1024 k hugepages=8 cat /sys/ devices/system/ node/node0/ hugepages/hugepages-*/ nr_hugepages
pacman -S numactl
dpdk性能测试
https://blog.csdn.net/omaidb/article/details/121589271
dpdk-pktgen 安装和基本使用
https://blog.csdn.net/choumin/article/details/120884509
DPDK系列之十:QEMU-KVM不同网络前端和后端网络性能对比测试
https://www.freesion.com/article/3818253535/