本章节用于介绍如何验证当前容器实例是否支持 RDMA 网络。目前主流的训练容器镜像是基于 Ubuntu(下文的 Ubuntu 版本为 22.04) 构建的,故本章节主要以 Ubuntu 为例进行验证。

前提条件

  • 容器实例状态为运行中

  • 选择华北 2 区、Super H800、GPU 为 NVIDIA Super H800 80G * 8 的资源。

步骤一:查看镜像系统版本信息

  1. 登录容器实例后台

  2. 执行如下命令,查看系统版本信息。

    cat /etc/os-release

    回显示例:

    PRETTY_NAME="Ubuntu 22.04.3 LTS"
    NAME="Ubuntu"
    VERSION_ID="22.04"
    VERSION="22.04.3 LTS (Jammy Jellyfish)"
    VERSION_CODENAME=jammy
    ID=ubuntu
    ID_LIKE=debian
    HOME_URL="https://www.ubuntu.com/"
    SUPPORT_URL="https://help.ubuntu.com/"
    BUG_REPORT_URL="https://bugs.launchpad.net/ubuntu/"
    PRIVACY_POLICY_URL="https://www.ubuntu.com/legal/terms-and-policies/privacy-policy"
    UBUNTU_CODENAME=jammy

步骤二:准备验证环境

  1. 登录容器实例后台。

  2. 执行如下命令,安装软件测试包。

    apt update && apt install -y infiniband-diags
  3. 等待安装完成,执行如下命令,查看网卡名称和速率。

    ibstatus

    回显示例如下,返回结果中各网卡速率(rate)均为 400 Gb/sec 符合预期。

    Infiniband device 'mlx5_0' port 1 status:
    	default gid:	 fe80:0000:0000:0000:58a2:e103:00c0:51fe
    	base lid:	 0x4e
    	sm lid:		 0x59
    	state:		 4: ACTIVE
    	phys state:	 5: LinkUp
    	rate:		 400 Gb/sec (4X NDR)
    	link_layer:	 InfiniBand
    
    Infiniband device 'mlx5_1' port 1 status:
            default gid:     fe80:0000:0000:0000:a088:c203:0012:59fc
            base lid:        0x4c
            sm lid:          0x59
            state:           4: ACTIVE
            phys state:      5: LinkUp
            rate:            400 Gb/sec (4X NDR)
            link_layer:      InfiniBand
    ... ...
  4. 执行如下命令,查看 RDMA 相关库是否安装。

    dpkg -l perftest ibverbs-providers libibumad3 libibverbs1 libnl-3-200 libnl-route-3-200 librdmacm1

    若返回结果中提示 dpkg-query: no packages found matching xxxxx,则说明有部分 RDMA 相关库未安装,则需执行如下命令,进行安装。

    apt update && apt install -y perftest ibverbs-providers libibumad3 libibverbs1 libnl-3-200 libnl-route-3-200 librdmacm1
  5. 等待安装完成,再此执行如下命令,检查软件安装情况。

    dpkg -l perftest ibverbs-providers libibumad3 libibverbs1 libnl-3-200 libnl-route-3-200 librdmacm1

    若返回结果如下,则说明 RDMA 相关库均已安装完成。

    Desired=Unknown/Install/Remove/Purge/Hold
    | Status=Not/Inst/Conf-files/Unpacked/halF-conf/Half-inst/trig-aWait/Trig-pend
    |/ Err?=(none)/Reinst-required (Status,Err: uppercase=bad)
    ||/ Name                    Version      Architecture Description
    +++-=======================-============-============-===========================================================
    ii  ibverbs-providers:amd64 39.0-1       amd64        User space provider drivers for libibverbs
    ii  libibumad3:amd64        39.0-1       amd64        InfiniBand Userspace Management Datagram (uMAD) library
    ii  libibverbs1:amd64       39.0-1       amd64        Library for direct userspace use of RDMA (InfiniBand/iWARP)
    ii  libnl-3-200:amd64       3.5.0-0.1    amd64        library for dealing with netlink sockets
    ii  libnl-route-3-200:amd64 3.5.0-0.1    amd64        library for dealing with netlink sockets - route interface
    ii  librdmacm1:amd64        39.0-1       amd64        Library for managing RDMA connections
    ii  perftest                4.4+0.37-1   amd64        Infiniband verbs performance tests
    说明

    版本号无需与此示例一致。

