带有 Netem(延迟仿真)的 IPoIB 性能不佳

网络工程 吞吐量 iperf 交通 美乐诺
2021-08-01 09:24:26

我必须模拟广域网。我的设置包含两台带有 MT27500 系列 [ConnectX-3] Infiniband 卡的服务器。两个节点之间的默认延迟约为 0.4 毫秒,iperf 测试显示每个 iperf 连接的吞吐量为 4Gbps。通过使用 15 个并行 iperf 连接,我能够获得最大 33Gbps 的速度。为了在两个节点之间模拟 50 毫秒的 RRT,我使用了以下命令。

sudo tc qdisc add dev ib0 root netem delay 25ms

然而,每个流的 iperf 吞吐量下降到 154Mbps。我有另一个相同的设置,它有以太网适配器而不是 Infiniband。在该设置中,iperf 显示每个 iperf 连接大约 480Mbps,这是我从 IPoIB 获得的数据的 3 倍。IPoIB 在大延迟下的性能比以太网差,这是预期的行为吗?如果是这样,这种行为背后的原因是什么?

1个回答

使用 netem 模拟网络延迟时最常见的错误是不增加数据包限制。你没有。因此,您会丢弃大量数据包,并且 tcp 无法构建足够长的队列来模拟路径。

尝试限制 1000000 或更多。监控您的 netem 统计信息,看看您是否丢弃了任何数据包。

Plug:我们经常使用(bufferbloat 项目)flent.org 的测试工具。它包装了 netperf 和 irtt,使可重现的测试更容易。