弹性RDMA(Elastic Remote Direct Memory Access,简称eRDMA)是阿里云提供的低延迟、大吞吐、高弹性的高性能RDMA网络服务。eRDMA基于第四代神龙系统架构和云上VPC网络,100%兼容RDMA生态,提供超大规模网络部署的ECS普惠RDMA服务。本文介绍如何在ACK集群中配置和使用eRDMA,包括CPU节点和GPU节点场景。
适用范围
集群版本:
CPU节点:1.20及以上。
GPU节点:1.26及以上。
实例规格:eRDMA仅支持部分实例规格,请参见在企业级实例上启用eRDMA查看支持的实例规格列表。
步骤一:配置Terway白名单
如果集群网络插件为Terway,请为弹性网卡(ENI)配置白名单,避免Terway组件修改eRDMA的网卡。
步骤二:添加支持eRDMA的节点至ACK集群
新建节点
添加已有节点
如果您已有支持eRDMA的ECS实例,可以将其手动添加到ACK集群中。
GPU节点必须安装eRDMA驱动才可添加到集群,有两种方式进行安装:
通过OS镜像预安装(推荐):节点已使用阿里云提供的预装eRDMA软件栈的OS镜像,例如云市场镜像中的Alibaba Cloud Linux 3 64位(预装eRDMA软件栈)。
手动安装:参见在GPU实例上启用eRDMA在实例上手动安装eRDMA软件栈。在节点加入集群后,请确认eRDMA驱动和网卡配置正常。
步骤三:安装ACK eRDMA Controller组件
当节点存在多张网卡时,ACK eRDMA Controller 为附加的eRDMA网卡配置路由时,采用比同网段网卡路由更低的优先级,默认采用200的路由优先级,如果您在安装ACK eRDMA Controller后需要手动配置网卡,注意避免路由冲突。
在集群列表页面,单击目标集群名称,然后在左侧导航栏,单击组件管理。
在组件管理页面,单击安装组件,参照下方配置安装ACK eRDMA Controller组件。
配置项
说明
preferDriver
选择节点上使用的eRDMA驱动类型。
default:默认驱动模式。compat:兼容RoCE驱动模式,适用于OOB建链场景。ofed:OFED驱动模式,适用于GPU机型。
关于驱动类型的详细说明,请参见启用eRDMA。
是否为Pod分配节点全部eRDMA设备
勾选:为Pod分配节点上所有的eRDMA设备。
不勾选:Pod根据NUMA拓扑分配一个eRDMA设备。节点需要开启CPU Static Policy才能保证Pod和设备的固定NUMA分配。关于如何配置CPU Policy,请参见创建和管理节点池。
安装完成后,在左侧导航栏,单击工作负载 > 容器组,选择ack-erdma-controller命名空间,查看Pod运行状态,确认组件运行正常。
步骤四:使用eRDMA加速容器网络
安装ACK eRDMA Controller组件后,在容器资源中通过aliyun/erdma配置项申请资源,即可开启eRDMA加速。
apiVersion: apps/v1
kind: Deployment
metadata:
...
spec:
...
template:
spec:
containers:
- name: nginx
image: nginx:latest
resources:
limits:
aliyun/erdma: 1 # 启动eRDMA
ports:
- containerPort: 80分配后,您可以在Pod中查看分配到的RDMA设备。
/# ls /dev/infiniband/
rdma_cm uverbs0当preferDriver配置为ofed(适用于 GPU 机型)时,Pod 的/dev/infiniband/目录下可能不包含rdma_cm设备,仅显示uverbs0等设备。这是正常现象,因为 GPU 场景下 NCCL 等通信框架不依赖rdma_cm,不影响 eRDMA 加速功能的使用。
场景示例:GPU机型使用eRDMA加速NCCL通信
参考步骤二:添加支持eRDMA的节点至ACK集群,在节点池中添加GPU节点,OS镜像选择Alibaba Cloud Linux 3 64位(预装eRDMA软件栈)。
参考步骤三:安装ACK eRDMA Controller组件,配置
preferDriver为compat,用于NCCL类型的通信。在应用容器镜像构建时安装eRDMA相关包。
在集群中运行使用eRDMA的GPU应用,以
nccl-test为例。验证NCCL使用了eRDMA加速。
您可以在应用日志中查看NCCL使用的通讯类型和使用的网卡数量。

预期输出表明,已使用
erdma_0和erdma_1的eRDMA设备进行了加速。