4

ウィキペディアの splice の紹介で、次のことがわかりました。

ソケットで splice() を使用する場合、ネットワーク コントローラ (NIC) は DMA をサポートする必要があります。

NIC が DMA をサポートしていない場合、splice() はパフォーマンスの向上を提供しません。この理由は、パイプの各ページがフレーム サイズ (ページごとに使用可能な 4096 バイトのうちの 1460 バイト) までいっぱいになるためです。

私が理解していることから、スプライスは次の理由でパフォーマンスを向上させます。

  • コンテキストの切り替えが少ない
  • コピーの数を最小限に抑えます (最小 2 つの DMA コピー)。

NIC が DMA コピーをサポートしていない場合は、CPU コピーを使用します。これは、ユーザー空間に移動する必要がある通常のコピーよりも優れています。

そのため、ウィキペディアが NIC で DMA をサポートしないとパフォーマンスが向上しないと言っている理由がわかりません。

4

1 に答える 1

0

ウィキペディアが間違っているのではないでしょうか?その記事はすでに引用が少ないというフラグが付けられています...

于 2011-12-11T08:44:01.750 に答える