RDMA网卡协议配置以及网络性能测试方法

上次笔记我们介绍过迈络思品牌的RDMA网卡驱动的安装,这里我们来就学习并记录下RDMA网卡的配置,之前的笔记我们可以查看:https://sulao.cn/post/977.html

之前是到重启openibd服务来加载新的驱动程序,这样就可以加载需要的mod到内核中,注意我们需要设置开机启动

/etc/init.d/openibd restart
Unloading HCA driver: [ OK ] Loading HCA driver and Access Layer: [ OK ]

可以使用ibv_devinfo或者ibstat查看网卡状态,网卡模式查看link_layer是IB协议模式,State是Active状态说明网线插好了。

RDMA网络一共有三种协议,分别是Infiniband、RoCE(RDMA over Converged Ethernet)、iWARP,其中RoCE协议有两个版本分别是v1和v2版本。

v2-e7f00cfbe9c492dae9546effdd72ea32_r.png

三种RDMA网络的特点总结如下:

InfiniBand:设计之初就考虑了 RDMA,从硬件级别保证可靠传输,提供更高的带宽和更低的时延。但是成本高,需要支持IB网卡和交换机。

RoCE:基于 Ethernet 做 RDMA,消耗的资源比 iWARP 少,支持的特性比 iWARP 多。可以使用普通的以太网交换机,但是需要支持RoCE的网卡。

iWARP:基于TCP的RDMA网络,利用TCP达到可靠传输。相比RoCE,在大型组网的情况下,iWARP的大量TCP连接会占用大量的内存资源,对系统规格要求更高。可以使用普通的以太网交换机,但是需要支持iWARP的网卡。

IB协议也有两种模式,分别是IB和IP over IB两种模式,他们的区别是后者需要配置IP

1.IB模式

可以使用iblinkinfo查看网络拓扑状态,如果有两个IB节点可以使用ibping命令进行网络测试,该方式仅限IB协议下的IB模式

可以在节点1启动以下命令

ibping -S -C mlx5_0

在节点2启动以下命令

ibping -f  -C mlx5_0 -L 1  -c 10

IB模式目前没有找到相关的性能测试方法,只有带宽和延迟相关的测试工具和方法。

参数解释

-c 10的意思是发送10个packet之后停止
-f 是flood destination
-C 是CA,来自ibstat的输出
-P 是端口号,来自服务器端运行ibping命令时指定的-P 参数值.
-L 是Base lid,来自服务器端运行ibping命令时的base lid(参考ibstat)

2.IP over IB模式

这种模式测试可以直接通过ping命令进行测试,测试前需要先在两个节点进行IP的配置。

ifconfig ib0 192.168.1.2/24
route add default gw 192.168.1.1 dev ib0

如果需要删除可以使用以下命令

ip addr del 192.168.1.2/24 dev ib0
route del default gw 192.168.1.1 dev ib0

注意,添加网关以后节点可能无法上网,节点2同样配置另外一个IP,可以进行后续测试

性能测试方面可以直接使用mlnx_tune命令进行性能瓶颈的检查

mlnx_tune -r
mlnx_tune -p HIGH_THROUGHPUT #网络调优

测试带宽方面可以使用iperf工具,注意IP over IB模式的使用iperf测试的仅仅只是RDMA带宽

节点1启动iperf服务端

iperf -s

节点2启动iperf客户端进行测试,发送5个连接线程

iperf -c 192.168.1.2 -P 5

一般RDMA网络建议使用qperf进行性能方面的测试,这个工具是支持RDMA网卡的各种协议和指标的

qperf 192.168.1.2 ud_lat ud_bw rc_rdma_read_bw rc_rdma_write_bw uc_rdma_write_bw tcp_bw tcp_lat udp_bw udp_lat
ud_lat:
    latency  =  4.15 us
ud_bw:
    send_bw  =  10.1 GB/sec
    recv_bw  =  10.1 GB/sec
