龙溪网站建设企业,wordpress 只更鸟翻页设置,域名注册需要多少钱,四川广安爱众app同城RDMA(RemoteDirect Memory Access)技术全称远程直接内存访问#xff0c;就是为了解决网络传输中客户端与服务器端数据处理的延迟而产生的。它将数据直接从一台计算机的内存传输到另一台计算机#xff0c;无需双方操作系统的介入。这允许高吞吐、低延迟的网络通信#xff0c;…RDMA(RemoteDirect Memory Access)技术全称远程直接内存访问就是为了解决网络传输中客户端与服务器端数据处理的延迟而产生的。它将数据直接从一台计算机的内存传输到另一台计算机无需双方操作系统的介入。这允许高吞吐、低延迟的网络通信尤其适合在大规模并行计算机集群中使用。RDMA通过网络把资料直接传入计算机的内存中将数据从一个系统快速移动到远程系统内存中而不对操作系统造成任何影响这样就不需要用到多少计算机的处理能力。它消除了数据包在用户空间和内核空间复制移动和上下文切换的开销因而能解放内存带宽和CPU周期用于改进应用系统性能。 本次详解我们从三个方面详细介绍RDMARDMA背景、RDMA相关工作、RDMA技术详解。
一、背景介绍 1.1 传统TCP/IP通信模式 传统的TCP/IP网络通信数据需要通过用户空间发送到远程机器的用户空间。数据发送方需要讲数据从用户应用空间Buffer复制到内核空间的Socket Buffer中。然后内核空间中添加数据包头进行数据封装。通过一系列多层网络协议的数据包处理工作这些协议包括传输控制协议TCP、用户数据报协议UDP、互联网协议IP以及互联网控制消息协议ICMP等。数据才被Push到NIC网卡中的Buffer进行网络传输。消息接受方接受从远程机器发送的数据包后要将数据包从NIC Buffer中复制数据到Socket Buffer。然后经过一些列的多层网络协议进行数据包的解析工作。解析后的数据被复制到相应位置的用户空间Buffer。这个时候再进行系统上下文切换用户应用程序才被调用。以上就是传统的TCP/IP协议层的工作。 然而如今随着社会的发展我们希望更快和更轻量级的网络通信。 1.2 通信网络定义 计算机网络通信中最重要两个衡量指标主要是指高带宽和低延迟。通信延迟主要是指处理延迟和网络传输延迟。处理延迟开销指的就是消息在发送和接收阶段的处理时间。网络传输延迟指的就是消息在发送和接收方的网络传输时延。如果网络通信状况很好的情况下网络基本上可以 达到高带宽和低延迟。
1.3 当今网络现状 当今随着计算机网络的发展。消息通信主要分为两类消息一类是Large Messages在这类消息通信中网络传输延迟占整个通信中的主导位置。还有一类消息是Small Messages在这类消息通信中消息发送端和接受端的处理开销占整个通信的主导地位。然而在现实计算机网络中的通信场景中主要是以发送小消息为主。所有说发送消息和接受消息的处理开销占整个通信的主导的地位。具体来说处理开销指的是buffer管理、在不同内存空间中消息复制、以及消息发送完成后的系统中断。
1.4 传统TCP/IP存在的问题 传统的TPC/IP存在的问题主要是指I/O bottleneck瓶颈问题。在高速网络条件下与网络I/O相关的处理的高开销限制了可以在机器之间发送的带宽。这里高额开销是数据移动操作和复制操作。具体来讲主要是传统的TCP/IP网络通信是通过内核发送消息。Messaging passing through kernel这种方式会导致很低的性能和很低的灵活性。其中性能低下的原因主要是由于网络通信通过内核传递这种通信方式存在的很高的数据移动和数据复制的开销。并且现如今内存带宽性相较如CPU带宽和网络带宽有着很大的差异。其中很低的灵活性的原因主要是所有网络通信协议通过内核传递这种方式很难去支持新的网络协议和新的消息通信协议以及发送和接收接口。
二、相关工作 高性能网络通信历史发展主要有以下四个方面TCP Offloading EngineTOE、User-Net Networking(U-Net)、Virtual interface ArchitectureVIA、Remote Direct Memroy Access(RDMA)。U-Net是第一个跨过内核网络通信的模式之一。VIA首次提出了标准化user-level的网络通信模式其次它组合了U-Net接口和远程DMA设备。RDMA就是现代化高性能网络通信技术。
2.1 TCP Offloading Engine 在主机通过网络进行通信的过程中主机处理器需要耗费大量资源进行多层网络协议的数据包处理工作这些协议包括传输控制协议TCP、用户数据报协议UDP、互联网协议IP以及互联网控制消息协议ICMP等。由于CPU需要进行繁重的封装网络数据包协议为了将占用的这部分主机处理器资源解放出来专注于其他应用人们发明了TOETCP/IP Offloading Engine技术将上述主机处理器的工作转移到网卡上。 这种技术需要特定网络接口-网卡支持这种Offloading操作。这种特定网卡能够支持封装多层网络协议的数据包这个功能常见于高速以太网接口上如吉比特以太网GbE或10吉比特以太网10GbE。
2.2 User-Net Networking(U-Net) U-Net的设计目标是将协议处理部分移动到用户空间去处理。这种方式避免了用户空间将数据移动和复制到内核空间的开销。它的设计宗旨就是移动整个协议栈到用户空间中去并且从数据通信路径中彻底删除内核。这种设计带来了高性能的提升和高灵活性的提升。 U-Net的virtual NI 为每个进程提供了一种拥有网络接口的错觉内核接口只涉及到连接步骤。传统上的网络内核控制整个网络通信所有的通信都需要通过内核来传递。U-Net应用程序可以通过MUX直接访问网络应用程序通过MUX直接访问内核而不需要将数据移动和复制到内核空间中去。
2.3 分布式计算深度学习场景采用RDMA的原因 由于传输带宽过低普通以太网络千兆网或 万兆网会出现多节点扩展效率极低、 计算资源严重浪费的现象。因此在 分布式深度学习训练场景中基于远程直接内存访问RDMA的网络通信成为新的选择。
1深度学习训练中模型参数较多。每处理一小片数据就需要更新模型参数计算粒度很细对网络传输的延迟容忍度非常低网络时延是影响计算性能的重要因素。
2深度学习普遍使用的 GPU 加速卡吞吐率非常高。如果数据搬运速度跟不上计算速度就容易造成计算资源浪费。
3在深度学习训练中系统调度、 数据加载和预处理均需要使用 CPU 资 源而基于传统以太网的网络传输也 需要消耗很多 CPU 计算资源这会影 响整个系统的效率。RDMA 的内核旁 路技术可降低 CPU 利用率提高整个 系统的效率。
三、RDMA详解 RDMA(Remote Direct Memory Access)技术全称远程直接内存访问就是为了解决网络传输中服务器端数据处理的延迟而产生的。 RDMA主要有以下三个特性1.Low-Latency 2.Low CPU overhead 3. high bandwidth
3.1 RDMA 简介 Remote数据通过网络与远程机器间进行数据传输。
Direct没有内核的参与有关发送传输的所有内容都卸载到网卡上。
Memory在用户空间虚拟内存与RNIC网卡直接进行数据传输不涉及到系统内核没有额外的数据移动和复制。
Accesssend、receive、read、write、atomic操作。
3.2 RDMA基本概念 RDMA有两种基本操作。
Memory verbs: 包括RDMA read、write和atomic操作。这些操作指定远程地址进行操作并且绕过接收者的CPU。 Messaging verbs:包括RDMA send、receive操作。这些动作涉及的接收方CPU发送的数据被写入由接收方的CPU先前发布的接受所指定的地址。 RDMA传输分为可靠和不可靠的并且可以连接和不连接的数据报。凭借可靠的传输NIC使用确认来保证消息的按序传送。不可靠的传输不提供这样的保证。然而像InfiniBand这样的现代RDMA实现使用了一个无损链路层它可以防止使用链路层流量控制的基于拥塞的损失[1]以及使用链路层重传的基于位错误的损失[8]。因此不可靠的传输很少会丢弃数据包。
目前的RDMA硬件提供一种数据报传输不可靠的数据报UD并且不支持memory verbs。 3.3 RDMA三种不同的硬件实现 目前RDMA有三种不同的硬件实现。分别是InfiniBand、iWarpinternet Wide Area RDMA Protocol、RoCE(RDMA over Converged Ethernet)。 目前大致有三类RDMA网络分别是Infiniband、RoCE、iWARP。其中Infiniband是一种专为RDMA设计的网络从硬件级别保证可靠传输 而RoCE 和 iWARP都是基于以太网的RDMA技术支持相应的verbs接口如图1所示。从图中不难发现RoCE协议存在RoCEv1和RoCEv2两个版本主要区别RoCEv1是基于以太网链路层实现的RDMA协议(交换机需要支持PFC等流控技术在物理层保证可靠传输)而RoCEv2是以太网TCP/IP协议中UDP层实现。从性能上很明显Infiniband网络最好但网卡和交换机是价格也很高然而RoCEv2和iWARP仅需使用特殊的网卡就可以了价格也相对便宜很多。 Infiniband支持RDMA的新一代网络协议。 由于这是一种新的网络技术因此需要支持该技术的NIC和交换机。 RoCE一个允许在以太网上执行RDMA的网络协议。 其较低的网络标头是以太网标头其较高的网络标头包括数据是InfiniBand标头。 这支持在标准以太网基础设施交换机上使用RDMA。 只有网卡应该是特殊的支持RoCE。 iWARP一个允许在TCP上执行RDMA的网络协议。 IB和RoCE中存在的功能在iWARP中不受支持。 这支持在标准以太网基础设施交换机上使用RDMA。 只有网卡应该是特殊的并且支持iWARP如果使用CPU卸载否则所有iWARP堆栈都可以在SW中实现并且丧失了大部分RDMA性能优势。 3.4 RDMA技术 传统上的RDMA技术设计内核封装多层网络协议并且涉及内核数据传输。RDMA通过专有的RDMA网卡RNIC绕过内核直接从用户空间访问RDMA enabled NIC网卡。RDMA提供一个专有的Verbs Interface而不是传统的TCP/IP Socket Interface。要使用RDMA首先要建立从RDMA到应用程序内存的数据路径 可以通过RDMA专有的Verbs Interface接口来建立这些数据路径一旦数据路径建立后就可以直接访问用户空间buffer。
3.5 RDMA整体系统架构图 上诉介绍的是RDMA整体框架架构图。从图中可以看出RDMA在应用程序用户空间提供了一系列verbs interface接口操作RDMA硬件。RDMA绕过内核直接从用户空间访问RDMA 网卡(RNIC)。RNIC网卡中包括Cached Page Table Entry页表就是用来将虚拟页面映射到相应的物理页面。
3.6 RDMA技术详解 RDMA 的工作过程如下:
1)当一个应用执行RDMA 读或写请求时不执行任何数据复制.在不需要任何内核内存参与的条件下RDMA 请求从运行在用户空间中的应用中发送到本地NIC( 网卡)。
2) NIC 读取缓冲的内容并通过网络传送到远程NIC。
3) 在网络上传输的RDMA 信息包含目标虚拟地址、内存钥匙和数据本身.请求既可以完全在用户空间中处理(通过轮询用户级完成排列) 又或者在应用一直睡眠到请求完成时的情况下通过系统中断处理.RDMA 操作使应用可以从一个远程应用的内存中读数据或向这个内存写数据。
4) 目标NIC 确认内存钥匙直接将数据写人应用缓存中.用于操作的远程虚拟内存地址包含在RDMA 信息中。
3.7 RDMA操作细节 RDMA提供了基于消息队列的点对点通信每个应用都可以直接获取自己的消息无需操作系统和协议栈的介入。 消息服务建立在通信双方本端和远端应用之间创建的Channel-IO连接之上。当应用需要通信时就会创建一条Channel连接每条Channel的首尾端点是两对Queue PairsQP。每对QP由Send QueueSQ和Receive QueueRQ构成这些队列中管理着各种类型的消息。QP会被映射到应用的虚拟地址空间使得应用直接通过它访问RNIC网卡。除了QP描述的两种基本队列之外RDMA还提供一种队列Complete QueueCQCQ用来知会用户WQ上的消息已经被处理完。 RDMA提供了一套软件传输接口方便用户创建传输请求Work Request(WRWR中描述了应用希望传输到Channel对端的消息内容WR通知QP中的某个队列Work Queue(WQ)。在WQ中用户的WR被转化为Work Queue ElementWQE的格式等待RNIC的异步调度解析并从WQE指向的Buffer中拿到真正的消息发送到Channel对端。 3.7.1 RDAM单边操作 (RDMA READ) READ和WRITE是单边操作只需要本端明确信息的源和目的地址远端应用不必感知此次通信数据的读或写都通过RDMA在RNIC与应用Buffer之间完成再由远端RNIC封装成消息返回到本端。
对于单边操作以存储网络环境下的存储为例数据的流程如下 1. 首先A、B建立连接QP已经创建并且初始化。 2. 数据被存档在B的buffer地址VB注意VB应该提前注册到B的RNIC (并且它是一个Memory Region) 并拿到返回的local key相当于RDMA操作这块buffer的权限。 3. B把数据地址VBkey封装到专用的报文传送到A这相当于B把数据buffer的操作权交给了A。同时B在它的WQ中注册进一个WR以用于接收数据传输的A返回的状态。 4. A在收到B的送过来的数据VB和R_key后RNIC会把它们连同自身存储地址VA到封装RDMA READ请求将这个消息请求发送给B这个过程A、B两端不需要任何软件参与就可以将B的数据存储到A的VA虚拟地址。 5. A在存储完成后会向B返回整个数据传输的状态信息。
单边操作传输方式是RDMA与传统网络传输的最大不同只需提供直接访问远程的虚拟地址无须远程应用的参与其中这种方式适用于批量数据传输。
3.7.2 RDMA 单边操作 (RDMA WRITE) 对于单边操作以存储网络环境下的存储为例数据的流程如下 1. 首先A、B建立连接QP已经创建并且初始化。 2. 数据remote目标存储buffer地址VB注意VB应该提前注册到B的RNIC(并且它是一个Memory Region)并拿到返回的local key相当于RDMA操作这块buffer的权限。 3. B把数据地址VBkey封装到专用的报文传送到A这相当于B把数据buffer的操作权交给了A。同时B在它的WQ中注册进一个WR以用于接收数据传输的A返回的状态。 4. A在收到B的送过来的数据VB和R_key后RNIC会把它们连同自身发送地址VA到封装RDMA WRITE请求这个过程A、B两端不需要任何软件参与就可以将A的数据发送到B的VB虚拟地址。 5. A在发送数据完成后会向B返回整个数据传输的状态信息。 单边操作传输方式是RDMA与传统网络传输的最大不同只需提供直接访问远程的虚拟地址无须远程应用的参与其中这种方式适用于批量数据传输。 3.7.3 RDMA 双边操作 (RDMA SEND/RECEIVE) RDMA中SEND/RECEIVE是双边操作即必须要远端的应用感知参与才能完成收发。在实际中SEND/RECEIVE多用于连接控制类报文而数据报文多是通过READ/WRITE来完成的。 对于双边操作为例主机A向主机B(下面简称A、B)发送数据的流程如下 1. 首先A和B都要创建并初始化好各自的QPCQ 2. A和B分别向自己的WQ中注册WQE对于AWQSQWQE描述指向一个等到被发送的数据对于BWQRQWQE描述指向一块用于存储数据的Buffer。 3. A的RNIC异步调度轮到A的WQE解析到这是一个SEND消息从Buffer中直接向B发出数据。数据流到达B的RNIC后B的WQE被消耗并把数据直接存储到WQE指向的存储位置。 4. AB通信完成后A的CQ中会产生一个完成消息CQE表示发送完成。与此同时B的CQ中也会产生一个完成消息表示接收完成。每个WQ中WQE的处理完成都会产生一个CQE。 双边操作与传统网络的底层Buffer Pool类似收发双方的参与过程并无差别区别在零拷贝、Kernel Bypass实际上对于RDMA这是一种复杂的消息传输模式多用于传输短的控制消息。 3