3

そのような質問に対する答えを自分で見つけることはできません:

マルチコアマシンで一般的にソケットに利点/ブーストはありますか? つまり、イーサネット カード ドライバーまたは smth からカーネルに着信するパケット キューへの何らかの共有アクセスがある可能性があります。

API呼び出しになると、1つのソケットインスタンスで複数のスレッドが動作する可能性があることを理解していますが、読み取り/書き込み/閉じる/選択などの呼び出しと同期して正しく再生するのはプログラマー次第です。そのレベルで私は見るディスパッチされたパケットと後処理などを操作する場合にのみ利点があります...または、システムコール中にパケットがコピーされ、ユーザー空間に転送されるまで速度が向上しませんか?

4

2 に答える 2

3

マルチコアの利点は、アルゴリズムで同時実行をどのように実現できるかによって異なります。イーサネット受信を例にとると、それに関連する 4 つのタスクがあります。

  1. パケットを受信すると、NIC ハードウェアは割り込みをトリガーし、CPU は割り込みコンテキストで割り込みを処理します。
  2. ネットワーク スタックは、ソフトウェアの irq メカニズムで RX パケットを処理します。ソフトウェアの irq 要求は、複数の CPU で同時に実行できます。ネットワーク スタック RX 関数では、ネットワーク バッファをソケットに渡し、ソケットで保留中のユーザー スレッドを起こします。
  3. ユーザー スレッドがウェイクアップし、ユーザー アプリケーション コードを続行して、受信したネットワーク パケットを受信または処理します。

1) 1 つの CPU でのみ実行可能、2) 複数の CPU で実行可能、3) マルチプロセスまたはマルチスレッド アプリケーション用に複数の CPU でも実行可能。

于 2012-10-23T08:58:01.943 に答える