【HW】Infiniband HCAの性能について 
 Inifinihost世代のHCAとConnectX世代のHCAでどの程度差があるのか知りたかったので、@hanakara_milkさんに借りてみました。ありがとうございます。今更Infinihostを誰が買うのか知りませんが、俺得なベンチを取ってみました。


 そして並ぶHCA達。LPブラケットなのがDDRなHCAで、MHRH19-XTCです。FHなHCAはMHQH19-XTCで、QDRです。どちらもコネクタがQSFPなのですが、コネクタについているヒートシンクが中々にごついです。




 Infinihost IIIがかわいく見えます。また、ConnectXは基板の表面がマット仕上げになっていて、高級感があります。




 InfinihostとConnectXとの大きな違いは、PCI-E 2.0に対応しているかどうかだと思います。追加された機能は以下の通りです。


1.2us MPI ping latency
10, 20, or 40Gb/s InfiniBand ports
IBTA version 1.2.1 compatible
PCI Express 2.0 (up to 5GT/s)
CPU offload of transport operations
End-to-end QoS and congestion control
Hardware-based I/O virtualization
TCP/UDP/IP stateless offload


 これのOffload系の機能がどこまで効いてくるのか気になります。

 今回の実験機材も前回の通り、X58マザーボードを利用します。構成は以下の通りです。

マシン名 ibhack(SRP Target,SM) ib0(Windows 7)
M/B RampageII Gene LanpartyUT X58 T3eH8
CPU Xeon X5647@166*22=3.66GHz Core i7 920@166*20=3.32GHz
Memory 24GB@DDR3 1333 12GB@1666



実験方法


  perftest-2.0-0.8.gaeb562e.tar.gzをここから落とし、Debian上でコンパイルしたものをib_send_bw -aで実行し、まずRDMAの生の転送速度をみます。次に、Windows7を立ち上げ、ramfs上に作ったfileioなSRP Targetに接続して、ファイルシステムを書く前の生のHDDに対してHDtuneをかけてみます。接続は1対1のP2Pで、HCAは両方とも同じ型のものを挿して接続しています。

ib_send_bw


 CPUの速度がOCで規定より高い為、-FオプションをつけてCPUの周波数がデフォルトと違っても無視する必要がありました。

MT25204(InfinihostIII LX DDR) ibhack->ib0


---------------------------------------------------------------------------------------
Send BW Test
Dual-port : OFF Device : mthca0
Number of qps : 1
Connection type : RC
TX depth : 128
CQ Moderation : 100
Mtu : 2048B
Link type : IB
Max inline data : 0B
rdma_cm QPs : OFF
Data ex. method : Ethernet
---------------------------------------------------------------------------------------
local address: LID 0x05 QPN 0x70405 PSN 000000
remote address: LID 0x06 QPN 0x60405 PSN 000000
---------------------------------------------------------------------------------------
#bytes #iterations BW peak[MB/sec] BW average[MB/sec] MsgRate[Mpps]
2 1000 2.19 1.91 1.000191
4 1000 4.37 4.13 1.082352
8 1000 8.78 8.30 1.087476
16 1000 17.62 16.67 1.092480
32 1000 35.25 33.54 1.098929
64 1000 70.06 67.71 1.109355
128 1000 140.61 135.66 1.111329
256 1000 281.13 271.14 1.110589
512 1000 558.75 532.13 1.089795
1024 1000 1007.01 960.94 0.984002
2048 1000 1160.50 1157.49 0.592635
4096 1000 1298.67 1293.89 0.331235
8192 1000 1393.80 1384.57 0.177225
16384 1000 1447.22 1441.83 0.092277
32768 1000 1475.98 1473.18 0.047142
65536 1000 1490.27 1488.80 0.023821
131072 1000 1496.89 1496.11 0.011969
262144 1000 1465.14 1464.76 0.005859
524288 1000 1462.32 1462.18 0.002924
1048576 1000 1463.59 1463.05 0.001463
2097152 1000 1464.98 1464.95 0.000732
4194304 1000 1465.13 1465.12 0.000366
8388608 1000 1465.29 1465.27 0.000183
---------------------------------------------------------------------------------------


