【RDMA】infiniband网卡安装|InfiniBand 连接和状态诊断工具|测试RDMA网卡是否正常工作

目录

1. 基础知识

一、诊断工具--翻译中

2. 驱动安装

3.配置IP

4. 性能测试

5. 其他问题

RDMA 、InfiniBand、IB卡、IB驱动的关系

问题记录 


原文:infiniband网卡安装、使用总结 - 山河故人abin - 博客园 

最近多次安装、使用infiniband网卡,每次都要到处寻找相关资料,所以决定做此总结,方便查找。

1. 基础知识

首先,得了解什么是RDMA,贴几个资料:

深入浅出全面解析RDMA

RDMA技术详解(一):RDMA概述

RDMA技术详解(二):RDMA Send Receive操作

然后得了解如何实现,这两个可以有个初步了解:

RDMA编程:事件通知机制

RDMA read and write with IB verbs

编程过程,真正有用的还是官方的手册:

RDMA Aware Networks Programming User Manual

mellanox官方社区能找到很多你需要的东西:

Mellanox Interconnect Community

也下了个中文版,但我感觉英文版看着更好。中文版下载:

百度云: 百度网盘 请输入提取码 提取码: rm8i

蓝奏云:https://wwa.lanzous.com/iXUd6jm7qla 密码: 4aps

RDMA编程入门可参考的项目:

https://github.com/tarickb/the-geek-in-the-corner

https://github.com/jcxue/RDMA-Tutorial

一、诊断工具--翻译中

摘自《Mellanox_OFED_Linux_User_Manual_v4_1》

本章介绍的诊断工具提供了fabric中IB设备的连接和状态调试方法。

工具描述
ibdump

测试流入和流出Mellanox Technologies ConnectX系列适配器InfiniBand端口的InfiniBand通信。

请注意以下几点:

  • 虚拟功能(SR-IOV)不支持ibdump。
  • 所有HCA均支持Infiniband流量嗅探。
  • 仅在Connect-X3和Connect-X3 Pro卡上支持以太网和RoCE嗅探。

dump出来的文件,可以通过Wireshark工具加载进行图形流量分析。

以下描述了本地HCA(适配器)嗅探的工作流程:

  • 1.运行ibdump 并给定运行选项
  • 2.运行进行IB通信的应用程序
  • 3.停止ibdump(CTRL-C)或等待数据缓冲区填充(在--mem-mode中)
  • 4.打开Wireshark并加载生成的文件。要下载适用于Linux或Windows环境的Wireshark,请访问www.wireshark.org。

注意:尽管ibdump是Linux应用程序,但是可以在任一操作系统上分析生成的.pcap文件。 [mlx4]为了使ibdump与RoCE一起使用,必须启用Flow Steering。

启用步骤:

1.将以下内容添加到/etc/modprobe.d/mlnx.conf文件:options mlx4_core log_num_mgm_entry_size = -1

2.重新启动驱动程序。

注意:如果将HCA的端口中有一个配置为InfiniBand,则ibdump要求IPoIB DMFS是使能的。有关更多信息,请参阅第3.1.12.1节,启用/禁用流向,第103页。有关更多信息,请参阅工具的手册页。

dump_fts

为子网的ibnetdiscover扫描中发现的每个交换机转储表。dump文件格式与使用-R file -U /path/to/dump-file语法加载到OpenSM兼容。

Dumps tables for every switch found in an ibnetdiscover scan of the subnet. The dump file format is compatible with loading into OpenSM using the -R file -U /path/to/dump-file syntax.
For further information, please refer to the tool’s man page.

ibaddr

默认情况下,可以用来显示指定端口或本地端口的LID和GID地址。这个实用程序可以用作简单的地址解析器。
要了解更多信息,请参考该工具的手册页。

Can be used to show the LID and GID addresses of the specified port or the local port by default. This utility can be used as simple address resolver.
For further information, please refer to the tool’s man page.

ib_send_bw

测试两台机器之间的SEND带宽

一个充当服务器,另一个充当客户端。服务器从客户端接收数据包,它们都计算操作的吞吐量。该测试支持双向功能(双向功能可同时发送和接收),mtu大小的更改,tx大小,迭代次数,消息大小等。使用“ -a”可提供所有消息大小的结果。
有关更多信息,请参阅该工具的手册页。

Calculates the BW of SEND between a pair of machines. One acts as a server and the other as a client. The server receive packets from the client and they both calculate the throughput of the operation. The test supports features such as Bidirectional, on which they both send and receive at the same time, change of mtu size, tx size, number of iteration, message size and more. Using the "-a" provides results for all message sizes.
For further information, please refer to the tool’s man page.

rpingsoftRoCE连通性测试

服务端IP为:192.168.1.10,在服务端开启RDMA
rping -s -a 192.168.1.10 -v -C 10
出现的等待窗口,

客户端IP为:192.168.1.34,按照同样的方式安装RDMA(因为rping的命令需要使用以上软件的安装才能生成)
rping -c -a 192.168.1.10 -v -C 10
 

