使用eRDMA

更新时间: 2024-11-21 15:28:15

eRDMA的能力实现需要基于支持eRDMA能力的实例规格,挂载弹性RDMA网卡(ERI),安装eRDMA驱动,从而实现具有大规模RDMA的网络服务能力,体验RDMA带来的超低延迟。

ECS实例使能eRDMA

选择支持eRDMA的实例规格

为ECS实例绑定ERI

您可以在创建实例的时候为主网卡开启弹性RDMA接口,或者在实例创建后为实例绑定开启了弹性RDMA接口的ERI。

  • 购买实例时候为网卡开启弹性RDMA接口

    具体操作,请参见随实例创建ERI

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

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

    1. 通过OpenAPI创建ERI。

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

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

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

      重要

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

为ECS实例安装eRDMA驱动

重要
  • eRDMA驱动软件由阿里云自研,由阿里云提供技术支持。

  • eRDMA驱动的安装可能需要一段时间,请您耐心等待。

  • 驱动程序安装包

    eRDMA不同安装程序包版本的发布信息(按版本由新到旧排序)

    版本

    发布时间

    下载地址

    校验和

    变更内容

    1.4.0

    2024年9月27日

    http://mirrors.cloud.aliyuncs.com/erdma/erdma_installer-1.4.0.tar.gz

    • MD5:77135d946dddc015000c8f3ea4e6c586

    • SHA256:8613d3d81e8eb3b78bf840c37cbe02c79f62631df36cdc8b2c7c101f49f5af29

    优化异构GPU场景下的性能

    1.3.3

    2023年10月09日

    http://mirrors.cloud.aliyuncs.com/erdma/erdma_installer-1.3.3.tar.gz

    • MD5:51ffb06266255139554275bc86fa4caa

    • SHA256:5aad6d006662bd902ef5e913fb97d2a6623aadeeacd06f1c3f1c74cbd1f57ded

    更新最新补丁包

    1.3.2

    2023年09月08日

    http://mirrors.cloud.aliyuncs.com/erdma/erdma_installer-1.3.2.tar.gz

    • MD5:8492016fc96eece6a60687b0e4ea66dd

    • SHA256:89ab265dc9fa8d56f1b2d8b13d7f50032390a265eddb2e04eeee3aa86fd169ce

    更新最新补丁包

    1.3.1

    2023年08月18日

    http://mirrors.cloud.aliyuncs.com/erdma/erdma_installer-1.3.1.tar.gz

    • MD5:b9b90212e6ba49d57b81d3c5d4210deb

    • SHA256:4ebe31760443613f8f61fcdbef7a85b277dabc59039d048898536ea4fe5d8d4a

    允许在驱动侧配置底层的传输模式为强保序。强保序模式下,数据包只能按序提交到内存

    1.3.0

    2023年06月26日

    http://mirrors.cloud.aliyuncs.com/erdma/erdma_installer-1.3.0.tar.gz

    • MD5:2da0c65643b5e2ffb61d75e1b5e5a7ab

    • SHA256:cce03aac0e07d0890884c35ad4f10e9d15f587535d788c8fc97ea268312ad4a9

    • 注册MR时,支持多级页表

    • 驱动支持IPv6特性(完整的IPv6需要底层硬件同时支持)

    • 支持Ubuntu 22.04

    • 更新最新补丁包

    1.2.3

    2023年05月30日

    http://mirrors.cloud.aliyuncs.com/erdma/erdma_installer-1.2.3.tar.gz

    • MD5:7496a6324f3872469d7194c2e234b19f

    • SHA256:16c2de0d90da6906db91c2e2469aaad9e24131c44ce52b9464036f1c3747f8a2

    更新最新补丁包

    1.2.2

    2023年05月04日

    http://mirrors.cloud.aliyuncs.com/erdma/erdma_installer-1.2.2.tar.gz

    • MD5:f449d3961a41ff6a97a53cfa29e20d6c

    • SHA256:11fdb4b3c778762ad0bdf2d0327008aa2ecb22dc508c9f9fae3568b41ae5462b

    支持Ubuntu 22.04

    1.2.1

    2023年04月04日

    http://mirrors.cloud.aliyuncs.com/erdma/erdma_installer-1.2.1.tar.gz

    • MD5:e080103934da76ce83924da789aecece

    • SHA256:be3a89e57143d7544cf968052250df92f911aebb035f07b06ebeb8c5f13bf976

    更新最新补丁包

    1.2.0

    2023年03月09日

    http://mirrors.cloud.aliyuncs.com/erdma/erdma_installer-1.2.0.tar.gz

    • MD5:c8d440a6e35ec6d2aaf1a568affea876

    • SHA256:d484997e28e29f862dc580c112b55b389a00faf88dc6aa89eea588ee1369a8ca

    • 支持兼容模式

    • 更新最新补丁包

    1.1.0

    2023年01月16日

    http://mirrors.cloud.aliyuncs.com/erdma/erdma_installer-1.1.0.tar.gz

    • MD5:1fea69d819919a77384f902213eb681e

    • SHA256:176c3bb35d5584e8c8e43eba9b1824b8cb2b43a19d802c4e469363ed8e33fea6

    更新最新补丁包

  • 安装eRDMA驱动

    您可以选择在购买实例的时候勾选安装eRDMA驱动,或者为已购买的支持eRDMA的实例手动安装eRDMA驱动。

  • eRDMA内核驱动

    完成eRDMA驱动安装后,您可以通过eadm ver,查询eRDMA的内核驱动版本。目前最新版本1.4.0的安装程序包,对应的erdma内核驱动版本为0.2.37。

    image

