IPoIB環境で通信速度を計測してみる

MHGH28-XTC(DDR)を1枚持つ2台のマシンで、通信速度試験を行ってみた。
カードはDDR規格なので、16Gbpsが上限。

2台のマシンにperftestとlibmlx4をインストールする

[root@e ~]# yum -y install perftest libmlx4
 
[root@s ~]# yum -y install perftest libmlx4

読み込み

受け側の役目を担うマシンで

[root@s ~]# ib_read_bw

として待ち受け状態にする。
一方調査する側のマシンでは、受け側の役目を担うマシンのIPを指定する(10.64.0.2)。

[root@e ~]# ib_read_bw 10.64.0.2 --report_gbits
---------------------------------------------------------------------------------------
                    RDMA_Read BW Test
 Dual-port       : OFF          Device         : mlx4_0
 Number of qps   : 1            Transport type : IB
 Connection type : RC
 TX depth        : 128
 CQ Moderation   : 100
 Mtu             : 4096[B]
 Link type       : IB
 Outstand reads  : 16
 rdma_cm QPs     : OFF
 Data ex. method : Ethernet
---------------------------------------------------------------------------------------
 local address: LID 0x03 QPN 0x0050 PSN 0x1e5b28 OUT 0x10 RKey 0x30002500 VAddr 0x007f82f68e2000
 remote address: LID 0x02 QPN 0x0058 PSN 0x69023c OUT 0x10 RKey 0x60002000 VAddr 0x007fa7d01ca000
---------------------------------------------------------------------------------------
 #bytes     #iterations    BW peak[Gb/sec]    BW average[Gb/sec]   MsgRate[Mpps]
 65536      1000           12.99              12.99                0.024770
---------------------------------------------------------------------------------------
[root@e ~]#