2. 驱动安装

  1. 下载驱动,进入网站选择相应系统和软件版本,archive versions这里可以下载旧版本驱动

    NVIDIA Mellanox InfiniBand and VPI Software | NVIDIA

    ubuntu16.04平台5.0-2.1.8.0的下载链接为:

    wget http://content.mellanox.com/ofed/MLNX_OFED-5.0-2.1.8.0/MLNX_OFED_LINUX-5.0-2.1.8.0-ubuntu16.04-x86_64.iso

    版本5.1之后链接细微变化,ubuntu18.04平台5.1-2.5.8.0的下载链接为:

    wget https://www.mellanox.com/downloads/ofed/MLNX_OFED-5.1-2.5.8.0/MLNX_OFED_LINUX-5.1-2.5.8.0-ubuntu18.04-x86_64.iso

    其它平台和版本的驱动,可以自己修改。

  2. 挂载或解压,如果下载的iso则挂载,若是tgz就解压,下面是挂载命令:

    sudo mount -o ro,loop MLNX_OFED_LINUX-5.0-2.1.8.0-ubuntu16.04-x86_64.iso /mnt

  3. 安装

    cd /mnt sudo ./mlnxofedinstall

    可能会提示你安装一堆东西,复制,安装就可以了。

    安装成功截图:

  4. 执行以下命令:

    sudo /etc/init.d/openibd restart sudo /etc/init.d/opensmd restart

  5. 查看网卡状态:

    sudo hca_self_test.ofed

    没有 failed 就对了。

    一些其它查看网卡信息的命令:

    ibstat ibstatus ibv_devinfo ibv_devices #查看本主机的infiniband设备 ibnodes #查看网络中的infiniband设备

3.配置IP

见:《linux配置网口IP|RDMA配置IP|ens、eno、enp网口的区别【linux】centOS7配置网口IP|RDMA配置IP|ens、eno、enp网口的区别_bandaoyu的note-CSDN博客

4. 性能测试

  1. 服务端运行:

    ib_send_bw -a -c UD -d mlx4_0 -i 1

    注意,参数 -i 指定端口,在一个网卡有多个网口的时候,需要指定测试的端口,具体哪个端口,通过 ibstatus 可以看到。

  2. 客户端运行:

    ib_send_bw -a -c UD -d mlx4_0 -i 1 172.16.0.102

    最后面的ip地址是服务端infiniband网卡的ip地址。

    1. 其他测试项

https://blog.csdn.net/bandaoyu/article/details/115798045

其他测试工具说明:Mellanox Interconnect Community

测试工具源码:https://github.com/linux-rdma/perftest

5. 其他问题

更换网卡工作模式:

有些网卡,当你安装好驱动后,通过 ibstatus 命令,会出现下面的情况:

可以看到,该网卡现在处于 Ethernet 的工作模式,如果想要切换成infiniband模式,参考如下链接:

Mellanox Interconnect Community

查看当前工作模式:

sudo /sbin/connectx_port_config -s

输入以下命令切换工作模式:

sudo /sbin/connectx_port_config

如果提示如图,说明不支持infiniband模式,否则,就切换成功了,再次使用一下命令可以验证:

sudo /sbin/connectx_port_config -s

不能切换到infiniband工作模式,并不代表不支持RDMA,处于Ethernet模式的网卡使用 RoCE 协议工作。

RDMA 协议:底层可以是以太网( RoCE 或者 iWARP )或者 Infiniband

有些网卡只支持Ethernet(RoCE),不支持Infiniband模式,也就是想从Ethernet切换到Infiniband模式时不能成功,这个要提前了解好。我目前了解到的,Connectx-3只支持Ethernet模式。

Mellanox Interconnect Community

RDMA 、InfiniBand、IB卡、IB驱动的关系
 

1、RDMA 是一种技术(远程直接内存访问技术),如何实现这种技术呢?

2、实现这种技术你可以选择用 Infiniband 协议。(当然你也可以使用其他协议,eg:roce、iwarp)

3、如果你使用 Infiniband 协议,这个协议作为一个新一代网络协议。它必须依靠专门的硬件才能实现。eg:专用INC(网卡)—— IB卡,或者专用交换机。

4、当你在服务器上安装了IB卡之后,你还得安装 IB驱动,才能使用 infiniband 。

原文链接:https://blog.csdn.net/ljlfather/article/details/102930714

其他文章《Infiniband的驱动安装与配置》:Infiniband的驱动安装与配置:https://blog.csdn.net/oPrinceme/article/details/51001849

问题记录 

ceph 的RDMA 连接 RDMAConnectedSocketImpl::activate()  失败。 dmesg 查看到:

402303.425662] QAT: Device not yet ready.
[402318.101625] QAT: Device not yet ready.
[402336.462612] QAT: Device not yet ready.
[402367.537465] QAT: Device not yet ready.
[402393.717441] QAT: Device not yet ready.
[402426.970661] QAT: Device not yet ready.
[402457.179681] QAT: Device not yet ready. 

猜测:osd open dvice之后,虽然TCP 建立连接正常读写了,但是rdma的device还没有ready好。

所以TCP的infiniband->recv_msg(cct, tcp_fd, peer_msg);可以正常读,走过,然后到activate()

RDMA 没有准备好。

void RDMAConnectedSocketImpl::handle_connection() {
……
  int r = infiniband->recv_msg(cct, tcp_fd, peer_msg);
……
    if (!connected) {
      r = activate();
      assert(!r);
    }

……

}

posted on   bdy  阅读(1857)  评论(0编辑  收藏  举报

相关博文:
阅读排行:
· 一个费力不讨好的项目,让我损失了近一半的绩效!
· 清华大学推出第四讲使用 DeepSeek + DeepResearch 让科研像聊天一样简单!
· 实操Deepseek接入个人知识库
· 易语言 —— 开山篇
· CSnakes vs Python.NET:高效嵌入与灵活互通的跨语言方案对比

导航

< 2025年2月 >
26 27 28 29 30 31 1
2 3 4 5 6 7 8
9 10 11 12 13 14 15
16 17 18 19 20 21 22
23 24 25 26 27 28 1
2 3 4 5 6 7 8
点击右上角即可分享
微信分享提示