![MTU 5000 之后吞吐量下降](https://linux22.com/image/1395933/MTU%205000%20%E4%B9%8B%E5%90%8E%E5%90%9E%E5%90%90%E9%87%8F%E4%B8%8B%E9%99%8D.png)
我正在尝试测试两台通过 1 GbE 直接连接的计算机之间的吞吐量,并使用 iperf 进行测试。当 MTU 介于 5000 和 5050 之间时,我的吞吐量约为 980Mbps,但是当 MTU 大于 5050 时,吞吐量会急剧下降到 680Mbps 左右。我检查了不同的窗口大小,但结果相同。增加 MTU 应该会减少开销,从而应该会增加带宽,或者至少不会下降。我无法弄清楚这种奇怪的行为。顺便说一下,测试 TCP 吞吐量。任何帮助!谢谢大家。这是我在任何论坛上发布的帖子 :) 通常我都能找到答案....
附加信息!两个 centos 系统,其中一个是 Xen 4.2 主机(但问题不应该出在这里)检查了 /pro/sys/net/ipv4 中不同大小的缓冲区,但没有得到相同的结果。延迟为 0.2 毫秒。
答案1
这几乎肯定是某个特定实现的性能瓶颈。你说得对在其他条件相同的情况下拥有更大的 MTU 可以降低开销,从而提高性能。但其他事情很少是相同的……在这里,转发/数据包移动代码的某些部分可能具有 5KB 或类似的基本缓冲区大小,因此当您跨越该障碍时,您会突然要求系统完成两倍的工作。
支持这一理论的一种方法是进一步增加 MTU。如果您看到 5KB 时出现大幅下降,但一旦超过该值,吞吐量就会提高,则几乎可以肯定您在代码路径的某个地方达到了某个缓冲区大小阈值。