本篇文章是和同事一起为某个项目测试,验证在OpenPOWER9的服务器上,PCIe4.0能够全面释放双口100Gb网卡的性能。如有内容有偏差,欢迎私信。

硬件配置:

两台OpenPOWER(FP5280G2)服务器,上面有PCIe4.0的槽位。
处理器:POWER9 Sforza 16core * 2
板卡:Mellanox 100G CX516A-CDAT网卡
交换机:Mellanox MSN2700-CS2F 100G交换机
100G线缆:Mellanox 100G 铜缆
100G线缆:Hisense 100G AOC光缆

软件配置

软件部件

名称

操作系统

CentOS7 PPC64le ISO

iperf

iperf-2.0.9

网卡驱动

MLNX_OFED_LINUX-4.6-1.0.1.1-rhel7.5-ppc64le.tgz

测试结论

测试项(100Gb 以太网)

网口1速度

网口2速度

使用Mellanox铜缆直连iperf测试

89.2Gb/s

88.7Gb/s

使用海信AOC线缆直连iperf测试

89Gb/s

89Gb/s

使用海信AOC线缆接入100Gb交换机iperf测试

85Gb/s

84.2Gb/s

结论:在PCIe 4.0的槽位上,100Gb双网口单口速度不受限制,全面释放。PCIe3.0槽位上理论带宽可以查看下面的图表,受限于PCIe3.0的带宽。

不同PCIe标准下的带宽

PCI Express 版本

行代码

传输速率

×1

×4

×8

×16

1.0

8b/10b

2.5GT/s

250MB/s

1GB/s

2GB/s

4GB/s

2.0

8b/10b

5GT/s

500MB/s

2GB/s

4GB/s

8GB/s

3.0

128b/130b

8GT/s

984.6MB/s

3.938GB/s

7.877GB/s

15.754GB/s

4.0

128b/130b

16GT/s

1.969GB/s

7.877GB/s

15.754GB/s

31.508GB/s

5.0

128b/130b

32 or 25GT/s

3.9 or 3.08GB/s

15.8 or 12.3GB/s

31.5 or 24.6GB/s

63.0 or 49.2GB/s

正如上图中的测试结果,实际场景通过100Gb交换机相连,单端口85Gb/s, 双端口170Gb/s。上表中PCIe4.0,x16槽位,带宽31.5GB,即241Gb/s, 全面释放卡的性能。
而上图PCIe标准中,对于PCIe3 x16的是15.7GB/s即120Gb/s, 而实测的通过100Gb交换机的100Gb双口卡就已经达到了170Gb/s左右,PCIe3 成为瓶颈,100Gb卡无法完全发挥性能。

查看槽位是PCIe4.0的槽位

#lspci -s 0033:01:00.0 -vvv |grep LnkSt
LnkSta: Speed 16GT/s, Width x8, TrErr- Train- SlotClk+ DLActive- BWMgmt- ABWMgmt-
LnkSta2: Current De-emphasis Level: -6dB, EqualizationComplete-, EqualizationPhase1-

测试命令和结果截图

#使用Mellanox铜缆直连iperf测试(第一个口)
numactl -N 8 iperf -B 1.1.1.1 -s -p 12345

GPU卡双宽单宽类型 双槽显卡宽度_centos

#使用Mellanox铜缆直连iperf测试(第二个口),开多个终端同时测试2口
numactl -N 8 iperf -B 2.2.2.1 -s -p 123456

GPU卡双宽单宽类型 双槽显卡宽度_服务器_02

#使用海信AOC线缆直连iperf测试(第一个口)
numactl -N 8 iperf -B 1.1.1.1 -s -p 12345

GPU卡双宽单宽类型 双槽显卡宽度_cpu_03

#使用海信AOC线缆直连iperf测试(第二个口)
numactl -N 8 iperf -B 2.2.2.1 -s -p 123456

GPU卡双宽单宽类型 双槽显卡宽度_服务器_04

#使用海信AOC线缆接入100G交换机iperf测试(第一个口)
numactl -N 8 iperf -B 1.1.1.1 -s -p 12345

GPU卡双宽单宽类型 双槽显卡宽度_cpu_05

#使用海信AOC线缆接入100G交换机iperf测试(第二个口)
numactl -N 8 iperf -B 2.2.2.1 -s -p 123456

GPU卡双宽单宽类型 双槽显卡宽度_cpu_06

其他说明

使用iperf命令,而不是iperf3,iperf3不能启多个进程。对于RDMA的协议测试结果也是类似,PCIE4.0槽位上可以全面释放卡的性能。有兴趣可以自测。命令列在下方。

ib_write_bw -d mlx5_0 --report_gbits -F --run_infinitely
ib_write_bw -d mlx5_0 --report_gbits -b -F --run_infinitely 2.2.2.1

参数设置

ppc64_cpu --smt=off
systemctl disable irqbalance
selinux=disabled
systemctl disable firewalld
cpu_frequency=performance
MTU=9000
PCIE maxpayload=512