1

UDP マルチキャストでバイナリ メッセージをプッシュするためのテスト ハーネスを構築しています。

プロトタイプは Twisted リアクター ループを使用してメッセージをプッシュします。これは、必要なトラフィック レベル (毎秒約 120000 メッセージ) を達成しています。

テスト マシンには 16 個のコアがあり、これらのコアにこれを分散させて、実際にハーネスを飛ばしたいと考えています。

この出力を上げるためにアプリケーションをどのように設計するか (イベント ループ アプローチまたは CSP スタイル アプローチのいずれかを使用) についてアイデアを持っている人はいますか?

また、プロトタイプのほとんどの時間は UDP への書き込みに費やされています。

どんなアイデアでも大歓迎です。

4

2 に答える 2

1

複数のNIC、ハードウェアまたはカーネルインターフェイスが制限です。Broadcom Corporation NetXtremeBCM5704Sギガビットイーサネットアダプタを使用した場合、1秒あたり69,000パケットにしか到達できません。同じサブネット上に4つすべてのNICがあるクアッドIntelギガビットサーバーアダプターを試してください。

于 2010-07-28T06:49:58.863 に答える
1

Pythonアプリケーションで複数のコアを利用するという問題が発生した場合の明白な答えは、複数のプロセスを使用することです。Twistedを使用reactor.spawnProcessすると、子プロセスを起動するために使用できます。また、アプリケーションの16個のインスタンスを別の方法(シェルスクリプトなど)で起動することもできます。もちろん、これには、アプリケーションが複数のインスタンスを同時に実行して適切に動作できることが必要です。各プロセスがその一部を引き受けることができるように、正確にどのように作業を分割するかは、作業の性質によって異なります。

ただし、16コアすべてがフルチルトで実行されるずっと前に、単一のGigEリンクが飽和状態になると予想されます。システムのボトルネックに焦点を合わせていることを確認してください。Steve-oが言ったように、マシンにも複数のNICが必要な場合があります。

于 2010-07-28T11:56:14.433 に答える