揭秘!CIPU最新秘密武器–弹性RDMA的技术解析与实践

本文涉及的产品
云服务器 ECS,每月免费额度280元 3个月
云服务器ECS,u1 2核4GB 1个月
简介: 弹性RDMA(Elastic Remote Direct Memory Access,简称eRDMA),是阿里云自研的云上弹性RDMA网络,底层链路复用VPC网络,采用全栈自研的拥塞控制CC(Congestion Control )算法,兼具传统RDMA网络高吞吐、低延迟特性,同时支持秒级的大规模RDMA组网。基于弹性RDMA,开发者可以将HPC应用软件部署在云上,获取成本更低、弹性更好的高性能应用集群;也可以将VPC网络替换成弹性RDMA网络,加速应用性能。


技术圈-1.png


2023年8月2日,阿里云弹性计算团队与智东西公开课联合出品的系列课程【阿里云弹性计算技术公开课】第五节正式播出,阿里云资深技术专家徐成带来了主题为《CIPU最新秘密武器——弹性RDMA的技术解析与实践》的课程分享,本期课程在阿里云官网、智东西官网、钉钉视频号、阿里云微信视频号、阿里云开发者微信视频号、阿里云创新中心直播平台&视频号等多平台同步播出。


弹性RDMA(Elastic Remote Direct Memory  Access,简称eRDMA),是阿里云自研的云上弹性RDMA网络,底层链路复用VPC网络,采用全栈自研的拥塞控制CC(Congestion  Control  )算法,兼具传统RDMA网络高吞吐、低延迟特性,同时支持秒级的大规模RDMA组网。基于弹性RDMA,开发者可以将HPC应用软件部署在云上,获取成本更低、弹性更好的高性能应用集群;也可以将VPC网络替换成弹性RDMA网络,加速应用性能。


阿里云资深技术专家 徐成 | CIPU最新秘密武器——弹性RDMA的技术解析与实践 直播回放


本篇文章根据徐成的课程整理而成,供读者阅览:


幻灯片2.JPG


一、RDMA的背景知识与上云挑战


1、内核态TCP在数据中心应用中逐渐遇到瓶颈


内核态TCP/IP协议栈广泛应用于数据中心的网络中,但随着分布式应用、大数据、AI训练的逐步崛起,应用对于数据中心算力的需求越来越高,而计算节点之间都是通过网络互联的,网络逐渐成为分布式应用性能提升的瓶颈点。


幻灯片4.JPG

内核态TCP/IP协议栈制约了网络性能,主要有两个原因:


· 内核态TCP/IP协议栈在数据传输过程中会涉及多次数据拷贝。有研究显示在某些场景下,数据拷贝可以占到整体CPU开销的50%以上。为了更高性能,数据拷贝应该是被避免的。


· 内核态TCP/IP的协议处理需要消耗大量的CPU。随着通信流量的增加,用于网络通信的CPU资源会越来越多,相应可以用于计算任务的CPU资源就会减少。此外,用户态/内核态的上下文切换、TCP的流语义也会对应用的性能带来一些负面影响。


为了解决内核态TCP/IP遇到这些问题,DPDK、TOE、RDMA等技术也都被应用于实践,其中最为广泛应用的还是RDMA技术。


2、RDMA是什么


RDMA(Remote Direct Memory Access)技术全称远程直接内存访问,是一种高性能的网络通信技术,将数据直接从一台计算机的内存传输到另外一台计算机的内存中,而无需双方的操作系统内核参与。具有高吞吐、低延迟和低CPU开销的特点。


幻灯片5.JPG

和TCP/IP相比,RDMA具有如下的优点/特点:


· 零拷贝(Zero-copy)应用程序可以直接执行数据传输:数据能够被直接发送到缓冲区或者能够直接从缓冲区里接收,而不需要像TCP/IP一样,数据会被复制到网络层。


· 内核旁路(Kernel bypass)应用程序可以直接在用户态执行数据传输,不需要在内核态与用户态之间做上下文切换。