步骤三:验证是否支持 RDMA

单机验证方法

  1. 登录容器实例后台。

  2. 执行如下命令,启动网卡性能测试。

    ib_write_bw -d mlx5_0 &

    回显示例:

    ************************************
    * Waiting for client to connect... *
    ************************************
    • mlx5_0 为网卡设备名称,即执行 ibstatus 命令返回结果中存在的设备名。

  3. 继续执行如下命令,验证 RMDA 网络性能。

    ib_write_bw -d mlx5_0 127.0.0.1 --report_gbits

    回显示例:

    ---------------------------------------------------------------------------------------
                        RDMA_Write BW Test
     Dual-port       : OFF		Device         : mlx5_0
     Number of qps   : 1		Transport type : IB
     Connection type : RC		Using SRQ      : OFF
     PCIe relax order: ON
     ibv_wr* API     : ON
     TX depth        : 128
     CQ Moderation   : 1
     Mtu             : 4096[B]
     Link type       : IB
     Max inline data : 0[B]
     rdma_cm QPs	 : OFF
     Data ex. method : Ethernet
    ---------------------------------------------------------------------------------------
    ---------------------------------------------------------------------------------------
                        RDMA_Write BW Test
     Dual-port       : OFF		Device         : mlx5_0
     Number of qps   : 1		Transport type : IB
     Connection type : RC		Using SRQ      : OFF
     PCIe relax order: ON
     ibv_wr* API     : ON
     CQ Moderation   : 1
     Mtu             : 4096[B]
     Link type       : IB
     Max inline data : 0[B]
     rdma_cm QPs	 : OFF
     Data ex. method : Ethernet
    ---------------------------------------------------------------------------------------
     local address: LID 0x0e QPN 0x5b59 PSN 0xb3d538 RKey 0x0062b9 VAddr 0x007f0253d3f000
     local address: LID 0x0e QPN 0x5b58 PSN 0x209b9a RKey 0x0050b8 VAddr 0x007fa5c92f5000
     remote address: LID 0x0e QPN 0x5b58 PSN 0x209b9a RKey 0x0050b8 VAddr 0x007fa5c92f5000
     remote address: LID 0x0e QPN 0x5b59 PSN 0xb3d538 RKey 0x0062b9 VAddr 0x007f0253d3f000
    ---------------------------------------------------------------------------------------
     #bytes     #iterations    BW peak[MB/sec]    BW average[MB/sec]   MsgRate[Mpps]
    ---------------------------------------------------------------------------------------
     #bytes     #iterations    BW peak[Gb/sec]    BW average[Gb/sec]   MsgRate[Mpps]
    Conflicting CPU frequency values detected: 932.784000 != 800.000000. CPU Frequency is not max.
     65536      5000             371.22             324.70 		   0.619322
    ---------------------------------------------------------------------------------------
     65536      5000             371.22             324.70 		   0.619322
    ---------------------------------------------------------------------------------------

多机验证方法

该验证方式需要两个容器实例进行验证,故所有实例均需参考前文进行环境准备。

  1. 待所有实例均准备完成后。

  2. 登录其中一台容器实例(实例 A),执行如下命令,启动网卡性能测试。

    ib_write_bw -d mlx5_0 -x 3

    回显示例:

    ************************************
    * Waiting for client to connect... *
    ************************************
  3. 登录另外一台容器实例(实例 B),执行如下命令,验证 RMDA 网络性能。

    ib_write_bw -d mlx5_0 -x3 <HOST_A_IP> --report_gbits
    • 其中,<HOST_A_IP> 为实例 A 的内网 IP 地址,需根据实际情况进行修改,可在容器实例列表页内查看。