MT25204(InfinihostIII LX DDR) ib0->ibhack


---------------------------------------------------------------------------------------
Send BW Test
Dual-port : OFF Device : mthca0
Number of qps : 1
Connection type : RC
TX depth : 128
CQ Moderation : 100
Mtu : 2048B
Link type : IB
Max inline data : 0B
rdma_cm QPs : OFF
Data ex. method : Ethernet
---------------------------------------------------------------------------------------
local address: LID 0x06 QPN 0x50405 PSN 000000
remote address: LID 0x05 QPN 0x60405 PSN 000000
---------------------------------------------------------------------------------------
#bytes #iterations BW peak[MB/sec] BW average[MB/sec] MsgRate[Mpps]
2 1000 2.20 1.94 1.018915
4 1000 4.44 4.13 1.082365
8 1000 8.87 8.10 1.061957
16 1000 17.72 16.85 1.104403
32 1000 35.63 33.82 1.108241
64 1000 70.94 67.30 1.102591
128 1000 141.99 135.31 1.108476
256 1000 284.47 270.95 1.109794
512 1000 565.39 528.15 1.081643
1024 1000 1015.76 974.34 0.997726
2048 1000 1171.46 1150.30 0.588952
4096 1000 1305.33 1300.87 0.333023
8192 1000 1396.99 1388.36 0.177710
16384 1000 1447.05 1441.62 0.092264
32768 1000 1473.54 1470.63 0.047060
65536 1000 1487.21 1485.64 0.023770
131072 1000 1494.10 1493.36 0.011947
262144 1000 1463.98 1463.65 0.005855
524288 1000 1461.48 1461.28 0.002923
1048576 1000 1462.79 1461.29 0.001461
2097152 1000 1463.74 1463.68 0.000732
4194304 1000 1464.00 1463.96 0.000366
8388608 1000 1464.03 1464.02 0.000183
---------------------------------------------------------------------------------------



MHRH19-XTC(ConnectX DDR) ibhack->ib0


---------------------------------------------------------------------------------------
Send BW Test
Dual-port : OFF Device : mlx4_0
Number of qps : 1
Connection type : RC
TX depth : 128
CQ Moderation : 100
Mtu : 2048B
Link type : IB
Max inline data : 0B
rdma_cm QPs : OFF
Data ex. method : Ethernet
---------------------------------------------------------------------------------------
local address: LID 0x04 QPN 0x2c0049 PSN 000000
remote address: LID 0x01 QPN 0xe0049 PSN 000000
---------------------------------------------------------------------------------------
#bytes #iterations BW peak[MB/sec] BW average[MB/sec] MsgRate[Mpps]
2 1000 11.81 9.59 5.030067
4 1000 23.95 22.46 5.886616
8 1000 47.34 44.65 5.852200
16 1000 96.64 92.21 6.042951
32 1000 190.97 176.70 5.790027
64 1000 381.28 360.29 5.902996
128 1000 761.26 689.17 5.645716
256 1000 1379.21 1167.59 4.782438
512 1000 1695.87 1612.81 3.303040
1024 1000 1759.30 1755.97 1.798111
2048 1000 1822.55 1820.07 0.931877
4096 1000 1857.81 1855.12 0.474910
8192 1000 1864.95 1864.32 0.238633
16384 1000 1872.64 1872.20 0.119821
32768 1000 1876.15 1875.89 0.060028
65536 1000 1877.68 1877.57 0.030041
131072 1000 1878.51 1878.46 0.015028
262144 1000 1878.93 1878.89 0.007516
524288 1000 1879.12 1879.10 0.003758
1048576 1000 1879.25 1879.24 0.001879
2097152 1000 1879.28 1879.28 0.000940
4194304 1000 1879.30 1879.30 0.000470
8388608 1000 1879.31 1879.31 0.000235
---------------------------------------------------------------------------------------


MHRH19-XTC(ConnectX DDR) ib0->ibhack


