上次笔记我们介绍过迈络思品牌的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版本。
三种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