2

アプリケーションに最適なポート/ソケット/スレッドの比率を見つけて証明するにはどうすればよいですか?

現時点では、次のようなことを検討しています。

各スレッドは単一ポートのすべてのトラフィックを処理し、各クライアントは独自のソケットを取得し、ソケットは使用可能なポート間で分割され、したがってスレッドが分割されます。このソリューションは、CPU コアごとに約 1 つのスレッドを作成する必要があり、ソケットを開くのはかなり安価であるという前提に基づいています。これは良い解決策ですか? さらに重要なことに、これまたは他の解決策が良い解決策であることを数学的に証明するにはどうすればよいですか?

すべてのソリューションのサンプル プログラムを作成し、結果をテストできることはわかっていますが、特にサーバー ハードウェアと構成を反映していないマシンでテストが行​​われる場合は、経験的な証明よりも数学的な証明を優先します。

ポートとソケットの経験があまりなく、質問に答える情報を見つけるのに苦労しています。これまでに見つけた最高のリソースは、次の Stack Overflow の質問です。

私が何かを見落としていたり​​、ポート、ソケット、スレッドの使用方法や使用方法を誤解している場合は、単純な「rtfm:[link]」の回答で十分満足し、正しい方向に向けることができます。しかし、あなたが寛大な気持ちで、私に良い説明を提供してくれるなら、私はとても助かります.

4

1 に答える 1

1

ノンブロッキング NIO を使用する場合、最適なパフォーマンスは 1 スレッド/コアです。この理由は非常に単純です。

  • ノンブロッキング IO では、利用可能な作業があるときはいつでも、1 つの利用可能なスレッドによって全速力で実行されます (ブロッキングなし)。

  • 100% の CPU 使用率を超えることはできません。

于 2013-10-22T20:49:31.083 に答える