---------------------------------------------------------------------------------------
Send BW Test
Dual-port : OFF Device : mlx4_0
Number of qps : 1
Connection type : RC
TX depth : 128
CQ Moderation : 100
Mtu : 2048B
Link type : IB
Max inline data : 0B
rdma_cm QPs : OFF
Data ex. method : Ethernet
---------------------------------------------------------------------------------------
local address: LID 0x01 QPN 0x100049 PSN 000000
remote address: LID 0x04 QPN 0x300049 PSN 000000
---------------------------------------------------------------------------------------
#bytes #iterations BW peak[MB/sec] BW average[MB/sec] MsgRate[Mpps]
2 1000 11.01 8.35 4.376276
4 1000 24.01 21.53 5.645092
8 1000 47.92 43.32 5.677919
16 1000 99.99 94.22 6.174486
32 1000 197.26 170.16 5.575723
64 1000 420.60 362.58 5.940512
128 1000 827.53 723.93 5.930408
256 1000 1441.21 1215.54 4.978834
512 1000 1687.67 1613.57 3.304601
1024 1000 1759.67 1756.59 1.798751
2048 1000 1822.69 1820.74 0.932218
4096 1000 1857.79 1854.94 0.474865
8192 1000 1864.82 1864.18 0.238615
16384 1000 1872.45 1871.97 0.119806
32768 1000 1875.97 1875.69 0.060022
65536 1000 1877.47 1877.36 0.030038
131072 1000 1878.27 1878.22 0.015026
262144 1000 1878.69 1878.66 0.007515
524288 1000 1878.91 1878.89 0.003758
1048576 1000 1879.01 1879.00 0.001879
2097152 1000 1879.04 1879.04 0.000940
4194304 1000 1879.06 1879.06 0.000470
8388608 1000 1879.08 1879.08 0.000235
---------------------------------------------------------------------------------------



MHQH19-XTC(ConnectX QDR) ibhack->ib0


念のため、QDRでリンクしているか確認します。

root@ibhack:~# cat /sys/class/infiniband/mlx4_0/ports/1/rate
40 Gb/sec (4X QDR)

QDRでリンクをしていることを確認したら続けます。

---------------------------------------------------------------------------------------
Send BW Test
Dual-port : OFF Device : mlx4_0
Number of qps : 1
Connection type : RC
TX depth : 128
CQ Moderation : 100
Mtu : 2048B
Link type : IB
Max inline data : 0B
rdma_cm QPs : OFF
Data ex. method : Ethernet
---------------------------------------------------------------------------------------
local address: LID 0x02 QPN 0x6004b PSN 000000
remote address: LID 0x03 QPN 0x6004b PSN 000000
---------------------------------------------------------------------------------------
#bytes #iterations BW peak[MB/sec] BW average[MB/sec] MsgRate[Mpps]
2 1000 10.19 8.98 4.707758
4 1000 24.20 23.00 6.030120
8 1000 47.50 40.02 5.245350
16 1000 98.17 91.88 6.021122
32 1000 191.62 162.56 5.326693
64 1000 388.57 372.22 6.098381
128 1000 795.13 752.70 6.166095
256 1000 1514.78 1320.79 5.409956
512 1000 2204.01 1977.20 4.049303
1024 1000 2482.58 2398.21 2.455767
2048 1000 2631.52 2616.36 1.339578
4096 1000 2751.52 2736.97 0.700664
8192 1000 2824.35 2816.94 0.360568
16384 1000 2847.69 2845.08 0.182085
32768 1000 2868.25 2865.46 0.091695
65536 1000 2879.71 2878.75 0.046060
131072 1000 2883.73 2883.73 0.023070
262144 1000 2885.55 2885.32 0.011541
524288 1000 2886.20 2886.12 0.005772
1048576 1000 2886.48 2886.42 0.002886
2097152 1000 2886.62 2886.62 0.001443
4194304 1000 2886.25 2886.25 0.000722
8388608 1000 2886.30 2886.30 0.000361
---------------------------------------------------------------------------------------


MHQH19-XTC(ConnectX QDR) ib0->ibhack