· 不需要CPU干预(No CPU involvement) 有两层含义:


    | 协议卸载。协议会被卸载到网卡硬件上处理。

    | RDMA单边操作无需远端CPU参与。


· 消息语义(Message based transactions)传输数据基于消息语义。TCP/IP基于流语义进行数据传输,而应用大多通信的需求通常基于消息,应用需要进行流语义到消息语义的转换。RDMA消除了应用程序将流切割为消息/事务的需求。


3、RDMA网络协议类型


幻灯片6.JPG

RDMA在底层的实现上有很多种方式,主流的包括Infiniband、RoCE、iWarp。


· Infiniband是一种专门为RDMA设计的网络协议,对网络设备有特殊的要求,需要专用的硬件组成专用IB网络,具有极低的静态时延。但是组网成本很高,同时架构封闭存在厂商锁定的风险。


· RoCE是将IB协议承载到以太网上,RoCEv1将IB的链路层替换成以太链路层,RoCEv2还将IB的网络层替换成UDP/IP。RoCE协议同样依赖于无损的网络环境,无损的依赖就意味着网络中不能出现丢包或乱序的情况。一旦出现,都会对性能造成严重的影响,通常需要使用交换机的PFC功能来实现无损网络。


· iWarp协议利用TCP充当RDMA协议的传输层,无需交换机额外配置,能够容忍复杂的网络环境。


4、云计算的普及


幻灯片7.JPG

刚才介绍了RDMA技术的背景内容,接下来再简要的回顾一下云计算相关的背景知识。


IaaS是基础设施即服务,是云计算技术的组成部分。随着云计算技术的发展,越来越多的客户倾向于使用云IaaS服务,而非自建机房。相对于自建机房,云IaaS服务具有以下几个优点:


· 高可用。相对于自建机房,客户不需要考虑硬件故障,通常云服务厂商提供内置的冗余和容错功能。当物理机宕机,客户的实例自动迁移恢复。


· 弹性。计算资源可以根据实际的需求,分秒级扩容应对计算需求的增加,同时在不需要时缩减计算资源。


· 节约成本。计算资源的按需使用和按需付费,使得IaaS的支出高度可预测,可以轻松控制和制定相应预算。


· 易于部署。云服务器一般即开即用,而自建机房通常需要“人肉”部署运维,比如环境搭建、网络部署、操作系统安装等等。


上图右侧是阿里云ECS的架构图。ECS就是云服务器,它通过EBS或者本地盘连接存储,通过VPC网络连接到网络。


这张图我们主要关注一下VPC专用网络,大家都知道云是一个多租户的环境,一个物理服务器同一时间可能有多个租户在使用,每一个用户都有一个自己独享的虚拟网络,不同用户之间的虚拟网络互不影响。


目前主流的虚拟网络是通过隧道实现的。一个VPC内的云服务器之间的数据传输都会加上一个隧道封装,它们带有一个唯一的隧道标识号,然后再通过物理网络进行传输。不同VPC内的实例由于隧道号的不同,会处于两个不同的路由平面上,因此不同VPC内的云服务器无法通信,这就天然的形成了一个多租户的隔离。


5、云上环境使用RDMA的挑战


幻灯片8.JPG


随着上云业务的不断丰富,内核TCP/IP逐渐不能满足云数据中心对网络通信性能的要求,公有云厂商也逐渐开始在云上部署RDMA网络。


最直观的云上RDMA部署方式,是针对RDMA网络单独组一张网,从实践来讲,会存在不少的问题:


· 部署成本高。单独的一套组网,意味着需要部署和现有VPC网络完全独立的一套网络(网卡、交换机),最终会均摊到终端用户的使用成本上。


· 部署规模受限。如RoCEv2需要无损以太网的支持,要使能交换机的PFC功能,通常部署的集群规模不会很大,有资料显示RoCEv2集群的规模不超过上千台。


· 运维复杂。无损网络需要对交换机、网络做相应的配置,此外PFC风暴/PFC死锁导致的潜在问题,都会使整个数据中心的运维工作量增大。


