ATL1E:割り込みマージ/リングバッファ/オフロード設定

ATL1E:割り込みマージ/リングバッファ/オフロード設定

によると、lshw次のようになります。

製品: AR8121/AR8113/AR8114 ギガビットまたは高速イーサネット
ベンダー: Qualcomm Atheros
ドライバ=ATL1E ドライバ バージョン=1.0.0.7-NAPI (linux-5.4 以降)


可能であれば、割り込みマージリングバッファと他のサイズを変更する方法を探したいと思います。削除

ただし、何を使用しようとすると、そのethtool機能がサポートされていないというメッセージが返されます(非常に限られている可能性があります)。atl1e_ethtool(*1))


これらの設定をコマンドするためのパラメータはatl1e_param.c、さらに下にスクロールすると、atl1e_check_optionsルーチンを見つけることができます。「有効なユーザー入力があるかどうか、すべてのコマンドライン引数を確認してください。」その後、デフォルトのハードコードされたパラメータを変更します。

モジュールはこれらの起動コマンドライン引数をサポートすると推測します。atl1e.param_name=value しかし、

しかし、許可されているparam_namesリストの手がかりが見つかりません。

誰かが私がそれらを見つけるのを助けることができますか?


1:私は出身だから無料BSDドライバそれ」エールドライバでサポートされているすべてのLOMは、受信と送信のためのTCP / UDP / IPチェックサムオフロード、TCP Segmentation Offload(TSO)、ハードウェアVLANタグストリップ/挿入機能、WOL(Wake on LAN)、割り込みマージ/仲介メカニズム、 64の機能を備えています。 -ビットマルチキャストハッシュフィルタ。

ベストアンサー1

私はatl1eソースコードを通して道を見つけ、そこで間違ったコードコメントを見つけました。


何:

Linux ATL1Eドライバは、最適ではなくethtoolでサポートされていないことが知られている他の調整を有効にするためにいくつかのパラメータを受け入れます。

  • tx_desc_cnt:転送説明数:32<=値<=1020:デフォルト値128

サポートされていないを使用してethtool -G tx <value>txリングエントリの数を変更したい場合。

<MyOpinion>ホームルーター/デスクトップLANのデフォルトは高すぎます。このセットを維持すると、カーネルクラッシュダンプサイズが不合理に増えることはもちろん、自分も知らずにRAMが無駄になります。少なくとも半分くらいです。 </私の考え>

  • rx_mem_size:rxバッファメモリサイズ(KB):8<=値<=1024:デフォルト値256

サポートされていないを使用してethtool -G rx <value>受信リングバッファのサイズを変更したい場合。

<MyOpinion> rx overlimitを減らすためにデフォルト値から増やしたいのですが…まあ…そうかもしれませんが…なんだかその量が目立たない。しかし…これを増やすと、ネットワーク待ち時間が大幅に増えます。 </MyOpinion>

  • メディアタイプ:メディアタイプの選択:0 <= value <= 4: default 0

0 - サポートされているすべての速度
で の
自動 ネゴシエーション

サポートされていないデバイスを使用して広告されethtool -s advertise <value>たスピードとデュアル方式を強制したいユーザーのためのものです。

<MyOpinion>デフォルトの自動ネゴシエーションに問題があるユーザーだけが、このパラメータがnull以外の値を持つことを望みます。 </MyOpinion>

  • int_mod_timer割り込みミディアムタイマ(2 µs単位): 50 <= 値 <= 65000 : デフォルト 100

サポートされていないethtool -C [rx/tx]-usecs <value>マージ設定を変更したいユーザーのためのものです。

<私の意見>これシステムに最大の影響を与える設定です。通常のワークロード(ネットワークトラフィック)を実行して再ベンチマークしました。 ..しかし。 ..ネットワーク待ち時間が長くなります。 </私の考え>

そして… ?それはすべてです。皆さん、このドライバーにはもう期待できません。チェックサムオフロード?ああ、何...気にしないでください!


どのように:

起動コマンドラインに文字列を追加するだけで、ドライバをカーネルからビルドするかモジュールとしてビルドするかにかかわらず動作します。

atl1e.<any_one of above parameter_name>=<value>

さて、ネットワークカードはいくつありますか?問題ありません。ただ配列です。

atl1e.<any_one of above parameter_name>=<value_for_NIC0>,<value_for_NIC1>,…

さて、あなたはカーネルコマンドラインを嫌い、このドライバをモジュールとして構築し、modprobeを使いたいですか?それから簡単に:

modprobe atl1e <any_one of above parameter_name>=<value_for_NIC0>,<value_for_NIC1>,…

PS.:MSI機能

そのハードウェアにはMSI機能が必要ですが、一部の重大なホット
スポットではハードウェアに重大な問題が発生するため、一部のパッチが適用され、この機能を無効にして特定のIRQに置き換えられました。

私のハードウェアのため、私のNICは私のサウンドカードの1つとIRQを共有します!ホレスコ参考!

単にパッチを元に戻して再テストしました。うーん...過去10年間でMSIがアクティブになって、すべてがスムーズに実行されました。必要に応じてより多くの関連情報を提供します。


結論として:

私はこの記事を書いている時点で、ハードウェアが老化に近づく以上のことをしていることを知っています...(この行の著者も同じです...) したがって...同じ場合は役に立ちません。ここに多くの人が助けてくれます。
私はこの記事を読むのに十分勇敢な人に助けたいと思います。

  • カーネルの奇妙なことを盲目的に信頼しないでください!自分のシステムをベンチマーク、ベンチマーク、ベンチマークします。どんなカーネル開発者よりもあなたがもっとよく知っているでしょう。
  • あまりにも愚かな場合は、ethtoolを決して信じないでください。サポートされていない操作審判。ドライバを編集する多くの企業は、ethtoolヘルパーの提供と文書化にあまり気にしません。したがって、コードを詳しく見てください。意味のあるところに道がある!

おすすめ記事