验证eRDMA配置的正确性

ibv_devinfo 可以帮助用户验证RDMA功能是否正常工作。通过执行 ibv_devinfo 命令,用户可以获取到设备的硬件属性、端口状态、支持的功能等信息。如果RDMA相关组件已经正常运行,至少会有一个端口的状态是 PORT_ACTIVE,这表明RDMA功能已经激活并且可以正常使用。详细信息,请参见测试RDMA 操作

ibv_devinfo 命令还可以通过 -v 参数来输出更详细的设备信息,包括设备的硬件版本、支持的最大消息大小、队列数、内存窗口大小等。这些信息对于诊断和优化RDMA网络性能非常有用。

您可以通过在实例上执行ibv_devinfo验证实例eRDMA是否配置正确:

  • eRDMA配置正确:为实例的网卡开启弹性RDMA接口并且已正确安装eRDMA驱动。

    说明
    • 如果您的实例支持且绑定了多张弹性RDMA网卡,则实例的每个eRDMA设备的端口state均为PORT_ACTIVE时,表示eRDMA网卡状态正常。

    • 如果eRDMA设备的端口stateinvalid state时,表示该eRDMA网卡状态异常,建议先检查辅助网卡是否配置正确。例如,通过执行ifconfig命令查看所有网卡配置是否存在,所有网卡IP地址是否存在。详细信息,请参见配置辅助弹性网卡

    image

  • 实例未绑定ERI:实例已安装eRDMA驱动,但是网卡未开启弹性RDMA接口。您需要为ECS实例绑定ERI

    image

  • 未正确安装eRDMA所需驱动程序:实例网卡开启弹性RDMA接口,但是未正确安装eRDMA驱动。您需要为ECS实例安装eRDMA驱动

    image

您还可以使用diagnose工具对eRDMA的基础功能进行诊断测试,详细信息,请参见使用diagnose工具检测eRDMA

eRDMA网络性能测试

perftest 是一个用于性能测试的工具集,它提供了多种测试选项,可以针对不同的网络操作进行测试,比如发送、接收、读写等。perftest允许用户测量不同RDMA操作的性能,如延迟和带宽。这些测试通常用于评估RDMA设备和网络的性能,帮助用户优化配置或解决潜在问题。更多信息,请参见perftest相关文档

perftest测试集