· 降低云服务器的可用性。这样的部署模式下,很难做到热迁移。热迁移是云服务器高可用保证的一个重要手段。


基于这些原因,提供这样的单独组网的云RDMA服务,一般都是通过单独的集群,小规模组网,在特定的实例上支持的。


二、eRDMA的关键技术解析


1. 云上RDMA的另一种部署选择(Overlay RDMA)


幻灯片10.JPG


前面提到云服务器之间已经有一个VPC虚拟网络互联了,直接利用VPC网络承载RDMA流量,是可以带来显著收益的。比如无需再重复建设一些相同的网络基础设施;用户界面可以看到单独的一张网,但要利用VPC来承载RDMA功能还需要解决一系列问题。


· 实现Lossy RDMA。因为VPC网络不是无损的网络。网络中间的节点可能会由于拥塞导致丢包,端侧也可能因为虚拟机限速而产生丢包。VPC内的RDMA一定要支持有损的网络环境,这样在丢包的时候才不会影响应用性能。


· 性能。基于VPC的RDMA是overlay的,它需要多一层隧道封装处理,因此对于底层RDMA处理的性能要求会更高一些。


· 数据中心网络Hash不均衡。数据中心中网络的拓扑在遭遇大象流的时候,很容易由于Hash冲突导致不能充分利用网络带宽,从而造成中间交换机的拥塞。特别是在AI分布式训练的场景下,高吞吐RDMA可以产生这样的流量,进而影响端到端的性能。


· 规模部署。VPC内的节点规模远比传统的RDMA集群规模更强大,在这样的大规模组网环境内使能RDMA加速功能,就面临着更多额外的挑战。


· 安全隔离。云环境中一个关键的特点是多租户,不同的虚拟网络属于不同的用户,同时共享相同的物理网络环境。在这样的多租户环境下,增加的RDMA功能不能损害VPC的安全隔离和私密性。


· 和现有硬件/设施融合。现有的云基础设施中已经包含了为VPC提供功能的硬件,和现有的硬件充分复用融合有助于降低RDMA的支持成本。


· 支持热升级和热迁移。它们是在云环境下为用户提供高可用的重要手段。集成了RDMA功能之后不能降低ECS的可用性,所以RDMA也需要支持热升级和热迁移。


目前我们基于CIPU架构实现了一个普惠的RDMA加速功能。


2、弹性RDMA


我们把阿里云VPC内的RDMA加速功能叫Elastic RDMA,简称eRDMA。它是一款基于云上overlay VPC网络、RDMA生态完全兼容、超大规模网络部署的ECS普惠RDMA网络服务。从ECS第代实例开始,在全地域和可用区,ECS VM、弹性裸金属、ECI、异构计算等所有算力,都提供了支持。


幻灯片11.JPG

在性能方面,目前可以做到双向200Gbps的带宽、8μs时延、30M PPS的能力。在底层,集成了LUNA TCP高性能协议来解决性能的问题;用自研的HPCC解决拥塞管理的问题;用多路径支持打散大象流来解决Hash冲突或者不均衡的问题。


幻灯片12.JPG

下面将详细介绍一下弹性RDMA的关键特点。


第一个特点,eRDMA基于云上overlay VPC网络。阿里云的ECS服务器是通过VirtIO-Net的设备来接入VPC虚拟网络,VirtIO-Net的设备是由CIPU芯片虚拟化出来的,网卡的后端功能都集成在CIPU当中。


为了不改变用户原本的VPC组网,换句话说就是不增加额外的VPC网络或私网IP,所以弹性RDMA在设计的时候,新增的RDMA Pcle设备只提供了RDMA相关的功能。


传统形态的RDMA网卡既包含RDMA功能,也包含以太功能。反映到操作系统内部,我们看到的设备关系就如上图左侧所示,而eRDMA实现的时候采用的上图右侧的实现方式。以太网卡的功能依然由以往已经存在的VirtIO-Net的PCIe设备继续提供,eRDMA作为以太网卡的附属功能,单独由另外一个PCIe设备提供,设备之间的关联关系是由上层驱动来完成的。


