1.测试背景
由于项目中需要用到dpdk,当时在服务器平台选型上有如下2种不同配置可供选择,为了理解老的Xeon处理器和Xeon金牌处理器对DPDK转发性能的影响,需要在两台服务器上分别进行DPDK l3fwd性能转发测试。
服务器名称
主要配置
Server01
Processor:Xeon E5-2680V4 (28 cores,2.4GHz) * 2
Memory:128GB over 8Channels @2400MHz
NICs:Intel X710-DA4
Server02
Processor:Xeon Gold 5118 (24 cores,2.3GHz) * 2
Memory:128GB over 8Channels @2400MHz
NICs:Intel X710-DA4
2.测试方法
采用如下拓扑进行测试,测试仪的4个10GE端口连接X710-DA4的4个接口,测试时测试仪的4个端口同时打流,经过服务器DPDK转发后分别从X710-DA4网卡的不同接口送出,在测试仪的4个端口查看是否有丢包。在无丢包的情况下测试仪端口打流的最大速率即为服务器端DPDK能够提供的最大转发能力,以MPPS为单位。
图片2.png
3.测试步骤
(1) 在服务器上运行dpdk
./examples/l3fwd/x86_64-native-linux-gcc/l3fwd -l 4,6,8,10 -n 4 -w 0000:04:00.0 -w 0000:04:00.1 -w 0000:04:00.2 -w 0000:04:00.3 -- -p 0xf --config="(0,0,2),(1,0,4),(2,0,6),(3,0,8)"
运行l3fwd前有一些准备工作:
配置BIOS选项
CPU Power and Performance Policy
CPU C-state Disabled
CPU P-state Disabled
Enhanced Intel® Speedstep® Tech Disabled
Turbo Boost Disabled
Intel VT Fordirected I/O(VT-d) Enable
Intel Virtualization Technology (VT-x) Enable
上述是DPDK官方的性能测试报告中建议的BIOS配置,在实际测试用我没有修改CPU C-state和P-state,并关闭了超线程的功能。
启动设置
在/etc/default/grub中GRUB_CMDLINE_LINUX项后添加
default_hugepagesz=1G hugepagesz=1G hugepages=16 intel_iommu=on
iommu=pt
重新生成grub.cfg文件(运行后重启服务器)
grub2-mkconfig -o /boot/grub2/grub.cfg
挂载hugepage
mkdir /mnt/huge
mount -t hugetlbfs nodev /mnt/huge
检查X710-DA4网卡对应的PCIe总线号
lshw -C network -businfo
Bus info Device Class Description
=========================================================
pci@0000:04:00.0 p6p1 network Ethernet Controller X710 for 10GbE SFP+
pci@0000:04:00.1 p6p2 network Ethernet Controller X710 for 10GbE SFP+
pci@0000:04:00.2 p6p3 network Ethernet Controller X710 for 10GbE SFP+
pci@0000:04:00.3 p6p4 network Ethernet Controller X710 for 10GbE SFP+
查看网卡对应的NUMA
cat /sys/bus/pci/devices/0000\:04\:00.0/numa_node
0
也可以通过cat /sys/class/net/p6p1/device/numa_node查看
用lscpu查看哪些CPU属于对应的NUMA
Architecture: x86_64
CPU op-mode(s): 32-bit, 64-bit
Byte Order: Little Endian
CPU(s): 28
On-line CPU(s) list: 0-27
Thread(s) per core: 1
Core(s) per socket: 14
Socket(s): 2
NUMA node(s): 2
Vendor ID: GenuineIntel
CPU family: 6
Model: 79
Model name: Intel(R) Xeon(R) CPU E5-2680 v4 @ 2.40GHz
Stepping: 1
CPU MHz: 1200.000
CPU max MHz: 3300.0000
CPU min MHz: 1200.0000
BogoMIPS: 4799.92
Virtualization: VT-x
L1d cache: 32K
L1i cache: 32K
L2 cache: 256K
L3 cache: 35840K
NUMA node0 CPU(s): 0,2,4,6,8,10,12,14,16,18,20,22,24,26
NUMA node1 CPU(s): 1,3,5,7,9,11,13,15,17,19,21,23,25,27
在上述操作完成后便可以知道dpdk运行时应该设置参数。
(2)测试仪打流
在l3fwd运行起来后,会添加192.18.0.0/24、192.18.1.0/24、192.18.2.0/24、192.18.3.0/24四个网段的路由,因此在测试仪端4个端口设置流的时候需要将流的目的IP地址分别设置为上述4个网段的地址,流的目的MAC地址设置为对应接口的MAC地址。
4.测试结果
图片3.png
上述的DUT2对应Server01,DUT3对应Server02,DUT1的性能数据和配置是从DPDK的性能测试报告中拿到的。DUT1、DUT2和DUT3的配置对比如下。
服务器名称
主要配置
DUT1
Processor:Xeon Platinum 8180 (56 cores,2.5GHz)
Memory:96GB over 12Channels @2666MHz
NICs:Intel X710-DA4
DUT2
Processor:Xeon E5-2680V4 (28 cores,2.4GHz) * 2
Memory:128GB over 8Channels @2400MHz
NICs:Intel X710-DA4
DUT3
Processor:Xeon Gold 5118 (24 cores,2.3GHz) * 2
Memory:128GB over 8Channels @2400MHz
NICs:Intel X710-DA4
从测试结果可以看出,DUT3上运行DPDK就能够实现64字节数据包的线速转发。对比DUT2和DUT3的转发性能可以看出,基于 Xeon Gold 5118处理器的平台相比老的Xeon处理器平台,转发性能是有一定提升的。
当然,从我个人的理解来看,现在的转发测试只是测4条路由表的情况,路由表均能够存放到处理器的一级cache中,没有大规模内存访问的压力。如果有大规模的路由表或者服务器上多个网卡同时收发数据,并且涉及到跨网卡之间的数据包转发,当前的服务器能否实现性能的线性扩展还需要后面进一步测试。