基于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操作系统,其收发报文流程如下图所示。

图片

图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。

图片

图2 RoCEv2 报文说明

3.3 RoCE性能

  • TCP vs RoCE

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

图片

图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方案更加具有性价比和大规模部署应用前景。

图片

图4 RoCE vs IB 带宽对比

04

   OPPO云RDMA能力建设   

4.1 RDMA资源调度平台

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

图片

图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等中间件依赖库。

图片

图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加速,相信会带来一定的收益。

图片

图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的云服务能力实践与探索​​​​​​​​​​​​​​

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.hqwc.cn/news/586928.html

如若内容造成侵权/违法违规/事实不符,请联系编程知识网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

数据库-root密码丢失的重置方案(win11环境)

当在windows系统中安装的mysql由于操作不当,或者密码遗忘,今天测试了一下,可以用以下方法重置root的密码。 mysqlwindows环境root密码重置问题 在win10/11环境下mysql8密码遗忘后的重置密码方案。 停止mysql服务 查找windows中的mysql服务名称…

isaacgym 渲染黑屏

问题描述: isaacgym安装完IsaacGym_Preview_4_Package.tar.gz之后,运行python joint_monkey.py没有任何内容现实,但是终端还是正常输出信息。 环境是ubuntu22服务器,python3.8,nvidia Driver Version: 515.65.01 CUDA…

工具推荐:公网访问内网开发环境、将服务暴露到公网、远程调试:小程序、支付调试、远程桌面、公网访问内网站点、数据库

下载地址 Windows 64位 (切勿直接在压缩文件中操作,全部解压到一处后再操作,请关闭某60(会胡乱拦截),可用其他任意安全软件)Mac OS X 64位 (给fastnat执行权限 chmod x ./fastnat.. 终端运行二进制,自行百度,当然建议使用docker方式安装)Linux 64位 (给fastnat执行权限 chmod …

Node.js------Express

◆ 能够使用 express.static( ) 快 速 托 管 静 态 资 源◆ 能够使用 express 路 由 精 简 项 目 结 构◆ 能够使用常见的 express 中间件◆ 能够使用 express 创建API接口◆ 能够在 express 中启用cors跨域资源共享 一.初识Express 1.Express 简介 官方给出的概念&#xff…

Outlook邮箱后缀是什么?如何改邮箱后缀?

Outlook邮箱后缀可以更改吗?微软有哪些后缀的邮箱? 对于许多刚接触Outlook邮箱的新手来说,了解Outlook邮箱后缀是必不可少的一步。那么,Outlook邮箱后缀究竟是什么呢?接下来,AokSend就来详细探讨一下这个问…

未来的智能起航:探索AI技术的创业新天地

在科技飞速发展的当今世界,人工智能(AI)已经成为一个热门话题。不再是科幻小说中的概念,AI正逐渐融入我们的生活和工作中,开创了全新的创业市场和机会。人工智能(AI)的飞速发展不仅引领了科技的…

ALPHA开发板上PHY网络芯片LAN8720

一. 简介 正点原子的开发板 ALPHA开发板,有线网络硬件方案所使用的也是最常用的一种方案,IMX6ULL芯片内部是自带 MAC网络芯片的,所以,也就是采用 "SOC内部集成网络MAC外设 PHY网络芯片方案"。 ALPHA开发板使用的PHY网…

python coding with ChatGPT 专题2| 全解递归算法

文章目录 递归与栈的关系如何思考递归汉诺塔 经典题目入门:斐波那契数列分治法:归并排序树的递归遍历组合问题:子集搜索问题:N皇后 拓展阶乘的迭代法斐波那契数列迭代法青蛙跳 参考文献 掌握递归是解决许多编程问题的关键&#xf…

Ethernet修改网卡名称

如何修改Ethernet网卡名称 kernel/common/net/core/dev.c ---------------------------------------------------------------------- 8849/** 8850 * register_netdev - register a network device 8851 * @dev: device to register 8852 * 8853 * Take a completed network d…

基于java实现的沙县小吃点餐系统

开发语言:Java 框架:ssm 技术:JSP JDK版本:JDK1.8 服务器:tomcat7 数据库:mysql 5.7(一定要5.7版本) 数据库工具:Navicat11 开发软件:eclipse/myeclip…

“探秘数据结构:栈的奇妙魔力“

每日一言 兰有秀兮菊有芳,怀佳人兮不能忘。 —刘彻- 栈 栈的概念及结构 栈(Stack) :一种特殊的线性表,其只允许在固定的一端进行插入和删除元素操作。进行数据插入和删除操作的一端称为栈顶,另一端称为栈底。栈中的数据元素遵守…

表面沉降位移监测仪的工作原理

TH-WY1表面沉降位移监测仪是一种专门用于监测地表沉降和位移的仪器。它通过精确测量地表的竖直位移和水平位移,来评估结构物的沉降情况和稳定性。这种监测仪通常应用于水利、交通、矿山等领域的边坡监测工作中,以确保工程设施的安全运营。 表面沉降位移监…