![Mellanox ConnectX-7 - 250 Gbit/s を超える速度が得られない](https://rvso.com/image/789258/Mellanox%20ConnectX-7%20-%20250%20Gbit%2Fs%20%E3%82%92%E8%B6%85%E3%81%88%E3%82%8B%E9%80%9F%E5%BA%A6%E3%81%8C%E5%BE%97%E3%82%89%E3%82%8C%E3%81%AA%E3%81%84.png)
私は ConnectX-7 Infiniband カードを搭載したマシンを数台所有しており、それらを Nvidia QM9700 スイッチに接続しています。両端で 400 Gbit NDR を確認しました (ホストの ibstat とスイッチのコンソール)。マシンは Ubuntu 22.04 と Mellanox 5.8-3.0.7.0 ドライバーを実行しています。私は多くのテストを行ってきましたがib_write_bw
、最大で ~251 Gbit/s までしか得られませんでした。実際のテスト コマンドは次のとおりです。
サーバー側 (host_a):
numactl -N 0 -m 0 ib_write_bw -d mlx5_4 -F --report_gbits
クライアント側 (host_b):
numactl -N 0 -m 0 ib_write_bw -d mlx5_4 -F --report_gbits --run_infinitely host_b
カードは numactl に一致する正しい NUMA ドメインにありますが、他の組み合わせを試してみましたがうまくいきませんでした。出力は次のようになります。
---------------------------------------------------------------------------------------
RDMA_Write BW Test
Dual-port : OFF Device : mlx5_4
Number of qps : 1 Transport type : IB
Connection type : RC Using SRQ : OFF
PCIe relax order: ON
ibv_wr* API : ON
TX depth : 128
CQ Moderation : 1
Mtu : 4096[B]
Link type : IB
Max inline data : 0[B]
rdma_cm QPs : OFF
Data ex. method : Ethernet
---------------------------------------------------------------------------------------
local address: LID 0x54 QPN 0x0058 PSN xxx RKey 0x1820e0 VAddr xxx
remote address: LID 0x53 QPN 0x0058 PSN xxx RKey 0x1820e0 VAddr xxx
---------------------------------------------------------------------------------------
#bytes #iterations BW peak[Gb/sec] BW average[Gb/sec] MsgRate[Mpps]
65536 2353827 0.00 246.81 0.470754
65536 2339084 0.00 245.27 0.467815
65536 2338736 0.00 245.23 0.467746
65536 2338574 0.00 245.22 0.467713
65536 2338610 0.00 245.22 0.467720
これはおそらく実現が難しいことは承知していますが、実際に Infiniband 経由で 400 Gbit を達成した人がいるかどうか、ib_write_bw
私たちが見逃した何かを知っているかどうか疑問に思います。
答え1
結局、答えは PCI パラメータをMAX_ACC_OUT_READ
128 に設定する必要があるということでした。各カードでこれを設定しmlxconfig -y -d mlx5_4 s MAX_ACC_OUT_READ=128
、マシンの電源を入れ直すと、スループットが約 250 Gbit から約 375 Gbit に跳ね上がりました。400 ではありませんが、それでも十分です。各カードを実行するには、次の手順を実行します。
apt-get install mlnx-ofed-all
mst start
for i in `mst status -v | grep 'net-ibp' | awk '{print $3}'` ; do mlxconfig -y -d $i s MAX_ACC_OUT_READ=128 ; done