---------------------------------------------------------------------------------------
Send BW Test
Dual-port : OFF Device : mlx4_0
Number of qps : 1
Connection type : RC
TX depth : 128
CQ Moderation : 100
Mtu : 2048B
Link type : IB
Max inline data : 0B
rdma_cm QPs : OFF
Data ex. method : Ethernet
---------------------------------------------------------------------------------------
local address: LID 0x03 QPN 0x40049 PSN 000000
remote address: LID 0x02 QPN 0x40049 PSN 000000
---------------------------------------------------------------------------------------
#bytes #iterations BW peak[MB/sec] BW average[MB/sec] MsgRate[Mpps]
2 1000 11.01 8.29 4.345156
4 1000 23.18 21.17 5.549494
8 1000 49.80 44.45 5.826456
16 1000 103.02 89.88 5.890369
32 1000 197.64 170.98 5.602656
64 1000 407.96 288.48 4.726448
128 1000 883.17 829.98 6.799235
256 1000 1539.28 1287.57 5.273906
512 1000 2162.77 1979.89 4.054805
1024 1000 2488.24 2401.56 2.459200
2048 1000 2630.96 2616.39 1.339592
4096 1000 2753.86 2739.81 0.701390
8192 1000 2827.36 2820.18 0.360983
16384 1000 2851.47 2848.96 0.182333
32768 1000 2872.24 2871.94 0.091902
65536 1000 2883.48 2882.69 0.046123
131072 1000 2887.11 2886.78 0.023094
262144 1000 2889.60 2889.35 0.011557
524288 1000 2890.00 2889.98 0.005780
1048576 1000 2890.62 2890.60 0.002891
2097152 1000 2891.04 2891.03 0.001446
4194304 1000 2890.65 2890.65 0.000723
8388608 1000 2890.60 2890.60 0.000361
---------------------------------------------------------------------------------------


ib_send_bwまとめ


 Infinihostでは 1493.36MB/s(11.66Gbps)が最大値だったのに対し、同じDDRでもConnectXでは1879.31MB/s(14.68Gbps)出ていました。理論値最大が16Gbpsなので、ConnectXではDDRの最大値近く出ていると思います。また、Infinihostではメッセージサイズが 131072Byteから若干下がっているのに対し、ConnectXでは下がることはありませんでした。
 ConnectXのQDRでは 2890.60MB/s(22.58Gbps)が最大値で、理論値最大の32Gbpsまではまだ遠いように思われます。というか、40Gb/sの8割となると8Gb/sもオーバーヘッドがあるんですね…。もったいないお化けが出てきそうです。FDRからは8b/10bエンコーディングではなく64/66bエンコードなので9.7割まで使えるようになり、かなりオーバーヘッドは削られていますが…。

SRPでの転送速度


 SRPですが、最初は/dev/ram0に対してBlockIOでアクセスしていたのですが、QDRでBlockIOを使うと何故か書き込みをするとbrdモジュールがCalltrace吐いて死んでしまいました。DDRではConnectXでBlockIOでアクセスしても問題は起きなかったので、詳しい原因はよく分からないのですが、ramfsにDDで書いたファイルに対してFileIOを発行しても大丈夫だったので、SCSTはvdisk_FileIOを利用しています。

MT25204(InfinihostIII LX DDR)





MHRH19-XTC(ConnectX DDR)





MHQH19-XTC(ConnectX QDR)





まとめ


 RamdomIOに関しては、計測する度にかなりぶれるのであまり参考にはならないのですが、ConnectXはDDRでもQDRでも512byteのアクセスタイムが大体0.03-0.05msなのに対して、Infinihostでは0.05-0.09msくらいかかっていたので、やはり世代の差はかなりあります。また、その速度が出るストレージが現存しないものの最大値がQDRの32Gbpsに対して17Gbps程度なので、もう少しチューニングできそうな気がします。ターゲット側でdd if=/dev/zero of=/a/ram.img bs=1M count=10000 としたときに、大体4GB/s程度だったので、もしかしたらramfsというかOSがRAMにファイルシステムとしてアクセスすると言うのがもうネックなのかもしれませんが。

おまけ QDR Infiniband上でのiperf


 まずLinuxマシンでconnedted modeを使わずに、mtu2022の状態で転送します。
