2251142_ja-JP

cancel
Showing results for 
Show  only  | Search instead for 
Did you mean: 

2251142_ja-JP

2251142_ja-JP

Imx95 verdin EVK、Aquantia10gbpsインターフェースはudpで1.2gbpsに制限されています

こんにちは、

私は、Aquantia 10 Gbps インターフェースを介して、2 つの Imx95 verdin EVK A1 シリコン バージョン ボード間の通信を確立しようとしています。両方のボードは、nxp インストーラー (aquantia-firmware-utility/aq_api_2_9_7 at master · nxp-qoriq/aquantia-firmware-utility · GitHub) を使用して適切にインストールされた aquantia10 G ファームウェア (AQ... ) を実行しています。これらは Cat6a イーサネット ケーブルを使用して物理的にコネクテッドされます。

iperf3 を使用してパフォーマンス テストを実行すると、ターゲット帯域幅を 7 Gbps に指定した場合でも、TCP で約 5 Gbps、UDP で約 1.2 Gbps が得られ、損失は 0% になります。

# TCPテスト
最初のボードで iperf3 -s #
iperf3 -c -t 30 # 2番目のボード

# UDPテスト
iperf3 -s
iperf3 -c -u -b 7G -t 30

ip link set dev enp1s0 mtu 9000 でジャンボ フレームを有効にしようとすると、制限を超えたというエラーが発生します (10Gbps インターフェースがジャンボ フレームを受け入れないのは奇妙です)

また、UDPバッファサイズを増やそうとしましたが、同じビットフレームが発生します

両側でiperf3を実行してもCPU負荷は40%を超えません
最大スループット (10 Gbps 近く) を達成するために、適用する特定の n 構成やインストールする追加ツールはありますか? Aquantia FW バージョンは適切ですか? Linux カーネルのバージョンは適切ですか? FW インストーラーのバージョンは適切ですか?

誰かがすでにこのターゲットで 10Gbps インターフェースを使用しようとしましたか?

よろしくお願いいたします。

アブデルモナエム

Re: Imx95 verdin EVK, Aquantia10gbps interface limited on 1.2gbps on udp

1. 両方のシステムで次の設定を構成してみます。

cpufreq-set -g パフォーマンス

sysctl -w net.core.rmem_max=26214400
sysctl -w net.core.wmem_max=26214400
sysctl -w net.core.netdev_max_backlog=250000
sysctl -w net.ipv4.tcp_rmem='409687380 16777216'
sysctl -w net.ipv4.tcp_wmem='409665536 16777216'

2. 可能であれば、iperfサーバーとは異なる参照システムを使用します(例:インテル Xeon

3. iperf3 自体はテスト ストリームごとにシングル Thread なので、-P オプションを使用してみてください。
例えばiperf3 -c -u -b 10G -t 30 -P 6

(6つのストリーム)

4. 順方向と逆方向の両方のストリームをチェックする(-R)

iperf3 -c 192.168.1.1 -t 10 -b 10G -u -R



Re: Imx95 verdin EVK, Aquantia10gbps interface limited on 1.2gbps on udpこんにちは、
ご意見ありがとうございます。
設定を適用します:
cpufreq-set -g パフォーマンス

sysctl -w net.core.rmem_max=26214400
sysctl -w net.core.wmem_max=26214400
sysctl -w net.core.netdev_max_backlog=250000
sysctl -w net.ipv4.tcp_rmem='409687380 16777216'
sysctl -w net.ipv4.tcp_wmem='409665536 16777216'

現在、送信側のみで10Gbps、時には8、8または9、8Gbpsを達成でき、iperfのみでiperf3は使用していません。レシーバ側では、フレーム損失が36%で5.59Gbpsしか達成できません。この問題を解決するのを手伝っていただけますか?
Re: Imx95 verdin EVK, Aquantia10gbps interface limited on 1.2gbps on udp

6.12.49へのマイナーバージョンアップグレードとなります

ところで、スループットを向上させるために、DPDK または AF_XDP も検討してみてはいかがでしょうか?

Re: Imx95 verdin EVK, Aquantia10gbps interface limited on 1.2gbps on udp

=> TCPとUDPの送信パフォーマンス

iperf3 を使用して TCP パケットを送信する場合、各 TCP パケットは 128 KB であり、パケットは ENETC ハードウェアの LSO 機能によって断片化されます。SO、TCP 転送パフォーマンスが向上します。

iperf3 は、UDP ソケットを作成するときに UDP_SEGMENT を有効にしません。したがって:
- 各 UDP パケットのサイズは、およそ MTU サイズ (≈1500 バイト) です。
- 同じデータ サイズの場合、UDP は TCP よりも多くのパケットを送信する必要があります。
パケット数の増加 → カーネルプロセッシングの増加 → LSO を使用した TCP と比較してパフォーマンスの低下。

=> TCP の場合、受信が送信に比べて大幅に低いのはなぜですか?

- Linux カーネルでは TX パスと RX パスが対称ではないため、カーネル内の各 RX パケットと各 TX パケットのプロセッシング時間は異なります。また、TCP は送信時に LSO オフロードを使用しています。
- RSC はカーネル内でデフォルトで有効になっていません。ENETC の RSC が適切に動作するように、TCP タイムスタンプを無効にする必要があります。現在、i.MX95 の RSC はデフォルトで無効になっています。
a) i.MX95(レシーバ)のRSCを有効にする:
ethtool -K eth1 大容量受信オフロードオン
b) TCPタイムスタンプを無効にする(送信側):
sysctl -w net.ipv4.tcp_timestamps=0
sysctl -p /etc/sysctl.conf

