Infinibandを使ってみたいっ!その2

やっと入ったInfiniband。そこで早速使ってみたい。

まずはこんな感じで確認してみる。

[root@localhost ~]# lsmod | grep ib
ib_ucm                 12120  0
ib_ipoib              122881  0
ib_cm                  42214  3 ib_ucm,rdma_cm,ib_ipoib
ib_uverbs              61976  2 rdma_ucm,ib_ucm
ib_umad                12562  4
mlx5_ib               123388  0
mlx5_core             100354  1 mlx5_ib
mlx4_ib               195533  0
ib_sa                  35753  5 rdma_ucm,rdma_cm,ib_ipoib,ib_cm,mlx4_ib
ib_mad                 43632  4 ib_cm,ib_umad,mlx4_ib,ib_sa
ib_core               117637  12 rdma_ucm,ib_ucm,rdma_cm,iw_cm,ib_ipoib,ib_cm,ib_uverbs,ib_umad,mlx5_ib,mlx4_ib,ib_sa,ib_mad
ib_addr                 7796  3 rdma_cm,ib_uverbs,ib_core
ipv6                  334740  56 ip6t_REJECT,nf_conntrack_ipv6,nf_defrag_ipv6,ib_ipoib,mlx4_ib,ib_addr
mlx4_core             320610  2 mlx4_en,mlx4_ib
compat                 27701  17 rdma_ucm,ib_ucm,rdma_cm,iw_cm,ib_ipoib,ib_cm,ib_uverbs,ib_umad,mlx5_ib,mlx5_core,mlx4_en,mlx4_ib,ib_sa,ib_mad,ib_core,ib_addr,mlx4_core

うん、なんか色々ある。で、必要なのは、ib_ipoibでIPOverIBをするには必要。これがあればOKなはず。

次に、IPなどの設定。これはethernetのカードと同じ形で設定する。

[root@localhost ~]# more /etc/sysconfig/network-scripts/ifcfg-ib0
DEVICE=ib0
#HWADDR=80:00:00:48:FE:80:00:00:00:00:00:00:00:02:C9:03:00:0F:42:5B
TYPE=InfiniBand
#UUID=1785aca6-3f3d-4f28-ab01-a7224be0295e
ONBOOT=yes
#NM_CONTROLLED=yes
BOOTPROTO=static
BROADCAST=192.168.2.255
IPADDR=192.168.2.10
NETMASK=255.255.255.0
NETWORK=192.168.2.0
#IPV6INIT=no
#USERCTL=no

コメントアウトしているのは、なぜかHWADDRなどが変わってしまっていて、うまく認識されないから。正しく書いてあげれば大丈夫なはず。

こんな感じで相手側も設定すれば、後はPingなどでテストしてみる。

速度が知りたかったので、とりあえず、CentOSのDVDをダウンロードしておいて、それをSCPしてみた。

CentOS-6.6-x86_64-bin-DVD1.iso                        20%  925MB  44.2MB/s   01:18 ETA

んーっと、44.2MB/sってことは、8倍すると約350Mbpsってことだ。…遅くね?

iperfで測ってみたけど、3.95Gbpsだった、、、、ん?遅くね?

Infinibandを使ってみたいっ!

というわけで、ヤフオクで購入。QDRが9000円で売ってたので、勢いで3枚購入。

ケーブルも、、、と思ったけど、高いのでeBayで中華な人から購入。

届いたものを早速いじってみる。

最終的には、このページに従って、やってみた。
購入したのは、これらしい。

ConnectX-2 MHQH19B-XTR

これがわからなかった。
Mellanoxのホームページに行ってもわからずで、、、。

最初にやったのは、Mellanoxのホームページからダウンロードした最新のドライバを当ててみた。
そしたら、まず言われたのは、

[root@localhost MLNX_OFED_LINUX-2.4-1.0.4-rhel6.6-x86_64]# ./mlnxofedinstall
Logs dir: /tmp/MLNX_OFED_LINUX-2.4-1.0.4.8938.logs
Error: One or more required packages for installing MLNX_OFED are missing.
Please install the missing packages using your Linux distribution Package Management tool.
Run:
yum install tcl gcc-gfortran tk

ということで素直に入れる。
そしたら、次はこんな感じになった。

