首页
行业动态
网络学院
TCP/IP
RDMA
IGP & BGP
技术博客
AI & 大模型
云 & 计算
交换机
SDN
流量控制
拥塞控制
网络拓扑
接口 & 协议
存储
RDMA
网络仿真
运维&管理
顶级会议
SIGCOMM
NSDI
APNet
ICNP
其他论文
关于我们
当前位置:
首页
>
RDMA
> 正文
RDMA技术在数据中心中的应用
RDMA
2022-10-09
5841
更新:2022-10-09 22:09:52
随着云计算向数据化智能化的方向演进,数据的流转与有效利用将为业务带来核心价值。像大规模深度学习、机器训练之类的应用是极其依赖算力的,大量的信息交互对网络提出了很高的要求,由此需要一个低时延、无丢包、高吞吐的算力网络。本文主要考察RDMA技术在数据中心中的应用,并分析其对于未来云数据中心高性能集群计算的影响。 # 第1章 RDMA概要 RDMA最早脱胎于InfiniBand网络的技术,主要应用于高性能科学计算中。随着云计算的兴起,RDMA技术也逐渐被应用到某些云数据中心中具有高性能要求的场景中。 ## 1.1 技术原理
RDMA是remote DMA远程DMA的意思。传统的DMA是direct memory access,它使得外部的设备(例如网卡)可以直接访问内存,而不需要CPU参与,这样可以降低CPU的负担。而远程DMA则是通过高性能的网络直接将数据从一个节点的内存搬运到另外一个节点的内存,全程完全通过网络硬件操作,无需CPU参与。这在大吞吐、海量数据交互的场景中可以极大地提升性能。
具体实现上,如果要让数据从一端远程搬运到另外一端,端到端的整个链路上都需要做优化调整。首先需要采用专用的RDMA协议栈替换传统的TCP协议栈,其次主机侧需要专用的RDMA网卡的支持才能解放主机的CPU,最后,网络侧也需要一定的流量与拥塞控制以保证远程RDMA的性能可预期。 ### 1.1.1 主机侧 主机侧涉及到两项关键的技术: 1)内核旁路 kernel bypass 2)网卡卸载 NIC offloading 通常这两项技术可以独立存在,例如DPDK就是典型的内核旁路,从网卡收到的网络报文直接映射到用户态的内存空间,由此减少了一次内核到用户态的内存拷贝,也省去了内核对于网络报文的一系列处理流程;而网卡卸载则是网卡硬件功能,随着虚拟化的兴起,有不少网卡可以实现VxLan的加解封装卸载。 对于RDMA而言,上述两项技术都有采用。具体而言,RDMA采用专用的协议栈,直接将用户态的内存数据映射到网卡,不会流经传统的内核报文处理流程;此外,对于网卡卸载,RDMA网卡卸载的是**整个传输层的逻辑**,避免了消耗主机CPU处理流控的负担。由此可以最大程度地降低主机CPU的使用,并且减少传输过程的时延。 ### 1.1.2 网络侧
在网络侧,如果说SDN解决的是路由控制的问题,那么RDMA要解决的是流量和拥塞控制的问题。要解决什么样的流量呢?如果是点对点两两互打的话,这个对交换机来说并没有什么太大的压力,每两点产生的流量再大,有线速保障的交换芯片都可以从容应对。但是如果碰到多打一或者高速端口打低速端口的情况,那交换机芯片再强大也无法处理,必然会出现队列拥塞。对这种情况只能从源端进行解决,把原来的大流量变成原来的N分之一,出口那边才可能扛住。对此,在源端分流最常用的方法是从TCP的端侧流控,但这有一个缺点,速度比较慢,有可能对端反馈过来的时候在网络的中途就已经产生丢包了。于是有了RDMA,可以做端网端的全程流控,整个网络都可以参与流量拥塞的反馈调整 。 ## 1.2 技术特征 从以上的分析可以看出,RDMA对于端到端的网络传输做了多重的优化,其定位是高性能的网络技术,所带来的效果主要体现在如下几个方面: **1、减轻CPU负荷:**通过主机侧内核旁路零拷贝以及网络对于传输控制协议的卸载,可以极大地解放主机的CPU,从侧面提升计算效率; **2、拥塞快速处理:**除了端侧外,网络侧也直接参与拥塞处理,可以第一时间检测到报文的拥塞堆积,并且及时有效地进行反馈,避免报文大规模的重传; **3、低延时:**低延时是RDMA最显著的特征,主机侧的精简处理以及网络侧的拥塞及时反馈,可以有效确保时延的可预期性,提升通信的效率。 此外,由于数据中心组要采用以太网交换机进行组网,其高吞吐的特性依然能够保证。 # 第2章 RDMA应用 -- ## 2.1 应用场景 通过第一章中对于RDMA技术原理的分析,可以看出,RDMA在网络技术中主要解决的是拥塞控制的问题,同时在主机侧也是采用了内核旁路与网卡卸载等一系列方法降低网络通信的开销,本节从这两个角度切入考察其适用的业务场景。 **1、高性能MPI计算** 高性能MPI计算其实是最早使用Infiniband/RDMA的应用场景,通常在大型科研机构的超算中心有应用。其程序通常使用MPI框架进行开发,MPI的底层调用RDMA的API进行网络通信。MPI计算通常在天文气象、流体力学等科学计算领域有大量的使用,但在企业级市场中普及度不高。 **2、大数据/AI类的应用** 大数据/AI类的应用通常涉及到海量数据的搬运与交互,兼具计算密集、网络密集与I/O密集的特征,因此非常适合通过RDMA技术进行集群优化。大数据/AI领域常见的项目,例如Hadoop、Spark、TensorFlow、Pythorch等,都已经加入了对于RDMA通信接口的支持。 **3、 分布式存储/数据库** 分布式存储或者分布式数据库也是高吞吐数据密集型的应用。随着SSD以及NVMe技术的引入,I/O的速度也大幅增长。在这其中,Samba文件共享系统、Ceph分布式存储等都加入了对于RDMA通信接口的支持。在分布式数据库领域,有些数据库采用了计算存储分离的设计,在存储部分也会用RDMA进行加速,例如阿里巴巴的PolarDB。内存数据库方面,也有相应的采用RDMA进行网络设计的研究,甚至是对Redis的RDMA化改造。 ## 2.2 应用案例 当前RDMA的使用案例主要集中于互联网企业,相应的标准组织也在积极推动,同时也出现了一些提供RDMA专用技术服务的公司。 微软是在数据中心大规模部署RDMA的第一家HyperScale公司。微软在2015/6/7/8年的Sigcomm 有大量的论文来讲RDMA在数据中心的部署。 FaceBook主导的OCP(Open Computing Project)对于推动网络的开放解耦与RDMA的应用也做了许多的工作。 值得一提的是,整个RDMA网络栈中,有一个单点,那就是迈络思(Mellanox)的智能网卡。迈络思对RDMA整个技术栈的贡献很大,它本身就是InfiniBand与RDMA技术的主要发明者。 从2016年开始,阿里巴巴就投入专项研究,以改造RDMA、提高传输性能。从网卡底层开始设计满足大规模应用的网络,基于RDMA网络技术的云存储和电商数据库服务器可以从容地应对峰值流量考验。 百度公司在2014年前后开始引入RDMA网络,先后部署了lnfinband集群和RoCEv1集群。2015年,百度分别在SZWG机房和YQ01机房大规模部署了RoCEv2集群,分别承载了深度学习,语音识别和自然语言处理等相关的机器学习任务。目前RDMA集群总体规模为600台左右,这是国内比较大的一个RoCEv2网络。 京东人工智能研发团队在分布式的模型训练场景中,也使用了RDMA技术,针对模型文件的高性能传输,满足了分布式训练的需求。 华为于2018年发布了AI Fabric智能无损数据中心网络解决方案,为数据中心带来零丢包、低时延和高吞吐的极致性能。 星云Clustar作为香港科技大学陈凯团队创立的一家startup公司,其在RDMA方面有着深厚的研究积累,并且主要在AI场景进行开拓。星云利用RDMA网络解决了TensorFlow等训练框架在支持分布式训练方面的性能瓶颈。 其他互联网或者大云企业中,字节跳动、腾讯、UCloud、金山云等内部也或多或少地利用到了RDMA的技术,但细节的公开资料较少。 # 第3章 RDMA技术的开放讨论 本章对于RDMA技术的实现做一些开放性的剖析,以便于下一章对未来高性能网络技术的发展方向做更深入的探讨。 ## 3.1 性能调优 - RoCE的参数是否需要动态调优 对于RDMA而言,其对于网络的流量与拥塞控制,主要采用PFC以及ECN两种机制。 PFC主要是**流量控制**,当交换机的入口队列出现拥塞时,它会向上游的端口发送PFC帧,以短暂的阻塞上游端口的发送;ECN则是**拥塞控制**,在交换机的出口端打上标记,这样当接收端端收到带ECN标记的报文时,就可以向源节点反向发送控制报文,以调整源端的发送速率。 在这其中涉及到不少关键参数的设置: 1)PFC的触发阈值,以及收到PFC帧后端口暂停的时间间隔; 2)ECN的触发与恢复门限值,标记概率; 3)此外为了保证非RDMA流量的吞吐,也需要对交换芯片的缓存分配设置合适的比例; 上述参数的设置,将会对整个RoCE的表现产生一定的影响。通常门限值设置低,时延低,吞吐低;门限设置高,时延高,吞吐高。 对于这些参数的设置,通常需要一些经验式的参数调优,比如Mellanox的推荐设置便是一些静态的参数,而华为则采用了一种叫做AIECN或者动态ECN的方式,动态地根据当前的流量状况,对这些参数进行调优。 理论上后者自适应的参数调优应该会取得更好的效果,但是对于高速的网络而言,整个流量的状态瞬息万变的,基于当前的流量状态进行参数的调整,首先在调整速度上是否可行,其次对于下一个状态,优化值是否还有效?以及流量是否有具体的特征等等,这些都是值得商榷的。在一些简单场景的测试过程中,动态调整的方式暂时还未起到明显的效果 ## 3.2 RDMA是否需要无损网络的支持 RDMA的目标是实现高性能的网络传输,其中需要避免因为网络丢包而引起的大规模重传,重传会导致很严重的性能损耗与开销。因此为了配合RDMA,通常在网络侧需要做到无损不丢包(lossless)。在RoCE具体的实现中,主要是利用了PFC的流量控制机制,以及ECN的拥塞控制机制。 **但实现网络的无损与网络的高吞吐存在一定的矛盾**,尤其是PFC的机制,一旦出现拥塞,它会短暂的阻塞端口的传输,并且在稍微大一些的网络中还会出现PFC的头端死锁,由此会大大降低网络的吞吐。 因此现在也有一种呼声是并不需要一张严格无丢包的网络,允许少量的网络丢包可以发挥网络的高吞吐能力,尤其是对于数据中心Fabric的高吞度组网架构。另一方面,则是在重传的机制上以及拥测控制的机制上做一些改进,使得能够尽量减少丢包,并且当丢包出现的时候,也能够以很小的代价对网络进行恢复。 此外即使是当前无损网络的实现中,通常也是尽量减少PFC的出现,以防止其对网络的吞吐造成阻塞,这样对于PFC与ECN的参数设置就提出了很高的要求,更多的是希望当网络出现拥塞时,ECN的机制首先发挥作用,而PFC只是作为紧急情况下的一个补充手段。 ## 3.3 大规模组网的限制 从第1章的分析可知,RDMA的网络技术具有超低延时、高吞吐的特性。但是对于数据中心而言,能否支持大规模的可扩展组网是也是其中的一个重要考量因素,在这一点上很不幸,当前的RDMA网络存在一些瓶颈。 其最主要的原因还是**在于硬件网卡的限制之上**,RDMA将所有的传输层逻辑都卸载到硬件网卡上进行维护,从而大大降低主机CPU的处理负担,并降低了时延。但是硬件RDMA有连接数量的限制,通常在数千量级,这对整个RDMA网络的可扩展规模有较大的影响,很难与大型数据中心上万量级的服务器规模相匹配。这也是为何当前最大规模的RDMA集群目前也只能在1000台物理服务器左右,通常适用于机器学习训练以及分布式存储等专用集群。 与之相对应的,TCP的传输状态通常都是靠CPU和内存进行维系的,因此只要内存足够大,其连接数可以扩展到百万级别,非常适合大规模云数据中心场景。如果不考虑硬件卸载,纯依赖内核旁路+用户态简化流控+网络侧拥塞控制,也即将RDMA网卡的功能分别转移到CPU用户态与网络侧进行实现,是否能够达到相对应的效果,是有待研究的课题。 ## 3.4 RDMA实现方式的探讨 RDMA对于网络侧的主要要求便是流量与拥塞的控制。从控制论的角度而言,无非就是一个负反馈的控制系统。而在具体的实现中,主要涉及到三点: 1) 一是如何有效地检测到拥塞; 2) 二是如何将拥塞信息有效地传播到上下游的链路上; 3)三是各端点收到拥塞信息后如何进行调整,并且能最好做到全局最优; 在这其中,拥塞的检测通常发生在交换机芯片的缓存管理中,交换芯片一般都能够有效通过当前队列中的报文数量来判断是否有拥塞发生,当然对于拥塞的阈值需要做比较好的设置;其次是如何有效地传播拥塞的信息,一种方法是发送标准的PFC以及ECN的帧,另外像阿里的HPCC还采用了当前比较流行的INT技术来对当前的拥塞状态进行记录与传输,除了简单的标记拥塞事件外,INT所携带的信息还可以包括拥塞的比例以及来回RTT的测量等,以便于上下游节点做更好的决策。三是最后的策略调整,根据所测量到的拥塞信息,能够及时有效的调整源端的发送速率,最理想的情况是调整到全局最优的速率,既不造成丢包,也不浪费带宽,另外还要能够保证流量的公平性,尤其是在多打一的场景之下。 # 第4章 高性能集群计算的未来展望 本章将基于前述对于RDMA应用现状与分析的基础之上,对未来RDMA以及高性能网络与集群技术的发展方向做更深入的探讨。 ## 4.1 网络架构优化 – 流控与选路的结合 在网络架构上,SDN通常能够实现更灵活的选路控制,而RDMA主要处理网络的拥塞流控,两者此前一般都独立存在。RDMA把端到端的网络通信做到了极致,如果能结合上整体的网络视图,两者相结合必将能够实现更好的网络优化。 可以试想Leaf-Spine的网络通信场景,当一个Spine的出端口出现拥塞时,一种方法是通过拥塞控制的手段,降低Leaf服务的发送速率;另外也可以采用流量调度的方式,通过SDN控制器,将部分的Leaf流量切换到另一个空闲的Spine中,这样可以实现整个网络的吞吐最优。
## 4.2 集群应用的通信结构优化 如果以更高的视野来看,除了网络侧的高性能网络优化外,在应用方面也需要从源头对集群应用的**通信结构**进行优化。
例如在当前的分布式学习计算中,比较常用的是PS-Worker式的汇总型通信,这样无疑会出现多打一的场景,对PS节点将会造成一定的压力,即使网络层面能够很好的处理拥塞,但整体的吞吐量仍然会有所限制。对此,另外一种Horovod的分布式训练,则将通信的结构进行了更改,变成了环状的通信,这样就可以避免出现多打一造成单一节点拥塞瓶颈的出现,但这样也会出现单点失效或者跳数增多与时延加长的性能损失。因此现在还有一种分布式的AllReduce的方式,是结合了汇总型与环状处理两者各自的优势,对模型进行了综合的优化。
## 4.3 合适的位置进行计算 当然对于高性能集群计算而言,更高一层的视角是能够结合应用的特征以及体系架构的条件,来进行整体的、综合的优化。随着摩尔定律逐渐走向瓶颈,异构芯片以及领域型芯片将再次迎来爆发期,当前异构主要有网络芯片、GPU芯片、CPU芯片、FPGA芯片等。每种都有它擅长的处理领域以及适用场景,比如大吞吐量转发以及简单的报文处理可以交给网络芯片,而矢量并行部分的计算可以交给GPU,复杂逻辑与深度报文检测处理可以交给CPU,另外同时兼顾性能与灵活性的场景可以通过FPGA来进行实现。因此对于一个专用的应用来说,如果需要能够最高性能的发挥这些硬件的优势,则必须打破网络计算与存储的思维框架,而进行整体上的跨系统设计(cross-system design)。总之是网络与计算将出现大融合的趋势,对于一个整体的系统而言,应该让计算发生在最合适的位置,充分利用异构芯片所带来的价值。
具体的例子,同样是上节分布式机器学习问题,还有一种网内计算(In-Network Computing)的思路,也即将每个节点分布式计算出来的结果由大吞吐的网络进行规约计算,充分发挥网络芯片高吞吐高聚合的优势,例如netCache,SwitchML等已经有相应的实现,Mellanox在MPI计算方面,也已经将部分的计算能够做到交换机中(SHARP架构)。随着异构的各领域可编程芯片以及云原生编排平台的出现,异构资源整体上的灵活调度与排布实现逐渐成为可能,最终的结果是使得大型的数据流转型的计算能够在最短的时间内完成,使得数据的处理与计算达到一个更好的平衡点。
# 第5章 小结 RDMA将端到端的网络通信做到了极致,目标上是为了实现快速的远程数据搬运,技术上是多重优化的结合体(涉及到主机侧的内核旁路、传输层网卡卸载以及网络侧的拥塞流控), 达到的效果是低时延、高吞吐、低CPU损耗。与此同时,当前RDMA的实现也存在组网规模受限,配置与改造难度大等局限性。 随着数据中心数据量的巨量增长与算力密集度的提升,RDMA流量在数据中心中的比重将逐步上升。它的出现具有重大意义,同时也对高性能的计算集群的演进具有一定的启发性: 1、RDMA在云数据中心中的引入,是大数据与智能计算大规模普及的必然结果,它也将成为数据智能时代的网络利器; 2、高性能集群计算,除了RDMA端到端的高性能通信外,还需要从网络的整体上、应用的通信结构上、以及体系架构的异构性上做整体的优化; 3、国产化方面,对于RDMA技术的应用与改进有一些突破,但是RDMA的网卡芯片与网络交换芯片尚无法自主,国产化的道路还相对漫长。 4、RDMA技术实现方面,技术复杂度与配置便捷性仍有可改进的空间,实现方式上有一些组合创新的可能。 > 文章作者周雍恺,来源于关注微信公众号“电子商务与支付国家工程研究中心”,如有侵权,请联系网站删除(ngdcn_admin@163.com)。 ``
8
赞
本文由 @NGDCN 于2022-10-09发布在 未来网络技术网,如有疑问,请联系我们(ngdcn_admin@163.com)。
上一篇:
【NSDI 2022】Justitia:硬件内核旁路网络中的软件多租户
下一篇:
32张图详解BGP路由协议:BGP基本概念、BGP对等体、BGP报文类型、BGP状态机等
有话要说...
取消回复
RDMA
回复
8
赞
最近发表
【Sigcomm 2023】 Achelous:超大规模云网络中如何实现网络的可编程性、弹性和可靠性
【ICNP 2021】基于弱监督学习的ISP自助BGP异常检测
【ICNP 2021】怒赞!上海交大团队先于谷歌提出光电混合数据中心慢切换方案
【中科院】为什么chiplet需要标准?
一文读懂Dragonfly拓扑
Alibaba高性能通信库ACCL介绍
【微软】MSCCL Github仓库介绍
【英伟达】NCCL Github仓库介绍
【MPI】MPI组和通讯器介绍
【MPI】MPI Reduce和Allreduce函数
热门文章
【Infiniband手册】第9章:传输层
2022-10-27
【推荐】计算机网络顶级会议:快速检索目录
2022-11-07
一文读懂Dragonfly拓扑
2023-02-24
【Sigcomm 2023】 Achelous:超大规模云网络中如何实现网络的可编程性、弹性和可靠性
2023-10-06
Alibaba高性能通信库ACCL介绍
2023-02-21
【ICNP 2021】怒赞!上海交大团队先于谷歌提出光电混合数据中心慢切换方案
2023-05-10
【ICNP 2021】基于弱监督学习的ISP自助BGP异常检测
2023-05-10
【微软】MSCCL Github仓库介绍
2023-02-20
标签列表
PFC
(3)
流量控制
(6)
拥塞控制
(20)
网络拓扑
(8)
RDMA
(42)
TCP/IP
(21)
CXL
(5)
思科
(5)
交换机芯片
(5)
数据中心网络
(11)
英伟达
(5)
Infiniband手册
(8)
NSDI
(12)
SIGCOMM
(22)
华为
(5)
HPCC
(5)
交换机
(8)
数据中心
(4)
RoCE
(7)
存储
(11)
Memory Fabric
(4)
NS3
(8)
超算
(5)
MPI
(10)
集合通信库
(4)
有话要说...