基于RDMA的云服务能力实践与探索

admin 2023年7月9日12:18:29评论49 views字数 5031阅读16分46秒阅读模式

基于RDMA的云服务能力实践与探索

01

   背景   

      随着基于大数据大模型构建的数据系统越来越有商业价值,机器学习的玩家也越来越多,数据量越来越大。为解决海量数据在服务器之间的同步效率问题,RDMA(Remote Direct Memory Access) 技术逐渐走进了网络技术人员的视野。RDMA为什么能够成为机器学习中网络加速的一个炙手可热的技术呢?本文将给你一一解答,同时带来详细的干货分享。
02

   传统TCP通信的痛点   

      TCP (Transmission Control Protocol )是网络协议族中的一个主要协议,为用户提供可靠、有序、错误检测的字节流传输服务。其来源于20世纪60年代美国国防部主导开发的一个网络项目ARPANET(Advanced Research Project Agency Net),当时运行的物理链路带宽只有几Mbps(Megabits per second),如今物理带宽已达到几十或几百Gbps(Gigabytes per second )。其已不能很好的适用于当前的高速网络环境。

      数据中心服务器广泛采用Linux操作系统,其收发报文流程如下图所示。


基于RDMA的云服务能力实践与探索

1 Linux内核收发报文流程

      报文接收过程主要耗时在于中断带来的任务栈切换,两次的内存复制,标准冗长的内核协议栈程序等操作。目前这一架构已经无法满足高性能计算、深度神经网络等业务场景下的时延和网络带宽要求。网络带宽和时延不提高,会导致CPU (Central Processing Unit)、GPU(Graphics Processing Unit)因为等待数据而空闲,算力的升级扩容并不能带来业务加速增效。

     RDMA技术致力于提供一个无损,超低时延,超高吞吐量的网络,进而提高CPU/GPU效能,能很好的解决深度神经网络学习和AI(Artificial Intelligence)训练中的带宽和时延问题。因而,RDMA网络是目前大模型训练平台的首选技术。

03

   RDMA技术介绍   

3.1 RDMA技术介绍

      RDMA扩展网卡的能力,不需要CPU参与,就可以实现在两台通信的主机间完成内存数据复制操作。RDMA提供了三种技术规范实现方式,分别是IB (Infiniband), iWARP (Internet Wide Area RDMA Protocol) 和RoCE (RDMA over Converged Ethernet)。三种实现都支持IBTA (InfiniBand Trade Association) 制定的RDMA Verbs原语和数据类型,提供统一的业务编程接口供用户使用,达到业务无缝切换。

      IB需要专用的IB网卡和IB交换机。性能优,但网卡和交换机的价格昂贵,兼容性差。IWARP 技术栈需要通用以太网交换机和支持iWARP功能的以太网卡。报文依赖TCP连接,TCP连接需要占用内核资源,市场认可度低于RoCE。RoCE技术栈只需要通用以太网网卡和交换机,利用PFC(Priority-based Flow Control )和ECN (Explicit Congestion Notification) 拥塞控制算法实现无损传输。其综合性能较好,兼容性较优,价格也很普惠。RoCE市场认可度很高,用户可以根据自己的使用场景和实际需求选择对应的产品。

3.2 RoCE技术说明 

     RoCE最新版本为RoCEv2,IETF标准规定采用UDP (User Datagram Protocol) 4791端口来标识RoCEv2数据包。RoCEv1只支持二层MAC(Media Access Control)互访,RoCEv2支持三层IP访问,实现了报文的可路由功能,打破了业务的二层局域网部署限制。RoCEv2也被称作RRoCE ( Routable RoCE),其重新设计了拥塞控制算法。

      以太网络转发可以根据UDP的源端口做负载均衡,提高吞吐量。RoCEv2用UDP和IP 头部信息实现了原IB的网络层功能。RoCEv2 同时支持IPv4和IPv6。

基于RDMA的云服务能力实践与探索

图2 RoCEv2 报文说明