[root@localhost MLNX_OFED_LINUX-2.4-1.0.4-rhel6.6-x86_64]# ./mlnxofedinstall
Logs dir: /tmp/MLNX_OFED_LINUX-2.4-1.0.4.9791.logs
This program will install the MLNX_OFED_LINUX package on your machine.
Note that all other Mellanox, OEM, OFED, or Distribution IB packages will be removed.
Do you want to continue?[y/N]:y

もちろんYesでインストール。で、

Starting MLNX_OFED_LINUX-2.4-1.0.4 installation …

Installing mlnx-ofa_kernel RPM
Preparing…                ##################################################
mlnx-ofa_kernel             ##################################################
Installing kmod-mlnx-ofa_kernel 2.4 RPM
Preparing…                ##################################################
kmod-mlnx-ofa_kernel        ##################################################
Installing mlnx-ofa_kernel-devel RPM
Preparing…                ##################################################
mlnx-ofa_kernel-devel       ##################################################
Installing kmod-kernel-mft-mlnx 3.8.0 RPM
Preparing…                ##################################################
kmod-kernel-mft-mlnx        ##################################################
Installing knem-mlnx RPM
Preparing…                ##################################################
knem-mlnx                   ##################################################
Installing kmod-knem-mlnx 1.1.1.90mlnx RPM
Preparing…                ##################################################
kmod-knem-mlnx              ##################################################
Installing kmod-iser 1.5 RPM
Preparing…                ##################################################
kmod-iser                   ##################################################
Installing kmod-srp 1.4 RPM
Preparing…                ##################################################
kmod-srp                    ##################################################
Installing mpi-selector RPM
Preparing…                ##################################################
mpi-selector                ##################################################
Installing user level RPMs:
Preparing…                ##################################################
ofed-scripts                ##################################################
Preparing…                ##################################################
libibverbs                  ##################################################
Preparing…                ##################################################
libibverbs-devel            ##################################################
Preparing…                ##################################################
libibverbs-devel-static     ##################################################
Preparing…                ##################################################
libibverbs-utils            ##################################################
Preparing…                ##################################################
libmlx4                     ##################################################
Preparing…                ##################################################
libmlx4-devel               ##################################################
Preparing…                ##################################################
libmlx5                     ##################################################
Preparing…                ##################################################
libmlx5-devel               ##################################################
Preparing…                ##################################################
libibcm                     ##################################################
Preparing…                ##################################################
libibcm-devel               ##################################################
Preparing…                ##################################################
libibumad                   ##################################################
Preparing…                ##################################################
libibumad-devel             ##################################################
Preparing…                ##################################################
libibumad-static            ##################################################
Preparing…                ##################################################
libibmad                    ##################################################
Preparing…                ##################################################
libibmad-devel              ##################################################
Preparing…                ##################################################
libibmad-static             ##################################################
Preparing…                ##################################################
ibsim                       ##################################################
Preparing…                ##################################################
ibacm                       ##################################################
Preparing…                ##################################################
librdmacm                   ##################################################
Preparing…                ##################################################
librdmacm-utils             ##################################################
Preparing…                ##################################################
librdmacm-devel             ##################################################
Preparing…                ##################################################
opensm-libs                 ##################################################
Preparing…                ##################################################
opensm                      ##################################################
Preparing…                ##################################################
opensm-devel                ##################################################
Preparing…                ##################################################
opensm-static               ##################################################
Preparing…                ##################################################
dapl                        ##################################################
Preparing…                ##################################################
dapl-devel                  ##################################################
Preparing…                ##################################################
dapl-devel-static           ##################################################
Preparing…                ##################################################
dapl-utils                  ##################################################
Preparing…                ##################################################
perftest                    ##################################################
Preparing…                ##################################################
mstflint                    ##################################################
Preparing…                ##################################################
mft                         ##################################################
Preparing…                ##################################################
srptools                    ##################################################
Preparing…                ##################################################
rds-tools                   ##################################################
Preparing…                ##################################################
rds-devel                   ##################################################
Preparing…                ##################################################
ibutils2                    ##################################################
Preparing…                ##################################################
ibutils                     ##################################################
Preparing…                ##################################################
cc_mgr                      ##################################################
Preparing…                ##################################################
dump_pr                     ##################################################
Preparing…                ##################################################
ar_mgr                      ##################################################
Preparing…                ##################################################
ibdump                      ##################################################
Preparing…                ##################################################
infiniband-diags            ##################################################
Preparing…                ##################################################
infiniband-diags-compat     ##################################################
Preparing…                ##################################################
qperf                       ##################################################
Preparing…                ##################################################
fca                         ##################################################
Preparing…                ##################################################
mxm                         ##################################################
Preparing…                ##################################################
openmpi                     ##################################################
Preparing…                ##################################################
bupc                        ##################################################
Preparing…                ##################################################
infinipath-psm              ##################################################
Preparing…                ##################################################
infinipath-psm-devel        ##################################################
Preparing…                ##################################################
mvapich2                    ##################################################
Preparing…                ##################################################
hcoll                       ##################################################
Preparing…                ##################################################
libibprof                   ##################################################
Preparing…                ##################################################
mlnxofed-docs               ##################################################
Preparing…                ##################################################
mpitests_mvapich2__2_0      ##################################################
Preparing…                ##################################################
mpitests_openmpi__1_8_4     ##################################################
Device (05:00.0):
05:00.0 InfiniBand: Mellanox Technologies MT26428 [ConnectX VPI PCIe 2.0 5GT/s – IB QDR / 10GigE] (rev b0)
Link Width is not 8x
PCI Link Speed: 5Gb/s

