本小节只适用于 InfiniBand 设备。因为 iWARP 和 RoCE/IBoE 设备是基于 IP
的设备,用户应在配置 IPoIB 且设备有 IP
地址后,按照执行 RDMA 测试操作一节的内容进行测试。
1. InfiniBand 设备信息
启用 rdma
服务和 opensm 服务(若需要),并为具体硬件安装适当的用户空间库后,就可以进行用户空间 rdma
操作。
service opensmd start
libibverbs-utils 软件包中的简单测试程序可帮助您确定 RDMA 操作是否正常。ibv_devices 程序显示该系统中目前所有设备,而 ibv_devinfo
命令会给出每个设备的具体信息。例如:
[root@node24 ~]# ibv_devices
device node GUID
------ ----------------
mlx4_0 46d2c92000004820
[root@node25 ~]# ibv_devices
device node GUID
------ ----------------
mlx4_0 46d2c92000003500
使用ibstat命令显示InfiniBand的具体信息:
[root@node24 ~]# ibstat
CA 'mlx4_0'
CA type: MT4099
Number of ports: 1
Firmware version: 2.30.3000
Hardware version: 0
Node GUID: 0x46d2c92000004820
System image GUID: 0x46d2c92000004823
Port 1:
State: Active
Physical state: LinkUp
Rate: 56
Base lid: 72
LMC: 0
SM lid: 49
Capability mask: 0x02514868
Port GUID: 0x46d2c92000004821
Link layer: InfiniBand
[root@node24 ~]#
[root@node25 ~]# ibstat
CA 'mlx4_0'
CA type: MT4099
Number of ports: 1
Firmware version: 2.30.3000
Hardware version: 0
Node GUID: 0x46d2c92000003500
System image GUID: 0x46d2c92000003503
Port 1:
State: Active
Physical state: LinkUp
Rate: 56
Base lid: 53
LMC: 0
SM lid: 49
Capability mask: 0x0251486a
Port GUID: 0x46d2c92000003501
Link layer: InfiniBand
ibv_devinfo
和 ibstat
命令输出信息稍有不同(比如端口 MTU 信息是在 ibv_devinfo
而不是 ibstat
输出中显示,而端口 PUID 信息是在 ibstat
而不是 ibv_devinfo
输出中显示。同时有些信息的命名方式也不同,例如:ibstat
输出中的基础本地标识符(LID)与 ibv_devinfo
输出中的 port_lid
是相同的信息。
2. ibping程序 实现客户端/服务器模式
可使用简单的 ping 程序,比如 infiniband-diags 软件包中的 ibping 测试 RDMA 连接性。ibping 程序采用客户端/服务器模式。必须首先在一台机器中启动 ibping 服务器,然后再另一台机器中将 ibping 作为客户端运行,并让它与 ibping 服务器相连。因为我们是要测试基础 RDMA 功能,因此需要用于 RDMA 的地址解析方法,而不是使用 IP
地址指定服务器。
在服务器机器中,用户可使用 ibv_devinfo
和 ibstat
命令输出 port_lid
(或基础 lid)以及所要测试端口的端口 GUID(假设是上述接口的端口 1,则 port_lid
/基础 LID
是 49,而端口 GUID 是 0x46d2c92000004821
)。然后使用所需选项启动 ibping 捆绑至要测试的网卡和端口,同时还要指定 ibping 以服务器模式运行。使用 -?
或者 --help
选项即可查看 ibping的所有可用选项,但在这个实例中可使用 -S
或 --Server
选项,同时在绑定到具体网卡和端口时可使用 -C
或者 --Ca
以及 -P
或者 --Port
选项。注:这个实例中的端口不会指示端口号,但会在使用多端口网卡时指示物理端口号。要测试所使用 RDMA 结构的连接性,比如多端口网卡的第二端口,则需要让 ibping 捆绑至网卡的端口 49。使用单一端口网卡时不需要这个选项。例如:
[root@node25 ~]# ibping -S -C mlx4_0 -P 1
然后切换至客户端机器并运行 ibping。记录 ibping 程序所绑定端口的端口 GUID 或者 ibping程序所绑定服务器端口的 本地标识符(LID)。另外,还需要记录客户端机器中与服务器为所捆绑网卡和端口连接网络相同的网卡和端口。例如:如果服务器中第一网卡的第二端口所捆绑的网络是辅 RDMA 结构,那么就需要在客户端中指定一个也连接到第二结构的网卡和端口。完成配置后,请作为客户端运行 ibping 程序,使用在服务器中找到的端口 LID 或者 GUID 作为地址连接到服务器。例如:
[root@node24 ~]# ibping -c 10000 -f -C mlx4_0 -P 1 -L 49
[root@node24 ~]# ibping -c 10000 -f -C mlx4_0 -P 1 -L 49
--- (Lid 49) ibping statistics ---
10000 packets transmitted, 0 received, 100% packet loss, time 398 ms
rtt min/avg/max = 0.000/0.000/0.000 ms
这个结果会验证端到端 RDMA 通讯是否在用户空间应用程序中正常工作。