在企业级实例上使用eRDMA

部分企业级ECS实例支持配置eRDMA,可以实现在不需要修改现有网络架构的情况下,体验超低延迟、大吞吐、高弹性的高性能RDMA网络服务。

使用限制

限制项

说明

地域

支持华北2(北京)、华东2(上海)、华东1(杭州)、华南1(深圳)、华南3(广州)、华北6(乌兰察布)、华南2(河源)

实例规格

支持eRDMA的实例规格如下:

镜像

  • Alibaba Cloud Linux 3(推荐)

  • Alibaba Cloud Linux 2(仅x86系统支持)

  • CentOS 7.9(仅x86系统支持)

  • Ubuntu 18.04/20.04/22.04

  • Anolis OS 8.4 ANCK/8.6 ANCK(仅Arm版本支持)

说明

不同实例规格可选择的镜像范围不同,实际可选择的镜像以购买页面的实际展示为准。

eRDMA设备数量

您可以通过DescribeInstanceTypes返回参数中的EriQuantity的值,查询实例规格支持绑定ERI的最大数量(0表示不支持弹性RDMA接口)。

网络限制

  • 网卡开启弹性RDMA接口后,不支持分配IPv6地址。

  • 两个实例之间通过弹性RDMA通信,通信链路中间不支持跨网元设备(例如负载均衡SLB等)。

  • GPU实例与企业级实例中的eRDMA由于所处工作模式不同,所以GPU实例与企业级实例不能直接通信。如果需要通信,请在企业级实例中参考GPU实例部署eRDMA的方式进行部署(安装eRDMA驱动、OFED驱动,并且为实例绑定弹性RDMA网卡)。具体操作,请参见在GPU实例上配置eRDMA

为企业级实例配置eRDMA

购买实例时配置eRDMA

重要
  • 当支持eRDMA能力的实例的操作系统为Alibaba Cloud Linux、Ubuntu和Anolis OS时,支持在创建实例时自动安装eRDMA驱动并开启弹性RDMA接口,使能eRDMA,免去手动安装的麻烦。

  • 对于不支持安装eRDMA驱动的操作系统或自动安装失败的情况,您可以在实例创建完成后,通过脚本方式或手动方式安装驱动。具体操作,请参见为已有实例配置eRDMA

  • 在购买的实例启动后,eRDMA驱动安装可能需要一段时间,请您耐心等待。

  1. 前往实例购买页

  2. 创建支持ERI的企业级实例。创建过程中需注意以下配置项(其他参数,请参见自定义购买实例):

    • 实例和镜像:选择支持eRDMA的实例规格,并安装eRDMA驱动。

      • 实例:请参见使用限制

      • 镜像:选择公共镜像

      • 扩展程序:选中eRDMA驱动。实例启动过程中会自动安装eRDMA驱动,无需您再手动安装。您在购买Alibaba Cloud Linux操作系统的倚天实例时,还可以选择安装性能加速类扩展程序。更多信息,请参见性能加速扩展程序

        image

        重要

        使用ECS扩展程序功能,需要拥有系统权限策略AliyunECSExtensionsFullAccess,阿里云账号默认拥有该系统权限。如果您的操作账号为RAM用户,需要联系阿里云账号授予RAM用户该系统权限。详细信息,请参见扩展程序

    • 弹性网卡主网卡右侧选择开启弹性RDMA接口,为ECS实例绑定ERI。

      image

      说明

      购买企业级实例时,仅支持为主网卡启用弹性RDMA接口。如果您需要为辅助网卡配置eRDMA,您可以通过控制台或OpenAPI方式为辅助弹性网卡开启RDMA接口。具体操作,请参见弹性RDMA网卡(ERI)

