たとえば、ethtool -g eth0
私のシステムでは、次の出力が得られます。
Ring parameters for eth0:
Pre-set maximums:
RX: 4096
RX Mini: 0
RX Jumbo: 0
TX: 4096
Current hardware settings:
RX: 4096
RX Mini: 0
RX Jumbo: 0
TX: 4096
4096は1フレームに割り当てられたバイト単位のバッファーサイズですか?そのようなバッファーの数は複数ですか、それともバッファーの数ですか?
Tx/Rxバッファーは、トラフィックバーストを処理するためにネットワークアダプターによって割り当てられるメモリ空間です。トラフィックがネットワークアダプターの物理容量を超えると、バッファリングが行われます。バッファサイズを増やすと、アダプタが過負荷になったときのパケット損失を回避できます。
この記事は、リングバッファーの機能を説明するのに役立ちます。 (ドライバーキュー)が機能し、その目的/機能を理解するのに役立ちます。記事のタイトルは Linuxネットワークスタックでのキューイング です。
このセクションは興味深いものです。
ドライバーキュー(別名リングバッファー)
IPスタックとネットワークインターフェイスコントローラー(NIC)の間には、ドライバーキューがあります。このキューは通常、先入れ先出し(FIFO)リングバッファー( http://en.wikipedia.org/wiki/Circular_buffer )として実装されています。これは固定されたものと考えてください。サイズのバッファ。ドライバキューにパケットデータが含まれていません。代わりに、ソケットカーネルバッファーと呼ばれる他のデータ構造(SKB、 http://vger.kernel.org/%7Edavem/skb.html )を指す記述子で構成され、パケットデータを保持し、カーネル全体で使用されます。
次の図は、リングバッファーが構造的にどこに適合するかを示しています。
この記事によると、リングバッファーのサイズは SKBs(ソケットカーネルバッファー) 記述子の数を制御します。 SKBの詳細については、提供されているリンクを参照してください。SKBを構成するCデータ構造が示されています。
そのドキュメントを見ると、リングバッファは単にフレームバッファに関連しているようではなく、パケットに関連するはるかに複雑なカーネルデータ構造へのポインタであるように見えます。