这样做的好处就是eRDMA完全复用了现有的VPC网络,可以在不改变业务组网的情况下,在原本的VPC网络配置下直接激活eRDMA的功能,体验到eRDMA的网络优势。


幻灯片13.JPG

第二个特点,eRDMA完整兼容现有RDMA生态。overlay的VPC属于有损网络,依赖于无损网络标准的RDMA协议,业界现有的基于overlay VPC的RDMA都会对这个标准协议做一定的修改,甚至改变了接口的RDMA语义。


绝大多数应用都是基于RC语义,它是类似于TCP,提供了一个可靠且保序的一个点对点的数据传输通道。改变语义接口,就意味着现有的应用都需要做相应的适配和修改,才能正常工作,对客户的使用体验并不友好。弹性RDMA依然对应用提供了RC语义,同时我们也支持全部的RDMA操作,eRDMA规格也满足绝大多数应用需求,也支持内核态和用户态的verbs接口,绝大多数现有的应用都无需改动,就可以平滑的运行于eRDMA上。


第三个特点,eRDMA支持大规模部署,主要体现在以下三个方面。


· eRDMA内部实现了自研的CC拥塞控制算法,可以容忍VPC网络内部的传输质量变化(延迟、丢包等)。在有损的网络环境中依然拥有优秀的性能表现。


· 规模的变大也意味着RDMA资源的膨胀,传统网卡都会依赖于memory free的架构。芯片上只有少量的Cache,在Cache存放不下资源的情况下,需要倒换到主机内存。CIPU充足的片上资源就可以使得在RDMA资源规模膨胀之后,不会出现网卡Cache倒换的问题。


· 基于VPC网络也意味着VPC能够连通的节点,eRDMA同样能够连通,不会受到物理环境的阻碍,可以达到和TCP同等的部署规模。


此外,包含eRDMA功能的云服务器,完全没有额外费用支出,也没有因为支持RDMA功能,而丧失云服务器的优点,比如:


· 高可用,支持热迁移、热升级。

  • · 热迁移,物理机宕机不影响用户的实例运行,可以很快迁移到其他可用的物理机之上,避免了单点故障导致的可用性丧失。
  • · 热升级,在不影响用户ECS实例的情况下,修复后端可能存在问题或者对后端进行迭代升级。


· 配置简单、部署灵活。eRDMA不仅复用了VPC网络的基础设施,也复用了VPC的安全组等配置,无需单独为RDMA网络做更多额外的配置。此外,可以在使用ECS的过程中,动态添加设备,部署十分灵活。


三、eRDMA的应用场景与实践


1、应用使用RDMA的典型场景


首先回顾一下RDMA的典型应用场景。RDMA作为通信协议,第一个场景是数据点对点传输。由于RDMA的协议特点,使用RDMA进行数据传输时,可以根据数据量大小灵活选择通信模式,取得通信效率和内存占用的平衡。


幻灯片15.JPG

举一个简单的例子,因为RDMA支持零拷贝,所以它可以降低通信过程中CPU的负载,但零拷贝需要提前分配内存,如果管理不好,就会造成系统内存资源的浪费。


同时使用零拷贝,也会引入一些额外的处理逻辑,比如需要管理零拷贝的缓冲,零拷贝的缓冲区复用。对于大数据量的传输,减少拷贝会有明显的收益,而小数据量使用零拷贝,收益可能就不是那么明显。所以在常见的RDMA通讯库里,对于小的消息会采用Send+Copy的方式进行传输,对于大的消息会采用协商+内存分配+单边操作的方式进行通信,从而达到对系统资源的使用和通信效率的平衡。


第二个场景是RDMA可以和GPU配合,利用PCIe的P2P特性,实现GPU Direct RDMA功能加速分布式AI训练。在AI分布式应用方面,如果没有GDR,多个节点之间GPU和GPU之间的网络通信,就需要把GPU显存中的内容拷贝到DDR里,再通过RDMA发送出去。