perftest包括如下测试,您可以根据实际需求,通过perftest进行网络带宽测试或网络延迟测试,以评估网络的性能。

RDMA操作

带宽测试程序

延迟测试程序

Send

ib_send_bw(发送带宽测试)

ib_send_lat(发送延迟测试)

RDMA Read

ib_read_bw(读带宽测试)

ib_read_lat(读延迟测试)

RDMA Write

ib_write_bw(写带宽测试)

ib_write_lat(写延迟测试)

RDMA Atomic

ib_atomic_bw(原子带宽测试)

ib_atomic_lat(原子延迟测试)

Native Ethernet

raw_ethernet_bw(原生以太网带宽测试)

raw_ethernet_lat(原生以太网延迟测试)

安装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

使用perftest示例

您可以将每一个测试程序作为一个独立的命令执行,比如ib_send_lat运行发送延迟测试。

在使用 perftest 进行性能测试时,设置正确的测试参数是非常重要的,通过合理配置这些参数,您可以更精确地控制 perftest 的行为,以满足特定的测试需求,并获取更准确的测试结果。以下是一些关键的参数设置指南,可以帮助您更有效地配置和运行 perftest

常用测试参数说明

您可以通过<子命令> -h 查看各类测试具体的参数说明。

测试类别

测试参数

延迟测试

  • -C, --report-cycles:以 CPU 周期为单位报告时间,这对于精确测量延迟非常有用。

  • -H, --report-histogram:打印所有结果(默认只打印摘要结果),这可以帮助您了解数据的分布情况。

  • -U, --report-unsorted:打印未排序的结果(默认已排序),这有助于分析数据的原始分布

带宽测试

  • -b, --bidirectional:测量双向带宽(默认为单向),这对于评估网络的双向传输能力很重要。

  • -N, --no peak-bw:取消峰值带宽计算(默认包括峰值带宽),这可以帮助您专注于稳定的带宽性能。

  • -t, --tx-depth=<dep>:设置发送队列的大小(默认为 128),这可以影响测试的并发性和性能。

  • -D, --duration=<sec>:以秒为单位设置测试的持续时间,这可以帮助您控制测试的总时长

发送测试

  • -r, --rx-depth=<dep>:设置接收队列的大小(默认为 512),这对于调整接收缓冲区的大小和性能有影响。

  • -g, --mcg=<num_of_qps>:向附加了<num_of_qps>个 QPs 的多播组发送消息,这对于测试多播性能很有用。

其他高级选项

  • -u, --qp-timeout=<timeout>:设置 QP 超时,超时值为 4 usec * 2^(超时),默认值为 14,这对于调整 QP 的超时设置很有用。

  • --force-link=<type>:强制链接到特定类型:IB 或 Ethernet,这对于测试特定类型的网络链接很有帮助。

  • --use_hugepages:使用 Hugepages 而不是 contig 或 memalign 分配,这对于优化内存使用和性能很有帮助。

  • --rate_limit=<limit>:设置发送包的最大速率,默认单位是 [Gbps],使用--rate_units可以改变单位,这对于限制测试中的带宽很有用。

相关文档

  • 如果您是在实例当中使用容器方式部署您的应用,希望将eRDMA功能引入容器,实现大规模数据传输和高性能网络通信,您可以参考在容器(Docker)中配置eRDMA

  • 您也可以在ACK(Alibaba Cloud Container Service for Kubernetes)集群中使用eRDMA,可以为运行在集群上的所有服务和应用提供低延迟、高吞吐量的网络通信能力。具体操作,请参见使用eRDMA加速容器网络

  • 如需监测或诊断eRDMA,方便您对eRDMA的运行状态进行实时监控。具体操作,请参见监测和诊断eRDMA

  • 如需将eRDMA集成到您的TCP应用中,请参见应用适配概述

上一篇: 弹性RDMA网卡(ERI) 下一篇: 在企业级实例上使用eRDMA
阿里云首页 云服务器 ECS 相关技术圈