修正する:

修正する:

私たちのアプリケーションがFreeBSD 12でより良いパフォーマンスを得るようにNICを設定する必要があります。システムは FreeBSD 12.0-RELEASE-p3 GENERIC amd64

まず、Linuxシステム用のソリューションを紹介したいと思います。マルチキューNICに16個のRXおよび16個のTXキューを設定するには、コマンドを適用しますethtool -L ens786f1 combined 16。私たちはFreeBSDシステムに対する代替リクエストを探しています。

FreeBSDでは、ネットワークカードはixlドライバによって駆動されます。override_qs_enableoverride_nrxqsなどの同じことを行う必要があるいくつかのカーネル変数が見つかりましたoverride_ntxqsマンページ)。これを設定するコマンドはsysctl dev.ixl.1.iflib.override_qs_enable="1"etcに似ています(異なるシステムで異なるインターフェイスを持つ同じデバイスです)ens786f1ixl1

起動するたびにこれらの変数を設定したいと思います。マニュアルページには、ixlドライバがロードされる前に(ローダを使用して)起動時にこれらの変数を設定する必要があることが示されているため、/boot/loader.conf以前はファイルが空であったため、次のように設定行を追加しました。

#Setup NIC#
dev.ixl.1.iflib.override_qs_enable="1"
dev.ixl.1.iflib.override_nrxqs="16"
dev.ixl.1.iflib.override_ntxqs="16"

/boot/defaults/loader.confインクルードが/boot/loader.conf使用されるため、マイloader_conf_filesブートファイルを実行する必要があります。ただし、再起動してビュー変数を使用すると、変数はデフォルト値sysctl(0)になり、ビューではdmesgデバイスは望みどおりに設定されません(まだ8つのRXと8つのTXキューが表示されます)。

おそらく/boot/loader.confが呼び出されていないかもしれませんが、ethtoolFreeBSDでコマンドを変更するのは悪い方法です。

一部のログ:Pastebin.com/YGTxqxdx


(ファイルにも保存されます)を使用して変数を設定しようとしましたが、再kenv起動後にオプションは保存されないようです。


数日間の調査の最後に、NICを新しく設定/編集するには、既存のVFを使用する必要があるかもしれませんiovctl。を呼び出すとiovctl -S -d ixl1パラメータがありますnum-queues。この構成に経験がある人はいますか?


問題はローダーにあります。ローダーがGRUBで正しく設定されていません。ただし、同じドライバを使用して複数のRX / TXキューを設定するのに役立つ場合は、次の答えは非常に良い情報セットです。

答え1

バラよりkern.ipc.somaxconnの設定を持続させる方法は?

引用符を削除します。」

dev.ixl.1.iflib.override_qs_enable=1
dev.ixl.1.iflib.override_nrxqs=16
dev.ixl.1.iflib.override_ntxqs=16

またはで/etc/rc.d/sysctl startテストservice sysctl restart

修正する:

以前のバージョンのFreeBSDでは通常hw.ixl.max_queues.を設定していましたが、ixlドライバはFreeBSD 12でiflibを使用するように変更されているようです。

sysctl -d dev.ixlドライバーが実際に使用していることを確認できる場合iflib

dev.ixl.1.iflib.override_qs_enable: permit #txq != #rxq
dev.ixl.1.iflib.override_nrxqs: # of rxqs to use, 0 => use default #
dev.ixl.1.iflib.override_ntxqs: # of txqs to use, 0 => use default #

Web検索でドライバに追加できる違いが見つかったので、これを確認しました(rS335338: ixl(4): iflib を使用するように更新)。

現在の設定がデフォルトです。

dev.ixl.1.iflib.override_qs_enable: 0
dev.ixl.1.iflib.override_nrxqs: 0
dev.ixl.1.iflib.override_ntxqs: 0

これにより、キューの数をコア数(この場合は8つ)に設定する必要があります。これiflibマニュアルページには、これらの項目を設定する必要があると記載されています。今後ドライバーをロードします。 Sysctlを再起動しても役に立ちません。再起動するだけです。

次に、以下を設定する必要があります/boot/loader.conf

dev.ixl.1.iflib.override_qs_enable=1
dev.ixl.1.iflib.override_nrxqs=16
dev.ixl.1.iflib.override_ntxqs=16

このオプションを設定したら、再起動してをdmesg | grep ^ixl使用して確認する必要がありますsysctl dev.ixl.1.iflib

現在の出力はdmesg次のとおりです。

ixl0: pxm cpus: 8 queue msgs: 128 admincnt: 1
ixl0: using 8 rx queues 8 tx queues

ixl1: pxm cpus: 8 queue msgs: 128 admincnt: 1
ixl1: using 8 rx queues 8 tx queues

あなたはこれをすべてやってみましたが、それは役に立たないと主張します。

バグレポートを見るとバグ 230465 - ixl: ネットワークマッピングモードでは動作しません。しかし、私たちは確認を受けました。ジェフ・パイパーチャールズ・ゴンサルベスそれが彼に効果があるという追加の確認。

これはFreeBSDの非常に一般的な設定であり、通常動作します。同じいつもできるオフロード車の運転手なのに、上記の確認内容によるとそうではないようです。 ixlカードがないので残念ながら何も確認できません。

あなたkenvも言及しました。そしてジェフ・パイパー設定できることを確認してください。ただし、kenvこれはカーネルの静的ドライバではなくドライバモジュールを使用している場合にのみ実行できることに注意してください。

したがって、上記の内容に基づいて「ShouldWork(tm)」と主張し、loader.confFreeBSD 12(またはそれ以降のバージョン)のカーネルドライバに設定します。ほぼ常にuname -aFreeBSD関連の質問を追加するように通知します。

関連情報