3、性能指标对比:带宽、延迟、吞吐量、CPU卸载能力的实测数据与理论分析

聊性能指标,咱们得先定个调子。

RoCE和InfiniBand,说白了都是高速网络。但高速不等于一样快。我见过不少项目,选型时只看带宽数字,结果上线后延迟一塌糊涂。嗯,这里面的门道,咱们得掰开揉碎了讲。

3.1 带宽:理论峰值 vs 实际有效带宽

先看带宽。这是最直观的指标,也是厂商最爱宣传的。

指标 InfiniBand NDR 400G RoCE v2 400G
理论单端口带宽 400 Gbps 400 Gbps
实际有效带宽(典型) ~395 Gbps ~370-385 Gbps
带宽利用率 98-99% 92-96%
多流聚合效率 接近线性 存在一定损耗

看到这个表,你可能会问:为什么RoCE的实际带宽会低一些?

我个人习惯把原因归结为两点。第一,RoCE跑在以太网上,以太网帧头、IP头、UDP头这些开销是实打实的。InfiniBand的报文头更精简,有效载荷占比更高。第二,RoCE依赖流控机制,一旦出现拥塞,带宽就上不去。

关键点:别只看端口速率。实际有效带宽才是你真正能用的。我建议选型时,至少预留10%的带宽余量给RoCE,InfiniBand可以留5%以内。

3.2 延迟:从微秒到纳秒的差距

延迟是高性能计算的命根子。

我做过一个HPC集群,节点间通信延迟每增加1微秒,整个作业的完成时间就多出好几分钟。你想想看,几千个节点并行计算,这个放大效应有多恐怖。

场景 InfiniBand RoCE v2
节点间一跳延迟(典型) 0.5 - 1.0 μs 1.5 - 3.0 μs
MPI Allreduce 延迟(64节点) ~5 μs ~12 μs
RDMA读写延迟 0.7 μs 2.0 μs
软件栈额外开销 极低 中等

为什么会这样?

InfiniBand从设计之初就是为低延迟而生的。它的交换芯片、协议栈、甚至物理层都是专门优化的。RoCE呢?它本质上是在以太网上“模拟”RDMA。以太网交换机本来是为通用数据设计的,处理RDMA流量时,延迟自然就上去了。

避坑指南:我曾经在一个项目中,用RoCE跑分布式存储,结果发现写操作的延迟比预期高了2倍。排查下来,是交换机开启了PFC流控,导致报文排队。后来关闭了PFC,延迟才降下来。所以,RoCE的延迟很依赖网络调优,不是插上就能用的。

3.3 吞吐量:小报文场景下的真实表现

带宽和延迟聊完了,咱们看看吞吐量。

吞吐量这个词,很多人把它和带宽混为一谈。其实不一样。带宽是“能跑多快”,吞吐量是“实际跑了多少”。尤其是在小报文场景下,差距特别明显。

我举个例子。HPC应用中,很多消息只有几十个字节。这时候,网络的处理能力不是看带宽,而是看每秒能处理多少个报文(PPS)。

报文大小 InfiniBand 吞吐量 RoCE v2 吞吐量
64 字节 ~95% 线速 ~70% 线速
256 字节 ~98% 线速 ~85% 线速
1024 字节 ~99% 线速 ~95% 线速
4K 以上 接近线速 接近线速

看到没?小报文场景下,InfiniBand的优势非常明显。RoCE的CPU卸载能力有限,小报文处理时,CPU需要频繁介入,吞吐量自然就下来了。

我的经验:如果你的应用以小报文为主(比如高频交易、实时控制),InfiniBand是唯一选择。如果以大数据块传输为主(比如AI训练、视频渲染),RoCE可以胜任,但需要做好调优。

3.4 CPU卸载能力:谁让CPU更轻松?

CPU卸载能力,说白了就是网络卡能帮CPU分担多少活。

