DPDK性能未达到最佳问题总结
发表于 2025/09/30
0
作者 | 朱勇
某客户在使用鲲鹏服务器进行业务适配并进行性能测试,鲲鹏服务器单百G网卡流量性能未达到最优值,需要分析根因并进行优化。
1 测试环境
硬件环境信息
硬件 |
鲲鹏服务器配置信息 |
服务器 |
鲲鹏服务器 |
CPU |
鲲鹏920 5250处理器 @2.60GHz |
内存 |
512GB: 16 * 32GB DIMMs @ 2933MHz |
网卡 |
One MT42822 BlueField-2 integrated ConnectX-6 Dx network controller@X16; 100GbE; Dual-port; PCIe x16; riser x16 |
操作系统和软件信息
软件名称 |
版本 |
操作系统 |
CentOS Linux release 8.5.2111 |
内核版本 |
4.18.0-348.el8.aarch64 |
GCC版本 |
8.5.0 20210514 (Red Hat 8.5.0-3) |
Mellanox OFED驱动版本 |
MLNX_OFED_SRC-23.10-1.1.9.0 |
DPDK版本 |
22.11.3 |
2 问题复现
由于时间紧迫且客户没有实际业务环境进行问题分析,考虑到客户在DPDK的testpmd中测试中出现过这类问题,所以决定搭建一套DPDK的环境来进行仿真测试和问题分析。搭建好环境后测试的结果如下图所示。
测试时业务流量为100G左右,但DPDK接收到的流量只有70G左右。
3 根因分析
1)在软硬件配置方面排查发现网卡用的是CX6百G网卡,该网卡使用的PCIe插槽是x8插槽,对传输速率可能有影响。
2)网卡的MTU值默认为1500,业务流量中超过1500包长的网络包无法被网卡接收,这是造成业务流量与DPDK接收流量不一致的主要原因。
4 解决方法
1)将CX6百G网卡的PCIe插槽替换成x16插槽。查看网卡插槽型号的命令如下所示。
lspci -vvvs 01:00.1
2)将网卡的MTU设置到最大值9000,设置MTU的命令如下所示。
ifconfig eth0 mtu 9000
查看网卡MTU,命令如下所示。
ip a
5 测试效果
通过上述调优此时DPDK接收流量为97G左右,与业务流量基本一致。测试结果如下图所示。