以下の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_defaultwmem_maxskbskbwmem_defaultnet/core/sock.c:sock_init_data()wmem_maxnet/core/sock.c:sock_setsockopt()
パケットがソケットバッファから削除され、カーネルネットワークスタックを通過すると、NIC自体にロードされるのを待機するインターフェイスの送信キューに置かれます。txqueuelen設定ifconfigやipコマンドキューイング規律のためにカーネルの送信キューごとに許可されるフレームの数です(net/sched/sch_generic.c:pfifo_fast_enqueue())。
最後に、ethtool -Gioctlを使用して、NIC自体のリングバッファのリングエントリの数を設定します。
私は長い間説明された説明をすることになっていることを知っていますが、D セイモンはすでに持っています。要するにtxqueuelenバッファサイズです。すべてのネットワークパケットはこのバッファーに収まりますが、そのバッファーにtx入るIPパケットのパケットサイズです。それは私がその投稿を正しく理解している場合です。