3.3 RoCE性能

  • TCP vs RoCE
      由于业务需要使用RDMA加速的RPC (Remote Procedure Call )功能,选择Apache 社区bRPC( better Remote Procedure Call )进行时延和带宽测试评价,TCP和RoCEv2场景下的数据如图3所示。结果显示RDMA在带宽和时延方面要明显高于TCP网络,带宽几乎可以达原来的两倍。
基于RDMA的云服务能力实践与探索

图3 TCP vs RoCE 带宽时延对比

  • RoCE vs IB

      由于最近大模型应用CHAT GPT比较流行,越来越多的厂商开始进行大模型训练的研究,推升了RoCE网络的需求,我们探索用RoCE网络代替IB,为GPU训练的提供合理的加速增效解决方案。为此对RoCE和IB的性能进行了测试验证对比。RoCE(单卡最大100Gbits/s) 单队列可达92.8Gbits/s ,16队列可达196Gbits/s (两个100G卡组合成Bond接口)。IB带宽(单卡最大200Gbits/s) 单队列可以达到 185Gbits/s, 16个队列测试可达196Gbits/s。时延接近,最短时延在2us左右。RoCE方案更加具有性价比和大规模部署应用前景。

基于RDMA的云服务能力实践与探索

图4 RoCE vs IB 带宽对比

04

   OPPO云RDMA能力建设   

4.1 RDMA资源调度平台

      云原生时代,从一开始就规划了RDMA的弹性伸缩能力,用户可以根据业务需要申请RDMA卡,用于业务加速。系统主要组件图如图5所示。

基于RDMA的云服务能力实践与探索

图5 资源调度架构图

      下面从基础设虚拟化层、无损网络拥塞控制算法、资源管理与调度、智能业务运营系统四个维度说明RDMA云化所做的工作。

  • 基础设施虚拟化层

      将一个物理网卡虚拟成若干个相互独立的子卡,用户可以根据需要申请一个或者多个RDMA卡。同时网络虚拟化组件可将节点上可用RDMA子卡数目上报给系统的调度器。调度器根据任务请求进行分配和调度。容器业务可以使用RDMA业务。

  • 无损网络拥塞控制算法

      在服务器和交换机对RDMA流量进行标记,即PFC和ECN的方式来进行拥塞控制,服务器上通过DSCP(Differentiated Services Code Point )位标识RDMA业务流,交换机根据DSCP进行流分类、拥塞管理和死锁检测。基础网络架构采用CLOS架构建设,非阻塞多交换网,网络保证足够高的加速比。     

  • 资源管理与调度

      数字化管理RoCE和IB等可用的网卡类型及可用资源,系统根据用户的业务申请及资源请求,灵活调度计算实例到对应计算节点上。

  • 智能业务运营系统

      对RDMA的网卡和交换机进行监控,实时了解系统资源使用率和健康情况,及时介入业务扩容和故障处理等紧急情况。

   4.2 ORPC业务   

4.2.1 ORPC设计

      虽然供应商提供了通用的开发接口,但这些接口针对特定的RDMA业务场景,如HPC,GPU训练等高性能计算领域,无法满足普通RPC业务的需求。RDMA技术涉及到底层专用硬件、通信协议、特有的Verbs接口及晦涩难懂的C语言等问题。业务用户自主开发基于RDMA的应用是有一定困难的。ORPC可以说做到了让用户业务无感知的平滑迁移到RoCE网络上来,用户只需要专注于业务研发,无需关注内核驱动适配,性能调优,软件版本兼容性等问题,实现真正的高效业务迁移。

      OPPO云平台开发集成了ORPC( Oppo Remote Procedure Call)应用,天然支持RoCE,帮助用户无缝切换到RDMA编程。ORPC同时提供TCP和RDMA通信能力,兼容TCP和RDMA模式,用户根据需要选择接入业务方式,如图6所示。其业务兼容性高,ORPC 同时开启TCP/RDMA,客户端根据自身情况,选择TCP/RDMA接入。ORPC能够灵活适配业务使用的特定版本的Protocolbuffer,gflags等中间件依赖库。

