最近、マルチキャスト送信パフォーマンスの分析を完了しました。幸いなことに、JavaとCは、WindowsとSolaris上で異なるトラフィック送信速度をテストしたときとほぼ同じように実行されました。マルチキャスト送信パフォーマンス
しかし、マルチキャストメッセージを送信する時間は、送信間隔が長くなるにつれて増加することに気付きました。送信を頻繁に行うほど、送信コールを完了するのに要する時間が短くなります。
このアプリケーションを使用すると、sendを送信するまでに待機する時間を制御できます。下回ると、パケットの遅延が増えるにつれて時間が増えます。 1000パケット/秒(1ミリ秒の待機時間)を送信する場合、送信に13マイクロ秒かかります。 1パケット/秒(1000ミリ秒の待ち時間)で、その時間は20マイクロ秒に増加する。
Wait time (ms) us to send
0 8.67
1 12.97
10 13.06
100 18.03
1000 20.82
10000 57.20
この現象は、JavaとCの両方から、またWindowsとSolarisの両方から発生します。私たちは、Dell 1950サーバーとIntel Pro 1000デュアルポートネットワークカードを使ってテストを行っています。マイクロベンチマーキングは、特にJavaでは困難ですが、これはJITingやGCに関連するとは考えていません。 http://www.moneyandsoftware.com/2009/09/18/multicast-send-performance/
この理論を検証するために、OPはユニキャストでテストし、同様のプロファイルが分析に現れることを確認する必要があります。 – Stef
でも、理論的には - 私が扱ったほとんどのスイッチ/ルータは、ユニキャストとマルチキャストのために別々のテーブルとキャッシュを維持しています。どちらも同じタイムアウトを持つ可能性がありますが、IIRCの設定も可能です。 –
ルーティングテーブルのタイムアウトはタイムアウト時間内のすべてが同じ速度になりますが、すべてが遅くなります。しかし、パケット間の時間が長くなるにつれて徐々に劣化していくのがわかります。 –