RSC を有効にすると、レシーバの TCP パフォーマンスが向上します。

さらに、より高いスループットを得るためにジャンボ フレームを使用することもできます。(最新リリースを実行していることを願います)。

# 両側のMTUを9000に変更します
IPリンク設定 dev eth1 mtu 9000

# イーサネット ドライバの RX バッファの長さを変更します。
ethtool -G eth1 受信バッファ長 16384

マルチストリーム モードでは、8 ~ 10 Gbps の UDP RX/TX が確認できます。

Re: Imx95 verdin EVK, Aquantia10gbps interface limited on 1.2gbps on udpこんにちは、

私は今のところUDPだけに興味があり、TCPには興味がありません。そして、オフロードは
メカニズムはUDPには適用されません
MTU を 9000 に設定してジャンボ フレームを有効にしようとしましたが、制限の 1500 を超えたというエラーが表示されます (カーネル バージョン 6.12.3 を使用しています)

よろしくお願いいたします。
アブデルモナエム
Re: Imx95 verdin EVK, Aquantia10gbps interface limited on 1.2gbps on udp

RSC 設定により UDP パフォーマンスも向上します。


ENETC のジャンボ フレームの変更/修正は、2 週間以内にリリースされる LF-Q4 で利用可能になる予定です。


Re: Imx95 verdin EVK, Aquantia10gbps interface limited on 1.2gbps on udpわかりました、これを試してみます、そして結果がどうなったかお伝えします、
LF-Q4 の Linux カーネル バージョンを詳しく教えていただけますか?先ほど言ったように、私は 6.12.3 を使っていますが、シリコン リビジョンが A1 なので上位バージョンに移行できません。B0 リビジョンにアップグレードする必要があるかどうかを知る必要があります。
Re: Imx95 verdin EVK, Aquantia10gbps interface limited on 1.2gbps on udp問題はありません。iperf で 1 つのフローだけで 5Gbps の並列フローで 9、8Bps で 10Gbps まで行くことができますが、大きな問題は UDP です。モノフローでは 2Gbps でフレーム損失はなく問題ありませんが、並列フローでは 5、5Gbps で 42% の損失があります。Re: Imx95 verdin EVK, Aquantia10gbps interface limited on 1.2gbps on udpAF_XDP や DPDK が 46% の損失を 0% に減らすのに役立つとは思えません。また、IRQ の親和性も検証したところ、10G インターフェースには 6 つの IRQ があり、それぞれが CPU に影響を与えていることがわかりました。テスト中に CPU 負荷の問題は発生しませんでした。1 つの CPU の最大 CPU 負荷は 40% です。フレームが失われ続ける理由がまだわかりません。使用しているカーネル バージョンがジャンボ フレームをサポートしていないことが原因かもしれません。
あなたの側(NXP)で10Gインターフェースのパフォーマンステストは実施しましたか?あなたの側でテストして、私と同じ問題があるかどうかを確認する必要があると思います。
Re: Imx95 verdin EVK, Aquantia10gbps interface limited on 1.2gbps on udp

AF_XDP または DPDK はカーネル ネットワーク スタックを使用しません。

DPDK には特別なドライバがあり、ユーザー空間でのみ動作します。ネットワークとパケットプロセッシングに高度に最適化されています。すべての IP パケットに対して非常に高速なパフォーマンスをCANで提供できます。以下のサイトで確認することができます。

第10章: https://www.nxp.com/docs/en/reference-manual/RM00293.pdf