rc_rdma_read_bw:
    bw  =  12 GB/sec
rc_rdma_write_bw:
    bw  =  12 GB/sec
uc_rdma_write_bw:
    send_bw  =  12 GB/sec
    recv_bw  =  12 GB/sec
tcp_bw:
    bw  =  4.45 GB/sec
tcp_lat:
    latency  =  8.36 us
udp_bw:
    send_bw  =  2.86 GB/sec
    recv_bw  =  2.86 GB/sec
udp_lat:
    latency  =  7.35 us

上述列的通信协议性能指标说明:

ud_lat:使用UD(不可靠数据报)协议发送和接收消息的延迟为4.15微秒。
ud_bw:使用UD协议发送和接收消息的带宽为10.1 GB / 秒,约合80Gb/s。
rc_rdma_read_bw:使用RC(可靠连接)协议执行远程直接内存访问(RDMA)读取的带宽为12 GB / 秒,约合 96Gb/s。
rc_rdma_write_bw:使用RC协议执行RDMA写入的带宽为12 GB / 秒。
uc_rdma_write_bw:使用UC(不可靠连接)协议执行RDMA写入的带宽为12 GB / 秒。
tcp_bw:使用TCP(传输控制协议)协议发送和接收数据的带宽为4.45 GB / 秒 ,约合35.6Gb/s。
tcp_lat:使用TCP协议发送和接收数据的延迟为8.36微秒。
udp_bw:使用UDP(用户数据报协议)协议发送和接收数据的带宽为2.86 GB / 秒, 约合22.88Gb/s。
udp_lat:使用UDP协议发送和接收数据的延迟为7.35微秒。

接着还有一些RDMA自带的测试工具,ib_send_bw是用来测试带宽,ib_send_lat是用来做延迟测试的

ib_send_bw测试,如果需要显示gb单位需要两端添加--report_gbits参数

节点1启动服务端

ib_send_bw -a -d mlx5_0 -i 1

节点2启动客户端测试命令

ib_send_bw -a -d mlx5_0 -i 1 192.168.1.2

延迟测试命令和带宽测试基本一致,ib_send_bw换成ib_send_lat

另外也可以使用mst进行网卡的管理

mst start #开启
mst status #查看状态,可以查看打到mst管理的设备

查看当前网卡模式,/dev/mst/mt4119_pciconf0这个设备名字是通过mst status获取到的

mlxconfig -d /dev/mst/mt4119_pciconf0 q |grep  LINK_TYPE_P
         LINK_TYPE_P1                                IB(1)

这里看到1,所以是IB模式

如果需要切换到以太网模式可以使用以下命令

mlxconfig -d /dev/mst/mt4119_pciconf0 set LINK_TYPE_P1=2
Device #1:
----------
Device type:    ConnectX5
Name:           MCX556A-ECA_Ax
Description:    ConnectX-5 VPI adapter card; EDR IB (100Gb/s) and 100GbE; dual-port QSFP28; PCIe3.0 x16; tall bracket; ROHS R6
Device:         /dev/mst/mt4119_pciconf0
Configurations:                                      Next Boot       New
         LINK_TYPE_P1                                IB(1)           ETH(2)

这样就是2,切换到了以太网模式

切换完以后需要重启服务器

reboot

启动好以后可以查看网卡对应关系

lspci |grep Mellanox
lshw -class network -businfo

找到对应的网络接口,我们需要给两个节点配置IP,然后测试同IB协议的IP over IB模式

也可以使用cma_roce_mode命令查看当前RDMA网卡协议

cma_roce_mode -d mlx5_0
#配置网卡支持roce v2
cma_roce_mode -d mlx5_0 -m 2
#配置网卡支持roce v1
cma_roce_mode -d mlx5_0 -m 1


内容版权声明:除非注明,否则皆为本站原创文章。

转载注明出处:https://sulao.cn/post/982.html