0

2 台の Windows XP SP3 マシンを使用して、3k ZMQ メッセージを一方から他方に送信しようとしています。これらは両方とも、サーバー グレードのインテル ギガビット イーサネット カードを備えたかなり最新のシステム (5100 チップセットを搭載したデュアル クアッド コア Xeon および 5500 チップセットを搭載したデュアル ヘックス コア Xeon) です。

2 台のマシンは、間にスイッチやルーターを介さずにポイント ツー ポイントで接続されます。

パフォーマンス比較のために pcttcp を使用すると、あるマシンから別のマシンに TCP 経由で 70MB/s (使用率 56%) で送信できます。ZMQ PUSH/PULL を使用すると、2 つの間で最大 28MB/秒しか取得できません。

送信側と受信側を同じマシン (2 台のうち低速のマシン) で使用すると、97MB/秒の速度を達成できます。(デュアルヘキサコアで 220MB/s)

PUSH/PULL チャネルには、両端に HWM が設定されています。HWM サイズが 1024 のような大きな値よりも低く設定されている場合 (~150 メッセージ)、わずかにパフォーマンスが向上します。

6000 バイトのジャンボ フレームを試してみましたが、さらに悪化しました。(pcttcp は 72MB/s でわずかに優れたパフォーマンスを発揮)

TcpWindowSize をより大きな値に設定してみましたが、同様に悪化しているように見えました。ZMQ は小さいサイズを好み、pcttcp は変更されませんでした。TcpWindowSize が 32K に設定されるようになりました

その他のパラメータ:

  • TcpAckFrequency = 1 // これがないと機能しません。
  • Tcp1323Opts = 1
  • Receive Side Scaling が有効

ボトルネックを見つけるにはどうすればよいですか?TCP と ZMQ のパフォーマンスで達成できることは何ですか? ZeroMQ Web サイトのパフォーマンス セクションでは、スループットが TCP (95%+) に近づくテストについて詳しく説明しています。

パフォーマンスのヒント/知恵(Linuxの使用を除いて、;-))は大歓迎です。

ありがとう!!!

別の手がかり: 2​​ つのシステム (同じ方向、異なるポート) 間で複数の送信者/受信者のペアをセットアップすると、より高い集約率を達成できます。(3 つの合計で ~42MB/秒)

4

1 に答える 1

1

簡単なグーグルがこれを引っ張ったhttp://comments.gmane.org/gmane.network.zeromq.devel/10089

そのスレッドのナゲットは TcpDelAckTicks です: [引用]

サーバー コードで "apr_socket_accept()" 呼び出しを実行するマシンに TcpDelAckTicks レジストリ値を設定した後、パフォーマンスが大幅に向上しました (2.4 秒から 0.4 秒)。クライアントはリクエストを送信し、ループでレスポンスを待ちます。性能に変化はありませんでした。

ここにたどり着いたのは、MTU にまつわる何かを探していて、ネットワーク関連かもしれないと思っていたからです。

そして、このhttp://lists.zeromq.org/pipermail/zeromq-dev/2010-November/007814.htmlを見つけました。これには、多くのパフォーマンス チューニングの推奨事項 (具体的には xp ではありません) が含まれています。ここでは要約しません。 、ほとんど直接のコピーと貼り付けになるため(もっと簡潔にできるかどうかわかりません。)

これが役立つかどうかはわかりませんが、それらを見つけていない可能性があります。

于 2012-04-18T07:10:28.727 に答える