本文主要为您介绍什么是eRDMA、eRDMA的功能优势、应用场景以及规格等。

功能简介

什么是eRDMA

弹性RDMA(Elastic Remote Direct Memory Access,简称eRDMA),是阿里云提供的低延迟、大吞吐、高弹性的高性能RDMA网络服务。eRDMA基于第四代神龙系统架构,是一款基于云上VPC网络RDMA生态100%完全兼容超大规模网络部署的ECS普惠RDMA服务。

使用eRDMA,您既可以将在线下的RDMA应用平滑迁移上云,获取成本更低、弹性更好的高性能RDMA服务,例如高性能计算、AI训练、大数据处理等;也可以利用eRDMA与SMC-R透明加速您基于TCP网络的应用,获取相对于TCP网络更好的性能表现。

如何实现eRDMA的能力

eRDMA的能力实现需要基于在支持eRDMA能力的实例规格上,创建挂载支持弹性RDMA能力的网卡,就实现具有大规模RDMA的网络服务能力。

弹性RDMA网卡(Elastic RDMA Interface),简称ERI。是一种可以绑定到ECS实例的虚拟网卡,ERI必须依附于弹性网卡(ENI)开启RDMA设备。ERI完全复用了弹性网卡所属的网络,让您无需改变业务组网,即可在原有网络下使用RDMA功能,体验RDMA带来的超低延迟。

功能优势

eRDMA能力主要具有以下产品优势:
  • 低延迟

    RDMA绕过内核协议栈,将数据直接从用户态程序转移到HCA中进行网络传输,极大地降低了CPU负载和延迟。eRDMA具有传统RDMA网卡的优点,同时将传统的RDMA技术应用到VPC网络下。超低的延迟让用户在云网络中体验到RDMA带来的优越性能。

  • 规模部署

    传统的RDMA依赖于网络的无损特性,规模部署成本高、规模部署困难。而eRDMA在实现中采用了自研的拥塞控制(CC)算法,容忍VPC网络中的传输质量变化(延迟、丢包等),在有损的网络环境中依然拥有良好的性能表现。

  • 弹性扩展

    不同于传统的RDMA网卡需要单独一个硬件网卡,eRDMA是基于神龙架构,是一款原生带有云属性的RDMA HCA卡,可以在使用ECS的过程中,动态添加设备,支持热迁移,部署十分灵活。

  • 共享VPC网络

    eRDMA依附于弹性网卡(ENI),网络可完全复用,可以在不改变业务组网的情况下,即可在原来的网络下激活RDMA功能,体验到RDMA的优势。

应用场景

传统的TCP/IP一直是业界主流的网络通信协议,众多应用都是基于TCP/IP构建的,但随着数据中心相关的业务蓬勃发展,应用对于网络的性能需求(如延迟、吞吐)越来越高,受限于TCP/IP的局限性(如拷贝开销大、协议栈处理厚、CC算法复杂、上下文切换频繁等等),TCP/IP的网络通信性能已经成为应用性能提升的瓶颈。

RDMA解决了这些痛点问题。相对于TCP/IP,RDMA实现了零拷贝、内核旁路等特性,避免了拷贝、频繁的上下文切换等开销,相对于TCP/IP的通信,做到了低延迟、高吞吐以及低CPU占用。但是昂贵的价格以及运维成本让很多应用望而却步,RDMA的受众相对较少。

阿里云的eRDMA从设计之初就是要做云上普惠的能力,既要满足客户对RDMA低延时的需求,又要降低大众化场景的适配的门槛,让更多的应用可以上云体验到更好的性能。普惠的RDMA网络带来了应用场景的丰富化,相对于传统的线下RDMA的应用场景,eRDMA可以用在更加丰富的场景,例如缓存数据库(Redis)、大数据(Spark)、HPC(WRF)、AI训练等。并且在这些领域内,均取得了可观的性能收益。

使用限制

在使用eRDMA时,需确保ECS实例满足如下表所示的约束条件。

配置项说明
地域及可用区支持选择华北2(北京)、华东2(上海)、华东1(杭州)和华南1(深圳)及对应的可用区。
实例规格支持ERI的实例规格如下:
镜像支持以下镜像(任选一款):
  • Alibaba Cloud Linux 3(推荐)
  • CentOS 7.9(仅x86系统支持)
  • Ubuntu 18.04/20.04
  • Anolis OS 8.4 ANCK/8.6 ANCK
eRDMA设备数量每个实例最大支持1个eRDMA网卡设备。
热插拔特性ERI网卡只支持热插入,不支持热拔出。
其他限制
  • ERI设置不支持IPv6地址。
  • 两个实例之间通过ERI通信,通信链路中间不支持跨网元设备(例如负载均衡SLB等)。

基本规格

以下主要介绍eRDMA的规格,在您的应用中使用eRDMA时需要确保应用满足产品的能力规格约束,否则可能会导致您的应用无法正常工作。

RDMA QP的基本规格

规格名称规格说明
最大QP数目max_qp_num依据实例规格,至多144,480QP数目和您购买的实例规格有关。
最大的发送WR深度max_send_wr8,192发送的最大Work Request数目,该规格表示一个QP的最大inflight WR数目。
最大的接收WR深度max_recv_wr32,768接收的最大Work Request数目,该规格表示一个QP能够接收的最大inflight的WR的数目。
最大的发送SGE数目max_send_sge6单个send wr支持的离散地址数目。
最大的接收SGE数目max_recv_sge1单个recv wr支持的离散地址数目。
SRQ不支持无。
QP类型RC(Reliable Connected)无。
建链方式RDMA_CM无。

RDMA CQ的基本规格

规格名称规格说明
CQ数目依据实例规格,最大CQ数为QP数的两倍
CQ的完成向量数目vector_num依据实例规格(CPU和QP数有关),最大不超过31
  • 每个vector会对应一个硬件中断。实际使用中,每个CPU配置至多一个vector就可以满足通信需求。
  • 每个vector会关联一个eRDMA内部的CEQ队列。
最大CEQ深度256
  • 0.2.34版本的CEQ深度为256。
  • 如果使用event模式,建议每个vector绑定的CQ队列数不超过256,否则可能出现CEQ队列溢出的风险。
最大CQ队列深度1,048,576无。

RDMA MR的基本规格

规格名规格
MR数目依据实例规格,最大MR数为QP数的两倍
MW数目不支持MW
Max MR size2 GB

RDMA Verbs Opcode的支持列表

Opcode支持情况
RDMA Write支持
RDMA Write with Immediate支持
RDMA Read支持
Send支持
Send with Invalidate支持
Send with Immediate支持
Send with Solicited Event支持
Local Invalidate仅内核态Verbs支持
Atomic Operation不支持