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