---------------------------------------------------------------------------------------
root@ibhack:~/perftest-2.0# iperf -c 10.1.1.2 -i 1
------------------------------------------------------------
Client connecting to 10.1.1.2, TCP port 5001
TCP window size: 28.8 KByte (default)
------------------------------------------------------------
[ 3] local 10.1.1.1 port 36843 connected with 10.1.1.2 port 5001
[ ID] Interval Transfer Bandwidth
[ 3] 0.0- 1.0 sec 1.39 GBytes 11.9 Gbits/sec
[ 3] 1.0- 2.0 sec 1.14 GBytes 9.75 Gbits/sec
[ 3] 2.0- 3.0 sec 1.37 GBytes 11.8 Gbits/sec
[ 3] 3.0- 4.0 sec 1.40 GBytes 12.1 Gbits/sec
[ 3] 4.0- 5.0 sec 1.41 GBytes 12.1 Gbits/sec
[ 3] 5.0- 6.0 sec 1.41 GBytes 12.1 Gbits/sec
[ 3] 6.0- 7.0 sec 1.41 GBytes 12.1 Gbits/sec
[ 3] 7.0- 8.0 sec 1.41 GBytes 12.1 Gbits/sec
[ 3] 8.0- 9.0 sec 1.40 GBytes 12.0 Gbits/sec
[ 3] 0.0-10.0 sec 13.7 GBytes 11.8 Gbits/sec


 次に、ConnectedModeにして、MTUを65520にした状態でテストしてみます。チューニング無しでも10G以上出てるので十分と言えば十分ですが…。

root@ibhack:~/perftest-2.0# echo "connected">/sys/class/net/ib0/mode
root@ibhack:~/perftest-2.0# ifconfig ib0 mtu 65520

root@ibhack:~/perftest-2.0# iperf -c 10.1.1.2 -i 1
------------------------------------------------------------
Client connecting to 10.1.1.2, TCP port 5001
TCP window size: 649 KByte (default)
------------------------------------------------------------
[ 3] local 10.1.1.1 port 36844 connected with 10.1.1.2 port 5001
[ ID] Interval Transfer Bandwidth
[ 3] 0.0- 1.0 sec 2.43 GBytes 20.9 Gbits/sec
[ 3] 1.0- 2.0 sec 2.41 GBytes 20.7 Gbits/sec
[ 3] 2.0- 3.0 sec 2.41 GBytes 20.7 Gbits/sec
[ 3] 3.0- 4.0 sec 2.40 GBytes 20.6 Gbits/sec
[ 3] 4.0- 5.0 sec 2.40 GBytes 20.6 Gbits/sec
[ 3] 5.0- 6.0 sec 2.40 GBytes 20.6 Gbits/sec
[ 3] 6.0- 7.0 sec 2.40 GBytes 20.6 Gbits/sec
[ 3] 7.0- 8.0 sec 2.40 GBytes 20.6 Gbits/sec
[ 3] 8.0- 9.0 sec 2.38 GBytes 20.4 Gbits/sec
[ 3] 9.0-10.0 sec 2.41 GBytes 20.7 Gbits/sec
[ 3] 0.0-10.0 sec 24.0 GBytes 20.6 Gbits/sec

 このテストはLinuxマシン上からの結果ですが、Windows上からでも同じような値がでました。


まとめ


 PCI-Eが2.0対応になったからなのか、各Offload機能が機能したからなのか、やはりInfinihostよりもConnectXの方が総じていいです。ConnectXの方が熱を持つのが気になるところでしょうか。

 色々IBのテストをしてみましたが、転送速度的にも扱い的にも(DebianのようなOFEDを入れられない環境だと扱いにかなり癖があるものの)悪くないので、そろそろ総IB化したいなあと思います。が、そんな資金はないので後回しですが…。
 あとはConnectX2以降のHCAでどのように変わったか、FDRで本気の転送したらどうなるのか、と言うのも気になります。なんでFDRの機材にさわれた前回のIBHackでこの前知識を持っていかなかったのか…非常にもったいないことをしました。まあ、あそこに行ったからこそなんか動きそうだと思ってHCAを買ってみたのですが。


コメントを書く
必要事項とコメントを入力して下さい。









タグの挿入