lsmodのTCPバリアント

lsmodのTCPバリアント

LinuxでTCP輻輳バリアントを実装する方法について読んでいます。各バリアントは別々のモジュールとして実装されます。

この質問を読んだとき:Linux UbuntuにTCP輻輳制御バリアントを追加する

私はこのバリエーションがmodprobeを使ってロードできることを知っています。

これは、lsmodの実行時にTCPcubicがデフォルトでロードされるように見えるはずです。 lsmodを実行すると、輻輳制御関連モジュールがロードされていますが、見つかりません。 lsmodに特定のタイプのカーネルモジュールがリストされていますか?

ベストアンサー1

この特定のケース(混雑)について解決する必要がある質問といくつかの説明があります。

カーネルモジュールカーネルの一部であり、オプションであり、カーネルの最初の起動時に存在する必要はなく、必要でない場合は後で存在する必要もありません。これは入れる。これにより、まったく使用されていないメモリを使用せずに、要求に応じてほとんどの機能を使用できます。ほとんどのモジュールはモジュールまたは組み込みにコンパイルできます。組み込みの場合は、.koモジュールファイルがすでに初期カーネルに存在するため、モジュールファイルが見つからないことを意味します。

実行された操作を確認できます。

  • 構成オプション(ここCONFIG_TCP_CONG_CUBIC)を理解して、使用されている構成(通常はファイル形式)にアクセスし、どのオプションが使用されて/boot/config-$(uname -r)いるかを確認してください。

    grep CONFIG_TCP_CONG_CUBIC /boot/config-$(uname -r)
    
  • あるいは、モジュール名を知って、モジュールが組み込みモジュールのリストにあることを確認してください。

    fgrep tcp_cubic.ko /lib/modules/$(uname -r)/modules.builtin
    

モジュールが見つからなかったので、あなたのケースの可能な結果の例ですが、キューブの可能なデフォルトは組み込みであることを意味するかもしれません。

$ grep _CUBIC /boot/config-$(uname -r)
CONFIG_TCP_CONG_CUBIC=y
CONFIG_DEFAULT_CUBIC=y
$ fgrep tcp_cubic.ko /lib/modules/$(uname -r)/modules.builtin
kernel/net/ipv4/tcp_cubic.ko

したがって、次の質問に対する答えになります。このモジュールは組み込まれているので、常にロードすることを検討してください。組み込みのデフォルトは意味があり、しばしば必須です。

/lib/modules/$(uname -r)lsmodどこかで見つけて表示することを期待するが利用できない組み込みモジュールファイルのリストcat /lib/modules/$(uname -r)/modules.builtin。特別ではありませんが、しばしば(常にではありませんが)選択されます(Linuxディストリビューションでは)。関連するすべてのモジュールの依存関係を含むビルドするには、オプションのリストからデフォルト値を選択する必要があるためです。

それではもう少し明確に説明しましょう。もちろん、モジュールの機能を使用するには、モジュールをロード(または組み込み)する必要があります。ただし、リンクされたQ&Aにはあなたのコメントはありません。ただ有効にするには、TCP輻輳モジュールをロードする必要があります。引用:

これらのいずれかを試すには、modprobe -a tcp_westwoodまたは必要なものを使用してインストールする必要があります。それからこれを使ってテストすることができます

echo "westwood" > /proc/sys/net/ipv4/tcp_congestion_control

このダミーファイルは読み取り/書き込みなので、単純にクエリしてどの輻輳が使用されているのかを調べることができ、結果は次のようになります。

$ cat /proc/sys/net/ipv4/tcp_congestion_control
cubic

次にアルゴリズムを変更します。

# lsmod | grep tcp_westwood
# echo westwood > /proc/sys/net/ipv4/tcp_congestion_control
# lsmod | grep tcp_westwood
tcp_westwood           16384  1

モジュールは自動的にロードされ使用されています(一部のシステムは自動的にロードされない可能性があります)。

とにかく、この特定のケースに関する十分な情報/proc/sys/net/ipv4/tcp_congestion_controllsmod

おすすめ記事