运行DPDK
配置大页内存
使用大页可以提升DPDK转发性能。最大支持1G大页,但是4.14内核不支持1G大页,若需要使用1G大页则需要升级内核。
内核为4.14时默认支持2M和512M大页。本文以内核配置512M大页为例,2M大页的配置方法类似,本文不再赘述。
- 查看当前环境支持的NUMA Node个数,根据NUMA Node数为每个Node预留大页内存。
1
numactl -H
- 查看系统支持的大页类型。
1
ll /sys/kernel/mm/hugepages/
若回显信息中显示有hugepages-524288kB字样则表示支持512M大页。
若回显信息中显示有hugepages-1048576kB字样则表示支持1G大页。
可以根据实际情况进行选择使用,默认优先选择最大的大页类型。
- 预留大页内存。
- 配置512M大页。
- 配置大页个数。
1 2 3 4
echo 50 > /sys/devices/system/node/node0/hugepages/hugepages-524288kB/nr_hugepages echo 50 > /sys/devices/system/node/node1/hugepages/hugepages-524288kB/nr_hugepages echo 50 > /sys/devices/system/node/node2/hugepages/hugepages-524288kB/nr_hugepages echo 50 > /sys/devices/system/node/node3/hugepages/hugepages-524288kB/nr_hugepages
- 挂载大页。
1 2
mkdir -p /mnt/huge_512mb mount -t hugetlbfs none /mnt/huge_512mb -o pagesize=512MB
- 配置大页个数。
- (可选,需系统支持)配置1G大页。
- 打开“/etc/default/grub”文件。
1
vi /etc/default/grub
- 修改系统启动项,预留大页 ,预留16个1G大页,总共16G。在GRUB_CMDLINE_LINUX行最后加上:
default_hugepagesz=1G hugepagesz=1G hugepages=16
- 生成系统grub并重启系统使配置生效。
1
grub2-mkconfig -o /boot/efi/EFI/openeuler/grub.cfg
- 确认是否配置成功。
1
cat /proc/meminfo | grep -i huge
若回显信息中显示已配置的大页数量为16,则预留大页配置成功。
- 挂载大页。
1 2
mkdir -p /mnt/huge_1gb mount -t hugetlbfs none /mnt/huge_1gb -o pagesize=1GB
- 打开“/etc/default/grub”文件。
- 配置512M大页。
接管内核态网口
- 加载内核驱动模块(使用vfio需要BIOS开启SMMU)。
1 2
modprobe vfio modprobe vfio-pci
- 绑定被测网口用户态,用于DPDK转发。首先获取网口PCI地址,可以使用DPDK源码“usertools/dpdk-devbind.py”脚本进行查看,以及进行接口绑定工作。
- 查看待绑定接口信息。
1
dpdk-devbind.py -s
- 查看端口状态,接管链路状态up的端口。
1
ethtool enp125s0f1
- 绑定用于DPDK转发的网口,此处以绑定0000:7d:00.1网口为例,使用时以查询到的待绑定的网口为准。
1
dpdk-devbind.py --bind=vfio-pci 0000:7d:00.1
查看端口是否成功绑定:
1
dpdk-devbind.py -s
端口处于up状态时进行绑定会报错,此时应执行ifconfig xxx down命令,再进行绑定。
- 查看待绑定接口信息。
运行DPDK
完成上述配置,即可开始运行DPDK相关测试程序。本文以编译DPDK生成的标准测试程序testpmd为例,根据环境实际信息运行以下命令。
1 | testpmd -c 0xf -n 4 -w $PCI -- --rxd=$depth --txd=$depth --rxq=$qnum --txq=$qnum --nb-cores=$cores -i |

testpmd为DPDK 19.11版本中的测试命令,DPDK 21.11.5版本中testpmd命令为dpdk-testpmd。
参数 |
说明 |
---|---|
-c |
指定参与转发的CPU核,后跟参加转发核的掩码。 |
-n |
指定内存通道个数。 |
-w |
指定参与转发的网口PCI,即安装DPDK 19.11章节中绑定的网口PCI地址。 |
--rxd/--txd |
指定参与转发的网口队列深度。 |
--rxq/--txq |
指定参与转发的网口队列个数。 |
--nb-cores |
指定实际参与转发的CPU核数。 |
-i |
以交互模式启动程序。 |
父主题: 物理机下安装运行DPDK