eRDMA的能力实现需要基于支持eRDMA能力的实例规格,挂载弹性RDMA网卡(ERI),安装eRDMA驱动,从而实现具有大规模RDMA的网络服务能力,体验RDMA带来的超低延迟。
ECS实例启用eRDMA
步骤一:确认实例是否支持eRDMA
目前仅部分实例规格、部分镜像支持eRDMA:
- 企业级CPU实例:请参见支持eRDMA的企业级CPU实例规格和镜像。 
- GPU实例:请参见支持eRDMA的GPU实例规格和镜像。 
步骤二:为ECS实例安装eRDMA驱动
- eRDMA驱动软件由阿里云自研,由阿里云提供技术支持。 
- eRDMA驱动的安装可能需要一段时间,请您耐心等待。 
- 驱动程序安装包 
- 安装eRDMA驱动 - 您可以选择在购买实例的时候勾选安装eRDMA驱动,或者为已购买的支持eRDMA的实例手动安装eRDMA驱动。 - 企业级CPU实例:请参见为企业级实例配置eRDMA。 
- GPU实例:请参见在GPU实例上启用eRDMA。 
 
- eRDMA内核驱动 - 完成eRDMA驱动安装后,您可以通过 - eadm ver,查询eRDMA的内核驱动版本。目前最新版本1.4.5的安装程序包,对应的erdma内核驱动版本为0.2.38。 - eRDMA有两种内核驱动安装模式,不同驱动安装模式和建链方式有关。关于eRDMA建链方式,请参见RDMA_CM。 - Standard:标准模式,仅支持RDMA_CM建链。重要- 目前支持eRDMA的CPU实例规格,默认eRDMA内核驱动安装模式为 - Standard,此模式下仅支持RDMA_CM建链。
- Compat:兼容模式,支持RDMA_CM和OOB建链。重要- 目前支持eRDMA的GPU实例规格,默认eRDMA内核驱动安装模式为 - Compat,即兼容模式,支持RDMA_CM和OOB建链方式。
- 您可以通过命令行方式,实现RDMA_CM和OOB建链方式的兼容。详细信息,请参见修改eRDMA与bRPC的建链模式以实现兼容。 
- 兼容模式下,会额外占用30608~30623范围内的16个TCP端口。 
 
 
步骤三:为ECS实例绑定ERI
您可以在创建实例的时候为主网卡开启弹性RDMA接口,或者在实例创建后为实例绑定开启了弹性RDMA接口的ERI。
您可以通过DescribeInstanceTypes返回参数中的EriQuantity的值,查询实例规格支持绑定ERI的最大数量(0表示不支持弹性RDMA接口)。
- 购买实例时候为网卡开启弹性RDMA接口 - 具体操作,请参见随实例创建ERI。 
- 修改ECS实例已绑定的弹性网卡属性,启用ERI - 具体操作,请参见修改已创建弹性网卡的RDMA接口。 
- 通过OpenAPI创建开启了ERI的辅助弹性网卡并绑定到实例 - 如果您是通过OpenAPI的方式创建并绑定辅助弹性网卡,则操作如下: - 通过OpenAPI创建ERI。 - 您可以通过CreateNetworkInterface 创建一个弹性网卡,并设置NetworkInterfaceTrafficMode参数的值为HighPerformance,即创建一个开启了ERI的弹性网卡。 - 调用成功后,请记录返回数据中生成的弹性网卡ID(即 - NetworkInterfaceId对应的返回值)。
- 调用AttachNetworkInterface,指定NetworkInterfaceId为上一步返回的网卡ID,指定InstanceId为目标实例ID,即将创建的开启了ERI的弹性网卡绑定到目标实例上。 重要- 如果您的实例规格支持绑定多个ERI,为了获取最大网络带宽,建议您在绑定时候为每张ERI指定不同的NetworkCardIndex,实现将不同的ERI绑定到不同的通道。详细信息,请参见物理网卡映射。 
 
验证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设备的端口 - state为- invalid state时,表示该eRDMA网卡状态异常,建议先检查辅助网卡是否配置正确。例如,通过执行- ifconfig命令查看所有网卡配置是否存在,所有网卡IP地址是否存在。详细信息,请参见配置辅助弹性网卡。
  
- 未正确安装eRDMA所需驱动程序:如图所示,实例未正确安装eRDMA驱动。您需要步骤二:为ECS实例安装eRDMA驱动。  
- 实例未绑定ERI:实例已安装eRDMA驱动,但是网卡未开启弹性RDMA接口。您需要步骤三:为ECS实例绑定ERI。  
您还可以使用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源进行安装。
通过官方仓库下载并安装
- 为ECS实例开通公网,详细信息,请参见开通公网。 
- 访问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。
- 网络延迟测试:示例操作,请参见测试实例在eRDMA的写延迟性能。 
- 网络带宽测试:示例操作,请参见在GPU实例上启用eRDMA。 
相关文档
- 如果您是在实例当中使用容器方式部署您的应用,希望将eRDMA功能引入容器,实现大规模数据传输和高性能网络通信,您可以参考在容器(Docker)中启用eRDMA。 
- 您也可以在ACK(Alibaba Cloud Container Service for Kubernetes)集群中使用eRDMA,可以为运行在集群上的所有服务和应用提供低延迟、高吞吐量的网络通信能力。具体操作,请参见使用eRDMA加速容器网络。 
- 如需将eRDMA集成到您的TCP应用中,比如数据库Redis、大数据应用Spark、HPC应用、Kafka等,请参见应用适配。 
- 如需监测或诊断eRDMA,方便您对eRDMA的运行状态进行实时监控。具体操作,请参见监测和诊断eRDMA。