12.99 Gb/secを記録した。
調査回数(#iterations)を5000回にしてみると(ib_read_bw 10.64.0.2 --report_gbits --iters=5000)

 #bytes     #iterations    BW peak[Gb/sec]    BW average[Gb/sec]   MsgRate[Mpps]
 65536      5000           13.00              13.00                0.024787

と若干上がって 13.00 Gbit/sec となる

留意 複数coreなCPUだとHzがcoreの間で若干異なる。すると転送速度の演算が止まるみたい。BIOSベースで1coreにするか、-F フラグを調査する側に追加して実行する
*#bytesを可変して連続して計測するモード(-a)があるが、途中で止まる。複数coreで -F フラグを付けると停止しない..

DDR規格の上限 16Gbit/sec の8割(16*0.81=12.96)ほどは出ている模様

書き込み

前述は read での結果である。書き込みでの速度は ib_write_bw を使用する
受け側の役目を担うマシンで

[root@s ~]# ib_write_bw

として、調査する側のマシンでは下記の様に実行する。

[root@e ~]# ib_write_bw 10.64.0.2 --report_gbits
---------------------------------------------------------------------------------------
                    RDMA_Write BW Test
 Dual-port       : OFF          Device         : mlx4_0
 Number of qps   : 1            Transport type : IB
 Connection type : RC
 TX depth        : 128
 CQ Moderation   : 100
 Mtu             : 4096[B]
 Link type       : IB
 Max inline data : 0[B]
 rdma_cm QPs     : OFF
 Data ex. method : Ethernet
---------------------------------------------------------------------------------------
 local address: LID 0x03 QPN 0x0051 PSN 0x4e8ebb RKey 0x38002500 VAddr 0x007fafa2f57000
 remote address: LID 0x02 QPN 0x0059 PSN 0x331fab RKey 0x68002000 VAddr 0x007f0c698b6000
---------------------------------------------------------------------------------------
 #bytes     #iterations    BW peak[Gb/sec]    BW average[Gb/sec]   MsgRate[Mpps]
 65536      5000           13.23              13.23                0.025235
---------------------------------------------------------------------------------------
[root@e ~]#

書き込みの速度は 13.23 Gb/sec を記録した。

こちらもDDR規格の上限 16Gbit/sec の8割(16*0.82=13.12)ほどは出ている模様

Latency

遅延を調べる ib_read_lat ib_write_lat があるがどれも前述と同じ使い方をする。

iperf3

より一般的な速度計測アプリケーションでも調べてみる。
両方のマシンにepelから取得可能な iperf3 をインストールする。

[root@s ~]# yum -y install epel-release.noarch
[root@s ~]# sed -i 's/enabled=1/enabled=0/' /etc/yum.repos.d/epel.repo
[root@s ~]# yum -y --enablerepo=epel install iperf3

*上記はs サイトだけを示してます。e サイト側にもインストールを行います

受け側の役目を担うマシンで

[root@s ~]# iperf3 -s

とします。次に調査する側のマシンで「iperf3 -c 10.64.0.2」と実行する

[root@e ~]# iperf3 -c 10.64.0.2
Connecting to host 10.64.0.2, port 5201
[  4] local 10.64.0.1 port 33232 connected to 10.64.0.2 port 5201
[ ID] Interval           Transfer     Bandwidth       Retr  Cwnd
[  4]   0.00-1.00   sec  1.42 GBytes  12.2 Gbits/sec    0   1.57 MBytes
[  4]   1.00-2.00   sec  1.42 GBytes  12.2 Gbits/sec    0   1.57 MBytes
[  4]   2.00-3.00   sec  1.42 GBytes  12.2 Gbits/sec    0   1.57 MBytes
[  4]   3.00-4.00   sec  1.42 GBytes  12.2 Gbits/sec    0   1.57 MBytes
[  4]   4.00-5.00   sec  1.42 GBytes  12.2 Gbits/sec  108    883 KBytes
[  4]   5.00-6.00   sec  1.42 GBytes  12.2 Gbits/sec    0   1.51 MBytes
[  4]   6.00-7.00   sec  1.42 GBytes  12.2 Gbits/sec    0   1.57 MBytes
[  4]   7.00-8.00   sec  1.42 GBytes  12.2 Gbits/sec    0   1.57 MBytes
[  4]   8.00-9.00   sec  1.42 GBytes  12.2 Gbits/sec    0   1.57 MBytes
[  4]   9.00-10.00  sec  1.42 GBytes  12.2 Gbits/sec   53   1.02 MBytes
- - - - - - - - - - - - - - - - - - - - - - - - -
[ ID] Interval           Transfer     Bandwidth       Retr
[  4]   0.00-10.00  sec  14.2 GBytes  12.2 Gbits/sec  161             sender
[  4]   0.00-10.00  sec  14.2 GBytes  12.2 Gbits/sec                  receiver
 
iperf Done.
[root@e ~]#

上記の結果は、10秒間で14.2GB転送ができて 12.2Gbit/sec 計測できた事を示す

DDR規格の上限 16Gbit/sec の7割半(16*0.76=12.16)ほどは出ている模様

nc

nmap-ncatパッケージをインストールして、クライアント e からサーバ s に対してパケットを送信して、
その模様を iftop で観察します
まずサーバサイドにて

[root@s ~]# yum install nmap-ncat
[root@s ~]# yum -y --enablerepo=epel install iftop
 
[root@s ~]# nc -l 11111 > /dev/null

と待ち受け状態にして、次にクライアント側でデータを流してみた

[root@e ~]# yum install nmap-ncat
[root@e ~]# dd if=/dev/zero bs=1073741824 count=40 | nc -v 10.64.0.2 11111
Ncat: Version 6.40 ( http://nmap.org/ncat )
Ncat: Connected to 10.64.0.2:11111.
40+0 レコード入力
40+0 レコード出力
42949672960 バイト (43 GB) コピーされました、 60.2167 秒、 713 MB/秒
Ncat: 42949672960 bytes sent, 0 bytes received in 60.22 seconds.
[root@e ~]#

っがうまく表示されていないが、ピークで5.99Gbpsは出ている模様
2015y02m22d_180507597.png


トップ   編集 添付 複製 名前変更     ヘルプ   最終更新のRSS
Last-modified: 2015-02-23 (月) 00:20:04 (1674d)