次のいずれかで適用できるtxqueuelen
設定の違いは何ですか?
ifconfig eth4 txqueuelen 5000
ip link set eth4 txqueuelen 5000
そして、以下で適用できるtx
リングサイズ設定:
ethtool -G eth4 tx 4096
これらはグローバルとどのように関係していますか/proc/sys/net/core/wmem*
設定?
RHEL6を使用しています。
_net.core.wmem_default
_および_wmem_max
_設定は、TXソケットバッファーの初期サイズと最大サイズをバイト単位で制御します。キュー自体はskb
ポインターのリンクリストにすぎませんが、カーネルはskb
がソケットバッファーに追加およびソケットバッファーから削除されるときに、txqueuelen
によって消費される合計バイトサイズも追跡します。 _wmem_default
_ sysctlは、新しいソケット(net/core/sock.c:sock_init_data()
)のデフォルトの初期上限を設定します。アプリケーションはソケットのバッファのサイズを増やすことができ、_wmem_max
_はその機能の上限です(net/core/sock.c:sock_setsockopt()
)。
パケットがソケットバッファーから削除され、カーネルネットワークスタックを介してその経路を見つけた場合、そのパケットは、インターフェイスがNIC自体にロードされるのを待機するために、送信キューに置かれます。 ifconfig
またはip
コマンドで設定される[$ var] _は、キューイング規則(net/sched/sch_generic.c:pfifo_fast_enqueue()
)のカーネル伝送キューごとに許可されるフレームの数です。
最後に、_ethtool -G
_はioctlを使用して、NIC自体にリングバッファのリングエントリの数を設定します。
私は長く引き延ばされた説明をすることになっていることを知っていますが、D セイモンはすでに持っています 。つまり、txqueuelen
はバッファサイズです。すべてのネットワークパケットはこのバッファーに収まりますが、tx
は、このバッファーに入るIPパケットのパケットサイズです。それは私がその投稿を正しく理解している場合です。