为什么来自同一主机的多个连接比来自不同主机的多个连接获得更好的吞吐量?
我怀疑是与内核相关的东西(Linux),但确认会有很大帮助。
更多细节我有 1 个接收器进程,我们称之为 R。它接受传入连接并使用 select() 接收数据。
我有 3 个发件人进程 S1、S2、S3。它们连接到 R 并以固定速率发送数据,即每个每秒 200Mbit。
如果 S1、S2 和 S3 在同一台机器上,我会比将它们中的每一个放在不同的机器上得到更好的结果。(R 在这两种情况下都在其他机器上)
示例:主机 0 上的 R,主机 2 上的 S1、S2、S3,R 以 600Mbit/s 的速度接收
R 在 host0 上,S1 在 host1 上,S2 在 host2 上,S3 在 host3 上,R 以 480Mbit/s 接收
这对我来说看起来违反直觉,我期望相反,因为在第二种情况下,发件人不必共享网卡和处理器(不希望处理器或网卡成为瓶颈......)
[以上主机是具有专用全双工千兆交换机的 linux 集群中的节点。他们正在运行 2.6.24-24-generic(我猜是最新的 Ubuntu)]