• Mellanox IB卡驱动的安装和小记录


    centos8.2 + CX354A卡为例

    驱动:

    系统默认自带核内驱动【INBOX】:插上卡开机lspci -k 就能看到对应的卡已经有mlx4_core这样的驱动加载了,这个是内核自带的驱动,对于一般以太网卡或者使用系统自带的IB驱动和上层软件栈的情况下,尤其是以太网卡,基本上就足够了。

    RHEL/CENTOS自带驱动和debug工具空了再研究,mellanoxOFED驱动包也带了不少Mellanox版本的。

    Mellanox OFED驱动:

    OFED 是openfabrics的一个软件,

    Index of /OFEDhttps://downloads.openfabrics.org/OFED/根据官网的说明是用于构建IB网络,iWARP或者RoCE计算机集群用的软件堆栈.

    Mellanox官网的说明是他这个是mellanox版的OFED软件栈。

    Linux InfiniBand DriversMellanox OpenFabrics Enterprise Distribution for Linux (MLNX_OFED)https://network.nvidia.com/products/infiniband-drivers/linux/mlnx_ofed/CX354A属于ConnectX-3,驱动版本需要选OFED 5.1以下的版本。

    白嫖下mellanox官网的图片

    整个软件堆栈分为几个层:

    底层mlx4 VPI Driver

    • 主要包含mlx4_core 设备初始化,固件命令处理,资源控制
    •  mlx4_ib IB接口驱动 
    • mlx4_en 以太驱动接口 
    • mlx5_core 这个里面包含了以太接口,所以对mlx5的卡驱动来说,就没有mlx5_en模块了,只有mlx5_ib模块。

    中间层

    • 主要是管理接口MAD ,
    • 连接管理接口CM,
    • 子网管理接口SA,

    运行在内核态,暴露接口给用户态程序,management interface (MAD), connection manager (CM) interface, and Subnet Administrator (SA) interface

    上层协议

    • IP over IB (IPoIB)
    •  iSCSI Extensions for RDMA (iSER)
    • SCSI RDMA Protocol (SRP)
    • User Direct Access Programming Library (uDAPL)
    • MPI
    • InfiniBand Subnet Manager
    • Diagnostic Utilities
    • Mellanox Firmware Tools

    再嫖一张Mellanox官网的图回顾一下

    其他使用方式备忘

    • 卡驱动加载的IB还是EN模式还是说自动,可以设置mlx4_core驱动参数port_type_array  
    • MLNX_OFED驱动安装完后会起一个openibd服务,用于初始化mellanox的IB卡相关驱动和设置。
    • 对于原生支持IB RDMA 的MPI并行计算,直接走IB通信;对于原有支持IP网络的程序,可以周IPoIB;对于存储类,可以通过SRP或者iSER支持。所以实际要看是什么应用场景才能来选择具体怎么使用IB卡。

    几个工具:

    • ibstat    列出IB卡的 Node GUID IB卡上端口的port guid
    • ibstatus   列出IB卡端口的GUID,链路状态以及速度和链路协议(IB还是以太)
    • ibv_devices 列出IB卡和对应的GUID
    • ibv_devinfo  列出IB卡的固件版本,GUID ,VID ,PID ,board id 链路状态类型以及MTU
    1. [root@DESKTOP-81TB2NR init.d]# ibstatus
    2. Infiniband device 'mlx4_0' port 1 status:
    3. default gid: fe80:0000:0000:0000:e41d:2d03:00b4:cd51
    4. base lid: 0x0
    5. sm lid: 0x0
    6. state: 1: DOWN
    7. phys state: 2: Polling
    8. rate: 10 Gb/sec (4X)
    9. link_layer: InfiniBand
    10. Infiniband device 'mlx4_0' port 2 status:
    11. default gid: fe80:0000:0000:0000:e41d:2d03:00b4:cd52
    12. base lid: 0x0
    13. sm lid: 0x0
    14. state: 1: DOWN
    15. phys state: 2: Polling
    16. rate: 10 Gb/sec (4X)
    17. link_layer: InfiniBand

    我这张卡不知道为什么,插到x16的PCIE槽位死活只能配置为X4的,dmesg里面看驱动加载的时候设备初始化也是这个速度,不知道是二手卡问题还是机器BIOS问题。40Gb变10Gb了.....,空了再研究吧。

    其他功能测试,未完待续

    X鱼买的两张卡,另外一张插家里的另外一台老电脑互联了下,PCIE x16的插槽也是PCIE的X4,不知道X鱼上架的问题还是我电脑的问题,关键老电脑还是PCIE2.0的。

    CX354A有两种模式可以选,分别是IB模式和以太网模式,卡型号不同的后缀代表支持不通速率,实际型号可以查用户手册。我买这两张IB模式是40Gb,以太网模式是10Gb.

    默认都是自动,一般还是建议手工配置,linux下用命令,windows下直接在设备,管理器里面配置。

    以太模式比较好理解,配置好后,配置好对应的IP地址就可以。

    IB模式配置好后,无论是windows还是linux,如果安装了OFED驱动,都会生成IPoIB的逻辑网卡,配置好IP地址后实际底层链路还是IB,默认双机对连情况下,IB链路不会自动连接上,这时候需要在其中一台机器启动opensm服务,用于IB子网发现和管理。但如果有IB交换机,交换机会充当子网管理角色其余节点不用启动opensm服务opensm可以划分类似以太VLAN的子网,默认不划分情况下,直接启动服务就可以(注意服务绑定的端口,默认绑定机器IB卡的第一个端口,如果有多个IB口,可以启动多个opensm,可以配置opensm绑定的GUID,IB端口靠GUID来辨识某个端口,可以理解为以太网的MAC一样的功能就行)

    在家里的台式机实际跑了下IB模式下,IPoIB网络贷款,iperf3测试,实际最大跑到13Gb,无论如何也上不去了,这个离40Gb有点远,原因在于其中一台老机器是PCIE2.0的,再加上只能x4,PCIE就只有20Gb的带宽,至于为啥跑不满20Gb,除去一部分协议包头开销,电脑主板的质量也有关系,后面有机器了或者有时间了再计算下协议包头开销再看吧。

    后续有时间再测试下IB网络和一以太网络的延迟试试。

    再有空跑下容器和roce,不知道环境全不全。

    CX354A卡的用户手册

    https://network.nvidia.com/related-docs/user_manuals/ConnectX-3_VPI_Single_and_Dual_QSFP_Port_Adapter_Card_User_Manual.pdf

    IB链路的速度模式 :

    SDR, QDR, FDR10, FDR

    SDR (2.5Gb/s per lane),
    DDR (5Gb/s per lane),
    QDR (10Gb/s per lane),
    FDR10 (10.3125Gb/s per lane)
    不过100G,200G的新卡链路又提升了。

    这些速度和链接线以及模块有关,对应的卡规定了对应的连接头类型,

    MCX354A-QCBT  手册就写了QDR ,连接投是QSFP+,4lane的SFP+.(4*10Gb),咸鱼买线的时候就得问好,虽然是QSFP+的,买40Gb的线就行,对MCX354A-FCBT FDR的 56Gb的就得买56G的线。

    官网文档

    Introduction - MLNX_OFED v5.0-2.1.8.0 - NVIDIA Networking Docshttps://docs.nvidia.com/networking/display/OFEDv502180/Introduction

  • 相关阅读:
    LC-396. 旋转函数(前缀和+滑动窗口、动态规划)
    vue动态路由切换刷新保留历史路由搜索条件数据
    【C++】list常用接口
    门店如何设置多个联系电话和营业时间
    微信小程序display常用属性和子元素排列方式介绍
    浅谈关于数据仓库的理解,聊聊数据仓库到底是什么?
    今年面试难度有点大
    代码随想录 | Day 60(完结) - LeetCode 84. 柱状图中最大的矩形
    隐藏微信网页右上角的按钮、在微信网页中获取用户的网络状态,支付等
    java毕业生设计医院门诊分诊系统计算机源码+系统+mysql+调试部署+lw
  • 原文地址:https://blog.csdn.net/chenqioulin/article/details/126390350