RDMA运行的方法,并提供了一些故障排除指南

这篇文章显示了几种测试RDMA运行的方法,并提供了一些故障排除指南。它适用于基于以太网(RoCE)或InfiniBand网络。 安装 确保您有两台配备Mellanox ConnectX-3 / ConnectX-3 Pro适配卡的服务器 (可选)通过以太网交换机连接两台服务器,使用RoCE时可以使用访问端口(默认为VLAN 1)。 RDMA驱动程序 建议安装最新的MLNX_OFED,但是也可以使用单独的RDMA驱动程序。 对于RHEL / CentOS安装:

应用介绍

这篇文章显示了几种测试RDMA运行的方法,并提供了一些故障排除指南。它适用于基于以太网(RoCE)或InfiniBand网络。

安装
确保您有两台配备Mellanox ConnectX-3 / ConnectX-3 Pro适配卡的服务器
(可选)通过以太网交换机连接两台服务器,使用RoCE时可以使用访问端口(默认为VLAN 1)。
RDMA驱动程序
建议安装最新的MLNX_OFED,但是也可以使用单独的RDMA驱动程序。

对于RHEL / CentOS安装:

 

在两台服务器上运行以下安装命令:

# yum -y groupinstall "InfiniBand Support"

# yum -y install perftestinfiniband-diags

确保启动时已启用RDMARHEL7 / CentOS7

# dracut --add-drivers "mlx4_en mlx4_ib mlx5_ib" -f

# service rdma restart

# systemctl enable rdma

 

确保启动时已启用RDMA(RHEL7 / CentOS7)

# service rdma restart ; chkconfig rdma on

对于Ubuntu安装:

在两台服务器上运行以下安装命令:

# apt-get install libmlx4-1 infiniband-diagsibutils ibverbs-utils rdmacm-utils perftest

对于tgt目标支持安装:

# apt-get install tgt

对于LIO目标支持安装:

# apt-get install targetcli

对于iscsi客户端安装:

# apt-get install open-iscsi-utils open-iscsi

端口类型配置:

按照这篇文章配置端口类型。

请参考“如何在Mellanox ConnectX-3适配器中更改端口类型”

如果RDMA通过以太网(称为RoCE)运行,则需要确保将网络配置为无损耗,这意味着在适配器端口上启用了流控制(FC)或优先级流控制PFC 和开关。对于基本的RDMA测试(实验室环境),全局暂停流控制可能已足够(每个端口)。对于生产环境,首选PFC。

请使用以下命令(默认情况下已正常启用)检查是否开启:

# ethtool -a eth2

Pause parameters for eth2:

Autonegotiate: off

RX: on

TX: on

 

如果被禁用了,请运行:

# ethtool -A eth2 rx on tx on

重要的是,请确保在交换机以及相关端口上启用了全局暂停流控制。

如果是mellanox交换机(MLNX-OS),请使用以下命令将其启用

switch (config) # interface ethernet 1/1 flowcontrol receive onforce

switch (config) #interface ethernet 1/1 flowcontrol send on force

测试前检查项:


1.验证所有相关端口都处于“启动”状态(链接已启动)

2.检查L3 IP连接(例如ping正在运行)

3.确保该网络配置为无损耗(流量控制或PFC)

4.确保相关服务器上具有相同的RoCE版本。

5.确保iptables服务已停止。如果它正在运行,则主机防火墙规则可能会阻止tcp / ip连接。

5.继续下一部分-RDMA验证

要检查基本的RDMA CM,您可以简单地使用几个测试脚本

1. udaddy

该脚本涵盖RDMA_CM UD连接。(它使用librdmacm在两个节点之间建立了一组不可靠的RDMA数据报通信路径,可以选择在节点之间传输数据报,然后拆除通信)

#udaddy

在第二台服务器(作为客户端)上运行以下命令

# udaddy -s 12.12.12.1

udaddy: starting client

udaddy: connecting

initiating data transfers

receiving data transfers

data transfers complete

test complete

return status 0

"return status=0" means good exit(RDMA is running).

2. rdma_server, rdma_client 命令

另一个选择是使用rdma_serverrdma_client命令:

这些命令是简单的RDMA CM连接和乒乓测试(它使用同步librdmam调用在两个节点之间建立RDMA连接)。在一台服务器(充当服务器)上运行以下命令:

在一台服务器(充当服务器)上运行以下命令:

#rdma_server

在第二台服务器(作为客户端)上运行以下命令

rdma_client -s 12.12.12.1

rdma_client: start

rdma_client: end 0

“ rdma_client:end 0”表示良好退出(RDMA正在运行)。

3. ib_send_bw 性能测试

运行性能测试,例如ib_send_bwib_read_bw或类似的测试

例如:

在一台服务器(充当服务器)上运行以下命令:

# ib_send_bw -d mlx4_0 -i 1 -F --report_gbits

在第二台服务器(作为客户端)上运行以下命令:

# ib_send_bw -d mlx4_0 -i 1 -F --report_gbits 12.12.12.1

---------------------------------------------------------------------------------------

Send BW Test

Dual-port : OFF Device :mlx4_0

Number of qps : 1Transport type : IB

Connection type : RC

RX depth : 512

CQ Moderation : 100

