ToDo:
aq driverは、iflibフレームワークで動いているので、デフォルトのTX/RX queueの数は接続バス上のプロセッサのコア数になっている
Ryzen 3700X(8C)からRyzen 5950X(16C)への換装で、 queueが 8個から 16個に増えたら通信障害が多発
症状は、TCPはすごく遅い(多分再送多発っぽぃ)とか、外向きのpingは問題ない(ように見える)が、外部からのping着信に答えないなど
どうも、TX/RX queueが増えてもハードウェア的にハンドル出来ていない模様…
本来は、aq driver側でNICがサポート可能な最大 queue数を iflibフレームワークに伝えるべきなのだろう
当座のワークアラウンドは、iflibフレームワークのtuning knobで TX/RX queueを動作実績のある数まで絞る(例えば、8 queue)
dev.aq.0.iflib.override_nrxqs=8 dev.aq.0.iflib.override_ntxqs=8
sysctl(1)でも書き込める変数なのだが、iflib(4)に書かれている通り、参照されるのはドライバ初期時なので、/boot/loader.confに記述するか aq driverをロードする前にkenv(8)で設定するのが正解(ロード前は、sysctlノードはまだ生えていないぞ!)
netioによるTCP接続ベンチマークで、X550-T2とかだと普通に10Gbpsまで伸びるGen3 x4バス接続で、3~4Gbpsまでしか出ないのが難なのだが、現時点でWoL出来る10G PCIe NIC Cardってこれしか見つけていない Orz
2.5Gだと、I225とかRealtek 8125辺りはオンボード実装でWoLサポートしているので、WoLできるPCIe Cardがあるかも知れんが、速度的にはAQC107ほんの少し速い罠 (NBASE-T対応10Gスイッチなので、素直に性能が出る5GBASE-TなWoL PCIe NIC出てきたら考えるかも)
いや、一応複数ストリームなら 9Gbps越えしてくるから、rsync複数立てとかだと性能が出るのだが、Tbyte級のファイルをNFS越に流し込むとかのケースで性能が頭打ちに (X550とかだともう少し素直に性能が伸びる)
状況的には、aq driver - userland間のコンテキストスイッチコストや転送遅延もしくは、RX/TX queue 1本辺りの処理帯域でリミットがかかっているのだろうが…
RX/TX queueを 1個にして試したけど、single TX/RX queueでも複数ストリームなら 9Gbps越えてくるので、aq driver - userland間の転送帯域で限界が来てるぽぃ
カテゴリー: Admin | Emacs | EPICS | Fortran | FreeBSD | GCC | hgsubversion | IPv6 | KEKB | LHC | Lisp | LLVM | MADX | Ryzen | SAD | samba | tDiary | unix | WWW | YaSAI | お仕事 | イベント | 出張 | 宴会 | 数学 | 艦これ | 買いもの | 追記 | 雑記