本篇文章是和同事一起为某个项目测试,验证在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
#使用Mellanox铜缆直连iperf测试(第二个口),开多个终端同时测试2口
numactl -N 8 iperf -B 2.2.2.1 -s -p 123456
#使用海信AOC线缆直连iperf测试(第一个口)
numactl -N 8 iperf -B 1.1.1.1 -s -p 12345
#使用海信AOC线缆直连iperf测试(第二个口)
numactl -N 8 iperf -B 2.2.2.1 -s -p 123456
#使用海信AOC线缆接入100G交换机iperf测试(第一个口)
numactl -N 8 iperf -B 1.1.1.1 -s -p 12345
#使用海信AOC线缆接入100G交换机iperf测试(第二个口)
numactl -N 8 iperf -B 2.2.2.1 -s -p 123456
其他说明
使用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