Mtu : 1024[B]

Link type : Ethernet

Gid index : 0

Max inline data : 0[B]

rdma_cm QPs : OFF

Data ex. method : Ethernet

---------------------------------------------------------------------------------------

local address: LID 0000QPN 0x0065 PSN 0xc8f367

GID:254:128:00:00:00:00:00:00:246:82:20:255:254:23:27:129

remote address: LID 0000QPN 0x005d PSN 0x884d7d

GID:254:128:00:00:00:00:00:00:246:82:20:255:254:23:31:225

---------------------------------------------------------------------------------------

#bytes #iterations BWpeak[Gb/sec] BW average[Gb/sec] MsgRate[Mpps]

65536 1000 0.00 36.400.069428

---------------------------------------------------------------------------------------

4. rping

该脚本涵盖RDMA_CM RC连接,但仅涉及用户空间(它使用librdmacm在两个节点之间建立一组可靠的RDMA连接,可以选择在节点之间传输数据,然后断开连接)。

在其中一台服务器(充当rping服务器)上运行以下命令

# rping -s -C 10 –v

在其中一台服务器(充当rping客户端)上运行以下命令

rping -c -a 12.12.12.1 -C 10 -v

ping data: rdma-ping-0:ABCDEFGHIJKLMNOPQRSTUVWXYZ[\]^_`abcdefghijklmnopqr

ping data: rdma-ping-1:BCDEFGHIJKLMNOPQRSTUVWXYZ[\]^_`abcdefghijklmnopqrs

ping data: rdma-ping-2:CDEFGHIJKLMNOPQRSTUVWXYZ[\]^_`abcdefghijklmnopqrst

ping data: rdma-ping-3:DEFGHIJKLMNOPQRSTUVWXYZ[\]^_`abcdefghijklmnopqrstu

ping data: rdma-ping-4:EFGHIJKLMNOPQRSTUVWXYZ[\]^_`abcdefghijklmnopqrstuv

ping data: rdma-ping-5:FGHIJKLMNOPQRSTUVWXYZ[\]^_`abcdefghijklmnopqrstuvw

ping data: rdma-ping-6:GHIJKLMNOPQRSTUVWXYZ[\]^_`abcdefghijklmnopqrstuvwx

ping data: rdma-ping-7:HIJKLMNOPQRSTUVWXYZ[\]^_`abcdefghijklmnopqrstuvwxy

ping data: rdma-ping-8:IJKLMNOPQRSTUVWXYZ[\]^_`abcdefghijklmnopqrstuvwxyz

ping data: rdma-ping-9:JKLMNOPQRSTUVWXYZ[\]^_`abcdefghijklmnopqrstuvwxyzA

client DISCONNECT EVENT...

 

文件列表(部分)

名称 大小 修改日期
如何启用,验证和故障排除RDMA.docx20.61 KB2020-10-15

立即下载

相关下载

[RDMA 编译报错] gcc -o rdma-client rdma-common.o rdma-client.o -lrdmacm /usr/bin/ld: rdma-common.o: undefined reference to symbol
[在Linux示例程序上编写RDMA应用程序] 在Linux示例程序上编写RDMA应用程序,Linux示例程序上编写RDMA应用程序。 使用请确保您拥有rdma和libibverbs库。 ## compiler客户端: $ cc -o client client.c -lrdmacm -libverbs 服务器 : $ cc -o服务器server.c -lrdmacm ##运行服务器:
[Mellanox RDMA学习例子] 编译库的需求:libibverbs 编译参数:GCC -o service -libverbs 运行方式: 有IB网络支持: 服务端:./service 客户端:./service 服务端IP 走ROCE: 服务端:./service -g 0 客户端:./service -g 0 服务端IP
[RDMA网络编程用户手册] InfiniBand InfiniBand(IB)是一种服务器和存储器的互联技术,它具有高速、低延迟、低CPU负载、 高效率和可扩展的特性。InfiniBand的关键特性之一是它天然地支持远程直接内存访问(RDMA) 。InfiniBand能够让服务器和服务器之间、服务器和存储设备之间的数据传输不需要主机的CPU 的参与。InfiniBand使用I/O通道进行数据传输,每个I/O通道提供虚拟的NIC或HCA语义
[Mellanox GPUDirect RDMA用户手册] GPUDirect RDMA是IB CORE与对等内存客户端(例如NVIDIA Tesla类GPU)之间的API。 它提供对Mellanox HCA读/写对等内存数据缓冲区的访问权限,因此,它允许基于RDMA的应用程序通过RDMA互连使用对等设备的计算能力,而无需将数据复制到主机内存。
[RDMA Aware Networks编程用户手册] RDMA Aware Networks编程用户手册,RDMA Aware Networks编程用户手册,很棒的文档,它解释了如何使用RDMA verbs 接口函数,例如ib_create_qp(),ib_create_cq(),ib_post_send()等。 远程直接内存访问(RDMA)提供从一台主机的内存(存储或计算)到另一台主机的内存的直接内存访问,而无需涉及远程操作系统和CPU,从而以更低的延迟,更低的CPU负载和更高的

评论列表 共有 0 条评论

暂无评论

微信捐赠

微信扫一扫体验

立即
上传
发表
评论
返回
顶部