为已有实例配置eRDMA

  • 验证实例eRDMA是否配置正确。

  • 安装eRDMA驱动

    如果您未在创建实例时候选择eRDMA驱动,则实例不会自动安装eRDMA驱动。您需要根据实际情况选择脚本方式或者手动方式安装eRDMA驱动。

    • 脚本方式:默认下载最新且稳定版本的驱动包。

    • 手动方式:可以下载指定版本的驱动包。

    通过脚本一键安装

    • 执行以下命令,下载最新且稳定版本的驱动包。

      curl -O http://mirrors.cloud.aliyuncs.com/erdma/env_setup.sh
    • 执行以下命令,安装刚下载的驱动包。

      sudo /bin/bash env_setup.sh > /var/log/erdma_install.log 2>&1

      执行安装脚本后,脚本会自动帮助您安装eRDMA驱动所需的软件依赖包以及eRDMA驱动,等待安装脚本执行结束即可。

      说明

      如果以脚本方式安装驱动失败,请您检查安装日志,安装日志的具体路径为:/var/log/erdma_install.log

    手动逐步安装

    • 执行以下命令,更新前置软件包

      • Alibaba Cloud Linux 3/CentOS/Anolis OS:

        sudo yum update -y
      • Ubuntu:无需更新,跳过该步骤。

    • 依次执行以下命令,查看最新的kernel包版本和操作系统的内核版本

      rpm -qa | grep kernel  #查看最新的kernel包版本
      uname -r  #查看操作系统的内核版本

      系统返回示例信息如下,表示两者版本一致,无需进行额外操作。若版本不一致,则需要重启实例使其生效。

      image.png

    • 执行以下命令,安装依赖的软件包

      • 对于x86实例,请执行以下操作:

        • Alibaba Cloud Linux 3/CentOS/Anolis OS:

          sudo yum install gcc-c++ dkms cmake kernel-devel kernel-headers libnl3 libnl3-devel
        • Ubuntu:

          sudo apt-get install dkms cmake libnl-3-dev libnl-route-3-dev kernel-headers
      • 对于Arm实例,由于需要基于源码执行构建任务,相关的软件依赖包较多且可能会发生变化,因此可以忽略本步骤,直接执行安装脚本。如果安装脚本失败,脚本会提示您需要安装的软件依赖包,请根据提示完成安装,然后重新执行软件安装即可。

    • 执行以下命令,下载驱动安装包

      • 从内网地址获取软件包

        wget http://mirrors.cloud.aliyuncs.com/erdma/erdma_installer-latest.tar.gz
      • 从公网地址获取软件包

        wget https://mirrors.aliyun.com/erdma/erdma_installer-latest.tar.gz

      这里默认下载最新版本的驱动安装包,您还可以根据实际场景下载指定版本的驱动包。eRDMA不同安装程序包版本的发布信息,请参见为ECS实例安装eRDMA驱动

    • 执行以下命令,解压安装包并进入文件目录

      tar -xvf erdma_installer-latest.tar.gz && cd erdma_installer
    • 执行以下命令,安装驱动

      • 方式一:安装过程需手动确认相关卸载步骤及自动下载步骤

        sudo sh install.sh
      • 方式二:安装过程无需确认过程

        sudo sh install.sh  --batch

      根据返回信息,确认安装结果。

      若系统返回如下信息,则表示安装驱动成功。

      4.png

      若系统返回如下信息,则表示提示安装驱动失败,请按照提示信息操作,完成后重新尝试安装驱动。

      5.png

      说明

      如果您使用的是CentOS 7系统,并且重新安装驱动过程中提示缺少软件包,但您无法通过yum获取到,您可能需要执行yum install -y epel-release命令,先安装epel-release仓库,然后才能获取到对应的软件包。

  • 为已有ECS实例绑定ERI。

    企业级实例,目前仅支持每个实例最多绑定1个ERI。详细信息,请参见使用限制

    • 通过OpenAPI创建开启了ERI的辅助弹性网卡并绑定到实例

      如果您是通过OpenAPI的方式创建并绑定辅助弹性网卡,则操作如下:

      1. 通过OpenAPI创建ERI。

        您可以通过CreateNetworkInterface 创建一个弹性网卡,并设置NetworkInterfaceTrafficMode参数的值为HighPerformance,即创建一个开启了ERI的弹性网卡。

        调用成功后,请记录返回数据中生成的弹性网卡ID(即NetworkInterfaceId对应的返回值)。

      2. 调用AttachNetworkInterface,指定NetworkInterfaceId为上一步返回的网卡ID,指定InstanceId为目标实例ID,即将创建的开启了ERI的弹性网卡绑定到目标实例上。

        重要

        如果您的实例规格支持绑定多个ERI,为了获取最大网络带宽,建议您在绑定时候为每张ERI指定不同的NetworkCardIndex,实现将不同的ERI绑定到不同的通道。详细信息,请参见请求参数

测试实例在eRDMA的写延迟性能

您可以在两台配置了eRDMA的企业级实例上,安装perftest后通过ib_write_lat进行写延迟测试。关于perftest测试,请参见perftest测试集