Installation finished successfully.

Attempting to perform Firmware update…
Querying Mellanox devices firmware …

Device #1:
———-

Device Type:      ConnectX2
Part Number:      CA05954-1623_B0
Description:      ConnectX-2 VPI adapter card; single-port 40Gb/s QSFP; PCIe2.0 x8 5.0GT/s; tall bracket; RoHS R6
PSID:             FJT0D90200009
PCI Device Name:  0000:05:00.0
Port1 GUID:       0002c903000f425b
Port2 MAC:        0002c90f425b
Versions:         Current        Available
FW             2.7.9110       N/A

Status:           No matching image found

Log File: /tmp/MLNX_OFED_LINUX-2.4-1.0.4.9791.logs/fw_update.log
Failed to update Firmware.
Collecting debug info…
See /tmp/MLNX_OFED_LINUX-2.4-1.0.4.9791.logs/fw_update.log
To load the new driver, run:
/etc/init.d/openibd restart
Configuring /etc/security/limits.conf.

ん?待て!
ドライバーが入らないとな!?

結局これってOEM製品をヤフオクで買っているのだが、Mellanoxの純正ではないみたい。FUJITSUものらしいな。んで、ファームウェアーも2.7.9110だ。
勘違いしたのは、そもそもにFWのバージョンが低いのでは!?ということ。実際にはそうでなかったのだが、ここから迷走が始まる。

Mellanoxのホームページに行って、ドライバーダウンロードするも、どのタイプのHCAなのかわからない。
モノを直接見たところで、わからないし、Mellanoxに従ってMSTをインストールしてステータス表示しても

[root@localhost mft-3.5.0-16]# mst status
MST modules:
————
MST PCI module loaded
MST PCI configuration module loaded

MST devices:
————
/dev/mst/mt26428_pci_cr0         – PCI direct access.
domain:bus:dev.fn=0000:01:00.0 bar=0xfde00000 size=0x100000
Chip revision is: B0
/dev/mst/mt26428_pciconf0        – PCI configuration cycles access.
domain:bus:dev.fn=0000:01:00.0 addr.reg=88 data.reg=92
Chip revision is: B0

で、タイプはわからない。なので、PSIDで探したら、誰か猛者がいるかも、。、と思ったら、やっぱりいた!
で、冒頭のホームページにたどり着く。

そこで知ったのは、俺って何も知らないなぁってことだ。
えっと、とりあえず、ファームの更新をしました。

MellanoxからダウンロードしたMFTをインストールしてあるので、ステータスでデバイスを確認し、現状のiniファイルを抽出(これがすごい。こんなのがあるとは知らなかった!)

flint -d /dev/mst/mt26428_pci_cr0 dc > /tmp/MHQH19B-XTR.ini

んで、ファームをダウンロードしてきて、このiniファイルをConfigとしてROMに焼く。

[root@localhost ConnectX2-rel-2_9_1000]# mlxburn -d /dev/mst/mt26428_pci_cr0 -fw fw-ConnectX2-rel.mlx -conf /tmp/MHQH19B-XTR.ini
-I- Generating image …

Current FW version on flash:  2.7.9110
New FW version:               2.9.1000

Burning FS2 FW image without signatures – OK
Restoring signature                     – OK
-I- Image burn completed successfully.

いやっほぉぉぉ。成功しました。

書いてしまうと非常にシンプルだが、だいぶ迷った。いやぁ、良かった良かった(w

 

これで、40Gbpsとかの世界に入れるぞ!