部分企业级ECS实例支持配置eRDMA,可以实现在不需要修改现有网络架构的情况下,体验超低延迟、大吞吐、高弹性的高性能RDMA网络服务,本文介绍如何在企业级ECS实例上启用eRDMA。
使用限制
限制项 | 说明 |
实例规格 | 支持eRDMA的实例规格如下: |
镜像 |
说明 不同实例规格可选择的镜像范围不同,实际可选择的镜像以购买页面的实际展示为准。 |
eRDMA设备数量 | 您可以通过DescribeInstanceTypes返回参数中的EriQuantity的值,查询实例规格支持绑定ERI的最大数量(0表示不支持弹性RDMA接口)。 |
网络限制 |
|
为企业级实例配置eRDMA
购买实例时配置eRDMA
对于不支持安装eRDMA驱动的操作系统或自动安装失败的情况,您可以在实例创建完成后,通过脚本方式或手动方式安装驱动。具体操作,请参见为已有实例配置eRDMA。
在购买的实例启动后,eRDMA驱动安装可能需要一段时间,请您耐心等待。
创建支持ERI的企业级实例。创建过程中需注意以下配置项(其他参数,请参见自定义购买实例):
实例和镜像:选择支持eRDMA的实例规格,并安装eRDMA驱动。
实例:请参见使用限制。
镜像:选择公共镜像。
扩展程序:选中eRDMA驱动。实例启动过程中会自动安装eRDMA驱动,无需您再手动安装。您在购买Alibaba Cloud Linux操作系统的倚天实例时,还可以选择安装性能加速类扩展程序。更多信息,请参见应用性能加速。
重要使用ECS扩展程序功能,需要拥有系统权限策略AliyunECSExtensionsFullAccess,阿里云账号默认拥有该系统权限。如果您的操作账号为RAM用户,需要联系阿里云账号授予RAM用户该系统权限。详细信息,请参见扩展程序。
弹性网卡:主网卡右侧选择开启弹性RDMA接口,为ECS实例绑定ERI。
说明购买企业级实例时,仅支持为主网卡启用弹性RDMA接口。如果您需要为辅助网卡配置eRDMA,您可以通过控制台或OpenAPI方式为辅助弹性网卡开启RDMA接口。具体操作,请参见弹性RDMA网卡(ERI)。
为已有实例配置eRDMA
确认实例规格在支持eRDMA的实例规格列表中。
您需要选择支持eRDMA的实例规格。
验证实例是否已正确配置eRDMA。
您可以先验证实例是否已正确配置eRDMA。具体操作,请参见验证eRDMA配置的正确性。
如果您确认尚未为实例配置eRDMA,则需要依次执行以下步骤,为实例安装eRDMA驱动并绑定ERI。
为实例安装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 -yUbuntu:无需更新,跳过该步骤。
依次执行以下命令,查看最新的kernel包版本和操作系统的内核版本。
rpm -qa | grep kernel #查看最新的kernel包版本 uname -r #查看操作系统的内核版本系统返回示例信息如下,表示两者版本一致,无需进行额外操作。若版本不一致,则需要重启实例使其生效。
[ecs-user@iZbp1xxxxxxxxxxxxx ~]$ rpm -qa | grep kernel kernel-tools-5.10.134-16.1.al8.x86_64 kernel-5.10.134-16.1.al8.x86_64 kernel-modules-extra-5.10.134-16.1.al8.x86_64 kernel-hotfix-13383560-5.10.134-15-1.0-20230724161633.al8.x86_64 kernel-devel-5.10.134-16.1.al8.x86_64 kernel-5.10.134-15.al8.x86_64 kernel-modules-5.10.134-16.1.al8.x86_64 kernel-tools-libs-5.10.134-16.1.al8.x86_64 kernel-core-5.10.134-16.1.al8.x86_64 kernel-core-5.10.134-15.al8.x86_64 kernel-modules-internal-5.10.134-16.1.al8.x86_64 kernel-devel-5.10.134-15.al8.x86_64 kernel-modules-5.10.134-15.al8.x86_64 kernel-headers-5.10.134-16.1.al8.x86_64 [ecs-user@iZbp1xxxxxxxxxxxxx ~]$ uname -r 5.10.134-15.al8.x86_64执行以下命令,安装依赖的软件包。
对于x86实例,请执行以下操作:
Alibaba Cloud Linux 3/CentOS/Anolis OS:
sudo yum install gcc-c++ dkms cmake kernel-devel kernel-headers libnl3 libnl3-develUbuntu:
sudo apt-get install dkms cmake libnl-3-dev libnl-route-3-dev linux-headers-generic
对于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
根据返回信息,确认安装结果。
若系统返回如下信息,则表示安装驱动成功。
================================= Installation Information ====== architecture : x86_64 distributor : alinux release : 3 binary path : RPMS/alinux3 build from source : erdma(N) rdma-core(N) eadm(N) install requires : gcc make patch gcc-c++ dkms cmake kernel- build requires : gcc make patch gcc-c++ dkms cmake kernel- vel redhat-rpm-config rpm-build libnl3-devel ninja-build perl-gen hon3-docutils temp dir : /tmp/ERDMA.120833 log file : /tmp/install-erdma.log.120833 ==================================================================== Checking for Linux headers availability... Verifying dependencies... Removing erdma package... Start to uninstall rdma-core libraries... Installing erdma Reloading erdma modules Installation finished successfully. Update erdma.ko in initramfs若系统返回如下信息,则表示提示安装驱动失败,请按照提示信息操作,完成后重新尝试安装驱动。
========================== Installation Information ======================================== architecture : x86_64 distributor : alinux release : 3 binary path : RPMS/alinux3 build from source : erdma(Y) rdma-core(Y) eadm(Y) install requires : gcc make patch gcc-c++ dkms cmake kernel-headers kernel-devel build requires : gcc make patch gcc-c++ dkms cmake kernel-headers kernel-devel gcc make patch gcc-c++ dkms cmake kernel-headers kernel-devel redhat-rpm-config rpm-build libnl3-devel ninja-build perl-generators pandoc systemd-devel valgrind-devel kernel-rpm-macros python3-Cython python3-docutils temp dir : /tmp/ERDMA.172873 log file : /tmp/install-erdma.log.172873 =========================================================================================== Checking for Linux headers availability... Verifying dependencies... ERDMA requires the following Packages(s) to be installed: libnl3-devel ninja-build perl-generators pandoc systemd-devel valgrind-devel python3-Cython python3-docutils说明如果您使用的是CentOS 7系统,并且重新安装驱动过程中提示缺少软件包,但您无法通过
yum获取到,您可能需要执行yum install -y epel-release命令,先安装epel-release仓库,然后才能获取到对应的软件包。
为实例绑定ERI。
您可以通过以下几种方式为实例绑定弹性RDMA网卡。
说明您可以通过DescribeInstanceTypes返回参数中的EriQuantity的值,查询实例规格支持绑定ERI的最大数量(0表示不支持弹性RDMA接口)。
修改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的写延迟性能
您可以在两台配置了eRDMA的企业级实例上,安装perftest后通过ib_write_lat进行写延迟测试。关于perftest测试,请参见perftest测试集。
环境准备
准备两台配置了eRDMA(已安装eRDMA软件栈、弹性网卡开启了RDMA接口)的企业级实例,分别作为服务端和客户端。
确保网络配置正确,两台服务器之间内网互通。详细信息,请参见ECS实现内网互通。
测试步骤
分别远程连接两台实例。
具体操作,请参见使用Workbench登录Linux实例。
验证并保证两台实例eRDMA配置正确。
具体操作,请参见验证eRDMA配置的正确性。
在两台实例上,分别执行以下命令,安装perftest测试工具。
您可以选择开通公网通过官方仓库下载并安装,或者直接通过yum/apt源进行安装。
通过官方仓库下载并安装
为ECS实例开通公网,详细信息,请参见开通公网。
访问perftest官方仓库下载并安装perftest工具。
通过yum/apt源安装
说明不同Linux发行版的软件源中包含的perftest版本可能不一致,在通信时可能存在兼容性问题。建议您通信的实例使用相同的Linux发行版,否则请通过官方仓库下载并安装。
Alibaba Cloud Linux 3/CentOS/Anolis OS
sudo yum install perftest -yUbuntu
sudo apt install perftest -y
测试eRDMA网络延迟是否符合预期表现。
在服务端实例上,执行以下命令,启动
ib_write_lat作为服务器,监听来自客户端的连接。ib_write_lat -R -a -F-R:表示使用 RDMA_CM来建立连接。重要目前支持eRDMA的CPU实例规格,默认eRDMA内核驱动安装模式为Standard,仅支持RDMA_CM建链方式。详细信息,请参见建链方式。
perftest默认为OOB带外建链,在CPU实例上进行perftest测试时,服务端和客户端均可以通过-R参数指定使用RDMA CM建链方式,否则在建立连接时可能会出现异常。
您也可以通过命令行方式,实现RDMA_CM和OOB建链方式的兼容。详细信息,请参见修改eRDMA与bRPC的建链模式以实现兼容。通过该方式实现兼容后,命令中无需加-R。
-a:这个选项表示运行所有消息大小的测试,从 2 到 2^23 字节。这允许测试不同消息大小对延迟的影响。-F:强制覆盖任何现有连接。这意味着如果之前已经建立了连接,使用-F选项会忽略这些连接并强制重新建立新的连接。
在客户端实例上,执行以下命令,启动
ib_write_lat,连接服务端。ib_write_lat -R -a -F <server_ip><server_ip>是服务端ECS实例上测试使用的开启了弹性RDMA接口的网卡的私有IP地址。获取IP地址的方法,请参见查看IP地址。查看测试结果。
客户端测试完成后,
ib_write_lat会输出测试配置信息、连接信息以及性能测试结果(延迟相关的统计数据,包括最小、最大、平均延迟等性能指标)。[root@xxx ~]# ib_write_lat -R -a -F 172.17.0.131 RDMA_Write Latency Test Dual-port : OFF Device : erdma_0 Number of qps : 1 Transport type : IW Connection type : RC Using SRQ : OFF PCIe relax order: OFF ibv_wr* API : OFF TX depth : 1 Mtu : 1024[B] Link type : Ethernet GID index : 0 Max inline data : 96[B] rdma_cm QPs : ON Data ex. method : rdma_cm local address: LID 0000 QPN 0x000b PSN 0xaf51c5 GID: 00:22:62:22:161:180:00:00:00:00:00:00:00:00:00:00 remote address: LID 0000 QPN 0x000a PSN 0x347ff0 GID: 00:22:62:09:142:189:00:00:00:00:00:00:00:00:00:00 #bytes #iterations t_min[usec] t_max[usec] t_typical[usec] t_avg[usec] t_stdev[usec] 99% percentile[usec] 99.9% percentile[usec] 2 1000 12.26 16.79 12.59 12.65 0.19 14.32 16.79 4 1000 12.10 18.10 12.54 12.60 0.24 14.57 18.10 8 1000 12.04 18.75 12.42 12.48 0.31 14.09 18.75 16 1000 12.45 14.77 12.77 12.81 0.11 14.10 14.77 32 1000 12.28 15.55 12.75 12.81 0.21 14.67 15.55 64 1000 12.41 16.10 12.79 12.84 0.16 14.31 16.10 128 1000 12.86 16.22 13.19 13.21 0.15 14.78 16.22 256 1000 13.11 20.85 13.53 13.64 0.35 15.43 20.85 512 1000 13.09 16.54 13.44 13.47 0.17 15.16 16.54