接收方向是一个相反的过程,数据需要先DMA到内存,再拷贝到GPU显存。有了GDR之后,就可以允许RDMA网卡直接读显GPU显存进行数据传输,无需CPU再参与数据搬移,极大的提高了分布式AI训练的性能。


第三个场景是RDMA可以把远端的内存拉近。因为离CPU越近的存储单元,CPU访问的延迟越低。最快的是CPU寄存器,然后是CPU的L1 Cache、L2 Cache、L3 Cache,再到磁盘。RDMA典型的延迟大概在几μs到十几μs之间,延迟要比磁盘低。所以可以在一些场景里,通过RDMA的单边操作,将远端的服务器内存拉近,充当本地节点的层次化存储,进而提升整体的性能。


第四个场景是利用RDMA的原子操作实现一些特殊功能,比如分布式锁的应用。


2、基于eRDMA的生态应用


在eRDMA的实际生态应用中,它不仅支持传统的eRDMA现有生态,比如AI、HPC、大数据场景,这些场景下现有的RDMA生态已经发展的比较完善了。RDMA可以使用现有的通讯库,比如Jverbs、NCCL、Libfabric等等,和相应的应用对接。此外,通用计算领域大多数都是使用TCP socket的应用,比如Redis数据库。如果想要使用RDMA功能,就必须要对相应的应用进行改造。


幻灯片16.JPG

这个领域,学术界的成果比较多,但实际落地的很少,RDMA也没有在这些领域得到广泛的商业化应用。如果这些领域要应用RDMA,还要考虑failover的场景,比如server支持RDMA,clinaer没有支持RDMA,这种情况下要能够回滚到TCP。


基于eRDMA我们可以使用已经达到了商业成熟的标准,比如NetACC、SMC-R两种通讯库当中的任意一种,在不需要应用修改的情况下,无感的加速应用。同时这些通讯库也都考虑到failover场景,可以在真实的生产环境中使用。


3、eRDMA加速应用,构建性能竞争力


幻灯片17.JPG

在典型的应用场景里,弹性RDMA相对于TCP能取得比较明显的收益,比如在AI场景里,NCCL可以提升30%左右;在Redis场景里可以提升130%,在Spark大数据场景里可以提升30%;在HPC场景可以提升20%。


总的来说,使用RDMA通信可以带来性能提升的业务特征有以下两类:


网络敏感型,即静态时延和长尾时延都有较大需求的应用。网络通信的延迟不仅包括端侧的时延,也包括网络传输的时延。使用eRDMA的时候,服务器之间的网络通信经过的交换机越少越好,这样可以有效的降低网络传输的时延。在阿里云里可以结合部署级的策略,使实例之间的物理距离最近。降低网络部分的通信耗时,进而达到性能的最优。


网络负载型,即网络在应用中CPU占比的开销比较大。RDMA的协议卸载和零拷贝就可以对这类应用有比较明显的性能提升(AI分布式训练),再结合多路径的优化,可以更充分的利用网络的带宽达到通信性能的最优。


4、最佳实践:以netacc加速Redis应用


幻灯片18.JPG

接下来分享一个最佳实践。通过一个简单的方式体验一下eRDMA对应用的加速效果,这次的实践是以以netacc加速Redis应用为例。


我们需要首先购买ECS服务器。eRDMA首先在ECS的第8代实例上支持,所以实例规格选择8代实例的y系列(倚天CPU)、i系列(intel SPR CPU)或者a/ae系列(AMD Genoa CPU)均可,本次演示选择g8ae机型的4xlarge规格,数量2台, 主要为了测跨节点间的网络通信。


为了更方便地使用eRDMA,我们可以在选择操作系统时,勾选安装eRDMA驱动。这样当实例启动后,脚本会自动部署eRDMA相关的驱动,无需手动安装。


幻灯片19.JPG

在网络和安全组配置中,我们选择好VPC和交换机之后,配置主网卡的Tab签中勾选弹性RDMA接口。后续其他的购买操作和不使能eRDMA时的一致。


幻灯片20.JPG

实例创建完毕后,会自动启动。启动完成后,可以通过ssh/vnc/Workbench等方式登陆。登陆系统后,可以通过ibv_devinfo命令检查驱动是否安装完毕。


然后我们部署redis软件,只需要执行yum install –y redis即可。


幻灯片21.JPG

默认情况下,在我们勾选eRDMA驱动的自动部署之后,NetACC也会一并安装到系统内。然后我们接下来就直接运行Redis的基准测试。这次测试没有对TCP和eRDMA做相应的调优,直接测试开箱之后的结果。


我们简单测试了100 clients,4 threads,循环500万次的set操作。第一次操作的是TCP的结果,可以看到最后程序打印的是一个25万左右的rps。


幻灯片22.JPG

第二次测试使用的NetACC信息的加速。这个时候需要在原始命令的开头加一个netacc_run的命令。测试结果是使用NetACC的加速效果,可以看到最后打印的结果是62万。这次测试的结果是eRDMA+NetACC的性能是TCP的2.46倍。


结合这次实践,可以看到在阿里云上使能加速的过程还是比较流畅的。在HPC或者AI场景下使用eRDMA也不会有其他额外的独有配置,以上就是本次课程的全部内容。


同时想要了解更多精彩直播/观看课程回放的同学,可以扫描下方海报中的二维码/点击回看,均可观看课程。


相关文章
|
17天前
|
机器学习/深度学习 前端开发 Windows
【夯实技术基本功】「底层技术原理体系」全方位带你认识和透彻领悟正则表达式(Regular Expression)的开发手册(正则符号深入解析 )
【夯实技术基本功】「底层技术原理体系」全方位带你认识和透彻领悟正则表达式(Regular Expression)的开发手册(正则符号深入解析 )
28 0
|
21天前
|
存储 安全 编译器
【C++ 17 新功能 std::visit 】深入解析 C++17 中的 std::visit:从原理到实践
【C++ 17 新功能 std::visit 】深入解析 C++17 中的 std::visit:从原理到实践
68 0
|
4天前
|
存储 中间件 关系型数据库
数据库切片大对决:ShardingSphere与Mycat技术解析
数据库切片大对决:ShardingSphere与Mycat技术解析
10 0
|
17天前
|
存储 NoSQL 算法
【Redis技术进阶之路】「底层源码解析」揭秘高效存储模型与数据结构底层实现(字典)(二)
【Redis技术进阶之路】「底层源码解析」揭秘高效存储模型与数据结构底层实现(字典)
33 0
|
3天前
|
存储 人工智能 编译器
存算一体新兴力量:解析我国企业在存储创新、技术路径上的多元化探索
存算一体新兴力量:解析我国企业在存储创新、技术路径上的多元化探索
|
17天前
|
canal 消息中间件 关系型数据库
【分布式技术专题】「分布式技术架构」MySQL数据同步到Elasticsearch之N种方案解析,实现高效数据同步
【分布式技术专题】「分布式技术架构」MySQL数据同步到Elasticsearch之N种方案解析,实现高效数据同步
63 0
|
19天前
|
监控 Linux 编译器
Linux C++ 定时器任务接口深度解析: 从理论到实践
Linux C++ 定时器任务接口深度解析: 从理论到实践
60 2
|
20天前
|
存储 并行计算 算法
C++动态规划的全面解析:从原理到实践
C++动态规划的全面解析:从原理到实践
89 0
|
23天前
|
缓存 安全 Java
提高APP安全性的必备加固手段——深度解析代码混淆技术
提高APP安全性的必备加固手段——深度解析代码混淆技术
20 1
|
13天前
|
XML Java Android开发
Android实现自定义进度条(源码+解析)
Android实现自定义进度条(源码+解析)
47 1

热门文章

最新文章

推荐镜像

更多