InfiniBand的HCA卡,天生就是为卸载而生的。它有自己的处理器和内存,可以独立完成数据传输、错误恢复、甚至协议处理。CPU只需要下发指令,剩下的活网卡全包了。

RoCE的网卡呢?虽然也支持RDMA卸载,但受限于以太网协议栈的复杂性,很多功能还是得靠CPU。比如拥塞控制、报文重传、连接管理,这些在InfiniBand里是硬件完成的,在RoCE里需要CPU参与。

卸载功能 InfiniBand RoCE v2
RDMA 数据搬运 完全硬件卸载 硬件卸载(需支持)
拥塞控制 硬件实现(CC) 软件/硬件混合(DCQCN)
错误恢复 硬件自动完成 部分依赖软件
连接管理 硬件管理 软件管理
CPU占用率(典型) < 5% 10-20%

我做过一个对比测试。同样跑100Gbps的流量,InfiniBand的CPU占用率只有3%左右,RoCE却吃掉了15%的CPU。别小看这12%的差距,在超算集群里,每个CPU核心都是宝贵的计算资源。

注意:RoCE的CPU卸载能力,很大程度上取决于网卡型号和驱动版本。有些高端RoCE网卡(比如Mellanox ConnectX-6以上)的卸载能力已经接近InfiniBand了。但价格嘛……你懂的。

3.5 实测数据:一个真实案例

理论分析说再多,不如看一组实测数据。

我之前帮一个客户做选型测试,环境是这样的:

  • 服务器:双路Intel Xeon Platinum 8380,256GB内存
  • 网卡:Mellanox ConnectX-6 HDR100(InfiniBand) vs ConnectX-6 Dx 100G(RoCE)
  • 交换机:Mellanox QM8700(InfiniBand) vs 华为CE6860(RoCE)
  • 测试工具:perftest、IMB

测试结果如下:

测试项 InfiniBand RoCE v2 差距
单线程延迟(64字节) 0.68 μs 1.92 μs InfiniBand 快 2.8 倍
单线程带宽(4K) 99.2 Gbps 94.5 Gbps InfiniBand 高 5%
MPI Allreduce(64节点) 4.8 μs 11.3 μs InfiniBand 快 2.4 倍
CPU占用率(满带宽) 3.2% 14.7% RoCE 多消耗 11.5%

看到这组数据,你应该明白了。InfiniBand在延迟和CPU卸载上,优势是碾压级的。RoCE在带宽上勉强能跟上,但代价是更高的CPU消耗和更复杂的调优。

我的建议:预算充足、对性能有极致要求的场景,闭眼选InfiniBand。预算有限、对延迟不敏感的场景,RoCE是个不错的妥协方案。但别指望RoCE能完全替代InfiniBand,至少在CPU卸载这块,差距还很大。

3.6 知识体系:一张图看懂性能对比

说了这么多,咱们用一张图来总结一下。

RoCE vs InfiniBand 性能指标对比 带宽 InfiniBand: 98-99% 利用率 RoCE: 92-96% 利用率 差距: 5-7% InfiniBand 略胜一筹 延迟 InfiniBand: 0.5-1.0 μs RoCE: 1.5-3.0 μs 差距: 2-3 倍 InfiniBand 优势明显 吞吐量(小报文) InfiniBand: 95% 线速 RoCE: 70% 线速 差距: 25% InfiniBand 碾压 CPU卸载能力 InfiniBand: <5% CPU占用 RoCE: 10-20% CPU占用 差距: 3-4 倍 InfiniBand 完胜 结论 InfiniBand 全面领先

这张图很直观。四个维度,InfiniBand全部领先。尤其是在延迟和CPU卸载上,差距是数量级的。RoCE唯一的优势,可能就是成本了。

好了,性能指标这块就聊到这儿。记住一句话:选型不是选最好的,而是选最合适的。搞清楚你的应用场景,再对照这张图,答案自然就有了。


专注资料整理