Re: Imx95 verdin EVK, Aquantia10gbps interface limited on 1.2gbps on udpこのテストは、シリコン リビジョン A1 または B0 で実行されます。
このテストに使用されたカーネル バージョン 6.12.49 が B0 にのみ適用可能か、それとも A1 にも適用可能かを確認しますか?
このカーネル バージョンは BSP 配信には表示されません。最新のものは 6.12.34 ですhttps://www.nxp.com/pages/alpha-beta-bsps-for-microprocessors:IMXPRERELEASES
Re: Imx95 verdin EVK, Aquantia10gbps interface limited on 1.2gbps on udp

新しいカーネル ツリーと変更は次の場所で入手できます。

https://github.com/nxp-imx/linux-imx/commits/lf-6.12.49-2.2.0

新しい LF リリースでは A1 サポートが削除されました。

次のオプションがあります。

1. カーネルを個別にビルドし、ビルド内のカーネルのみを置き換えます。(うまくいくかもしれない)

2. マーケティングお問い合わせにボードを B0 に交換してもらい、LF-Q4'2025 リリースを実行できるように SO CAN します。


Re: Imx95 verdin EVK, Aquantia10gbps interface limited on 1.2gbps on udpこれらの行からは理解できません:
単一 UDP ストリーム送信 (1500 MTU): 2 Gbps (単一ストリームで MTU 1500 の送信では 2 Gbps になるようです)
マルチ UDP ストリーム送信 (1500 MTU): 10 Gbps (これは、マルチ ストリームで MTU 1500 の送信では 10 Gbps になるようです)
単一 UDP ストリーム送信 (9000 MTU): 8.2 Gbps (単一ストリームで MTU 900 の送信では 8.2 Gbps になるようです)
単一 UDP ストリーム受信 (9000 MTU): 3.9 Gbps (単一ストリームで MTU 9000 の Rx では 3.9 Gbps になるようです)
マルチ UDP ストリーム受信 (9000 MTU): 10Gbps (マルチストリームの MTU 9000 の Rx では 2Gbps になるようです)

私には見えません:
単一UDPストリーム受信(1500 MTU)
マルチUDPストリーム受信(1500 MTU)
Re: Imx95 verdin EVK, Aquantia10gbps interface limited on 1.2gbps on udpわかりました。念のため、受信側で MTU = 1500 でテストを行ってください。この新しいバージョンで私と同じ結果が得られるか知りたいです。また、テストでは送信を 1500、受信を 9000 に設定していますが、これでは何も変わりません。両側で 1500 になっているようなものです。ジャンボ フレームをテストする必要がある場合は、両側で 9000 にする必要があります。次の構成でテストをやり直してください。
1- モノおよびマルチストリームで両側に MTU = 1500 の RX/TX
2- モノおよびマルチストリームで両側に MTU = 9000 の RX/TX

よろしくお願いします
Re: Imx95 verdin EVK, Aquantia10gbps interface limited on 1.2gbps on udp

はい、このようにして結果がテストされました。

MTU はすべてのCASEで両側で同じでした (両方とも 1500 または両方とも 9000)

Re: Imx95 verdin EVK, Aquantia10gbps interface limited on 1.2gbps on udp

添付資料参照


また、A1 SOCでも実行していることにも注意してください。

UBOOT ログ: -

U-Boot 2025.04-g8c1de2e1deca(2025年5月9日 - 15:29:26 +0000)


CPU: i.MX95 rev1.1(1800MHz)
CPU: オートモーティブ温度グレード (-40℃~125℃)、30℃
LM ブート理由: sw、オリジン: 2、エラー: 1
LM シャットダウン理由: sw、発生元: 2、エラー: 1
モデル: NXP i.MX95 19X19 ボード
DRAM: 15.8ギブ


--- SMログ

>$ 情報
SM バージョン = ビルド 633、コミット c37b26da
SM 構成 = mx95evk、mSel=0
ボード = i.MX95 EVK、属性 = 0x00000000
シリコン = i.MX95 A1
ブートモード = 通常
ブートデバイス = MMC1
ブートステージ = プライマリ
ブートセット = 1
ECID = 0x6E5F04BA0000000500041D0899123F81
PMIC 0 (0x08) = 0x20、0x09、0x10、0x00、0x01
PMIC 1 (0x2A) = 0x54, 0x22, 0x00, 0x0B
PMIC 2 (0x29) = 0x55, 0x22, 0x00, 0x0A
コンパイラ = gcc 14.2.1 20241119

Tags (1)
No ratings
Version history
Last update:
‎12-10-2025 04:29 AM
Updated by: