小编rns*_*rns的帖子

启用TCP_NODELAY的Linux环回性能

我最近在运行一些比较网络性能和环回性能的性能测试时偶然发现了一个有趣的TCP性能问题.就我而言,网络性能超过了环回性能(1Gig网络,同一子网).在我处理延迟的情况下是至关重要的,因此启用了TCP_NODELAY.我们提出的最好的理论是TCP拥塞控制正在阻止数据包.我们做了一些数据包分析,我们可以肯定地看到数据包被保留,但原因并不明显.现在问题......

1)在什么情况下,为什么,通过环回进行通信比通过网络慢?

2)当尽可能快地发送时,为什么切换TCP_NODELAY对环回的最大吞吐量的影响要大于对网络的影响?

3)我们如何检测和分析TCP拥塞控制作为性能不佳的潜在解释?

4)有没有人对这种现象的原因有任何其他理论?如果是的话,任何证明该理论的方法?

以下是一个简单的点对点c ++应用程序生成的一些示例数据:

Transport     Message Size (bytes)  TCP NoDelay   Send Buffer (bytes)   Sender Host   Receiver Host   Throughput (bytes/sec)  Message Rate (msgs/sec)
TCP           128                   On            16777216              HostA         HostB           118085994                922546
TCP           128                   Off           16777216              HostA         HostB           118072006                922437
TCP           128                   On                4096              HostA         HostB            11097417                 86698
TCP           128                   Off               4096              HostA         HostB            62441935                487827
TCP           128                   On            16777216              HostA         HostA            20606417                160987
TCP           128                   Off           16777216              HostA         HostA           239580949               1871726
TCP           128                   On                4096              HostA         HostA            18053364 …

linux networking tcp loopback

15
推荐指数
2
解决办法
2万
查看次数

标签 统计

linux ×1

loopback ×1

networking ×1

tcp ×1