ib_write_lat常用参数说明

  • -R:表示使用 RDMA CM(Connection Manager)来建立连接。RDMA CM 是一种用于管理 RDMA 连接的协议,它允许在不依赖于全局名称服务的情况下建立连接。

  • -a:这个选项表示运行所有消息大小的测试,从 2 到 2^23 字节。这允许测试不同消息大小对延迟的影响。

  • -F:强制覆盖任何现有连接。这意味着如果之前已经建立了连接,使用 -F 选项会忽略这些连接并强制重新建立新的连接。

  • -s:设置消息交换的大小,默认为 2。

  • -u:设置 QP 超时时间,超时值为 4 微秒 * 2^(<timeout>),默认为 14。

ib_write_lat测试结果延迟数据说明

  • #bytes: 消息大小,测试中使用的payload大小,从2字节到8388608字节不等。不同的消息大小可以帮助您了解不同负载下的性能表现。

  • #iterations: 迭代次数,表示每个消息大小的测试重复了多少次。高迭代次数可以提供更稳定的平均值和统计数据。

  • t_min[usec]: 最小延迟,单位是微秒,表示在所有测量中记录到的最小延迟时间。这个值可以给您一个最佳情况下的网络延迟参考。

  • t_max[usec]: 最大延迟,单位是微秒,表示在所有测量中记录到的最大延迟时间。高的最大延迟可能指示网络中的某些问题或者瞬时的拥塞。

  • t_typical[usec]: 典型延迟,单位是微秒,示在测试中常见的延迟时间。通常是所有测量值的中位数。

  • t_avg[usec]: 平均延迟,单位是微秒,表示所有测量值的平均延迟时间。这个值可以给您一个整体的网络延迟印象。

  • t_stdev[usec]: 延迟的标准差,单位是微秒,表示延迟值的变异程度。较小的标准差意味着延迟比较稳定,而较大的标准差则表示延迟波动较大。

  • 99% percentile[usec]: 99%分位数的延迟,单位是微秒,表示99%的测量值都低于这些值。这些数据点可以帮助您了解极端情况下的延迟表现。

  • 99.9% percentile[usec]: 99.9%分位数的延迟,单位是微秒,表示99.9%的测量值都低于这些值。这些数据点可以帮助您了解极端情况下的延迟表现。

通过综合这些数据,您可以对 RDMA 网络的性能有一个全面的了解,并据此进行网络优化和故障排除。例如,如果您发现在特定消息大小下延迟突然增加,您可能需要检查网络配置或硬件性能是否满足要求。如果您看到延迟波动较大,可能需要进一步调查网络中的拥塞情况或不稳定因素。

环境准备

  1. 准备两台配置了eRDMA(已安装eRDMA软件栈、弹性网卡开启了RDMA接口)的企业级实例,分别作为服务端客户端

  2. 确保网络配置正确,两台服务器之间内网互通。详细信息,请参见ECS实现内网互通

测试步骤

  1. 分别远程连接两台实例。

    具体操作,请参见使用Workbench工具以SSH协议登录Linux实例

  2. 验证并保证两台实例eRDMA配置正确。

    具体操作,请参见验证eRDMA配置的正确性

  3. 在两台实例上,分别执行以下命令,安装perftest测试工具。

    您可以选择开通公网通过官方仓库下载并安装,或者直接通过yum/apt源进行安装。

    通过官方仓库下载并安装

    1. 为ECS实例开通公网,详细信息,请参见为ECS实例开通公网

    2. 访问perftest官方仓库下载并安装perftest工具。

    通过yum/apt源安装

    说明

    不同Linux发行版的软件源中包含的perftest版本可能不一致,在通信时可能存在兼容性问题。建议您通信的实例使用相同的Linux发行版,否则请通过官方仓库下载并安装

    • Alibaba Cloud Linux 3/CentOS/Anolis OS

      sudo yum install perftest -y
    • Ubuntu

      sudo apt install perftest -y
  4. 测试eRDMA网络延迟是否符合预期表现。

    1. 在服务端实例上,执行以下命令,启动 ib_write_lat 作为服务器,监听来自客户端的连接。

      ib_write_lat -R -a -F
    2. 在客户端实例上,执行以下命令,启动 ib_write_lat,连接服务端。

      ib_write_lat -R -a -F <server_ip>

      其中,<server_ip>是服务端ECS实例上绑定的eRDMA的弹性网卡所对应的私有IP地址。获取IP地址的方法,请参见查看IP地址

    3. 查看测试结果。

      客户端测试完成后,ib_write_lat 会输出测试配置信息连接信息以及性能测试结果(延迟相关的统计数据,包括最小、最大、平均延迟等性能指标)。详细信息,请参见ib_write_lat测试结果说明

      image