同じホストからの複数の接続が、異なるホストからの複数の接続よりも優れたスループットを達成するのはなぜですか?
カーネル関連 (Linux) であると思われますが、確認が大いに役立ちます。
詳細 受信側プロセスが 1 つあります。これを R と呼びましょう。着信接続を受け入れ、select() を使用してデータを受信します。
私は3つの送信者プロセスS1、S2、S3を持っています。それらは R に接続し、固定レート、つまりそれぞれ 200Mbit/秒でデータを送信します。
S1、S2、および S3 が同じマシン上にある場合、それぞれを別のマシンに配置するよりも良い結果が得られます。(Rはどちらの場合も他のマシンにあります)
例: host0 の R、host2 の S1、S2、S3、R は 600Mbit/s で受信
host0 の R、host1 の S1、host2 の S2、host3 の S3、R は 480Mbit/s で受信
2 番目のケースでは、送信者がネットワーク カードとプロセッサを共有する必要がないため、これは直感に反するように見えます (プロセッサまたはネットワーク カードがボトルネックになるとは考えていません...)。
[上記のホストは、専用の全二重ギガビット スイッチを備えた Linux クラスタ内のノードです。彼らは2.6.24-24-genericを実行しています(最新のUbuntuだと思います)]