基于RDMA的云服务能力实践与探索

图6  ORPC通信场景

      ORPC采用直接调用Verbs接口的方式进行业务开发,之所以没有使用社区的UCX(Unified Communication X)框架是因为多一次C库调用会产生对第三方产品的依赖,实际测试性能和稳定性没达到预期。第三方的RDMA_CM库在虚拟容器网络中的兼容性差,运行不够稳定,会发生系统崩溃。

      ORPC优先支持C++语言,后期计划推Golang版本的ORPC。

4.2.2 ORPC实践

实测ORPC在单流和多流场景下带宽提升都很明显。100G网卡可以测试到80-90G的样子。我们的推理、训练采用RoCE进行加速验证发现,RoCE可以显著提高升推理的性能,收益提升明显。对于其他被时延和带宽困扰的业务,可以尝试RoCE加速,相信会带来一定的收益。

基于RDMA的云服务能力实践与探索

图7  ORPC 带宽对比图

  • 业务改造

      服务端默认同时工作在RDMA模式和TCP会话模式,用户可以通过参数设置工作方式,如果是RDMA方式,需要指定RDMA设备,如果不指定或者端口索引指定错误,会导致程序异常。ORPC建立会话接口只需要提供必要连接参数即可,应用程序逻辑无需更改。

1)服务端必选参数说明:

-rdma_device     说明使用的RDMA设备

-rdma_gid_index  RDMA设备的索引

-use_rdma     true 为rdma,默认tcp

-port 指定监听端口

2)客户端参数:

-rdma_device     说明使用的RDMA设备

-rdma_gid_index  RDMA设备的索引

-use_rdma     true 为rdma,默认tcp

  • 自动生成的roce yaml文件
apiVersion: v1kind: Podmetadata:  name: if-roce-test231  namespace: nethouse-testspec:  nodeName: 1x.x.x.231  containers:    - name: if-roce-test231      image: hub.x.y.z/inference/inference:rdma-1.0.0      resources:        limits:          devices.csp.io/rdma: "1"        requests:          devices.csp.io/rdma: "1"      volumeMounts:        - mountPath: /gx-infer          name: gx-infer  volumes:   - name: gx-infer     hostPath:       path : /home/service/var/data       type: Directory... ...
  • 容器运行命令
#docker run --net container:7a9bc59dd57afe8e91504ecefcdf720097fb919fc76a9aab7ba13ac265b93799 --privileged --device=/dev/infiniband/rdma_cm --device=/dev/infiniband/uverbs1 --name orpc ... hub.x.y.z/orpc-rdma/orpc-rdma-depy:v1.0
05

   RDMA应用前景与展望      

      以RoCE为代表的RDMA技术正展示着令人兴奋的应用潜力。ORPC只是其中一个应用,实践收益得到了深度学习推理等应用的首肯。相信在不久的未来,RoCE承载的大模型训练平台会越来越成熟。同时NVMe over RoCE 也会逐步落地。

基于RDMA的云服务能力实践与探索
作者介绍

Junwei Wang  

OPPO高级后端工程师

主要负责云计算网络架构设计与开发实现,长期致力于网络新技术实践与创新。

END
About AndesBrain

安第斯智能云

OPPO 安第斯智能云(AndesBrain)是服务个人、家庭与开发者的泛终端智能云,致力于“让终端更智能”。作为 OPPO 三大核心技术之一,安第斯智能云提供端云协同的数据存储与智能计算服务,是万物互融的“数智大脑”。

原文始发于微信公众号(安第斯智能云):基于RDMA的云服务能力实践与探索

  • 左青龙
  • 微信扫一扫
  • weinxin
  • 右白虎
  • 微信扫一扫
  • weinxin
admin
  • 本文由 发表于 2023年7月9日12:18:29
  • 转载请保留本文链接(CN-SEC中文网:感谢原作者辛苦付出):
                   基于RDMA的云服务能力实践与探索http://cn-sec.com/archives/1860540.html

发表评论

匿名网友 填写信息