RDMA简介

本文介绍了RDMA(远程直接内存访问)技术,它绕过操作系统内核,具有低时延、高吞吐量、低CPU占用等特点,优势包括零拷贝、内核绕过和无需CPU参与。阐述了其工作原理,对比传统TCP/IP通信更高效。还介绍了支持RDMA的网络协议,如InfiniBand、RoCE和iWARP。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

1.什么是RDMA

RDMA(Remote Direct Memory Access)是指远程直接内存访问,应用程序之间搬运缓冲区里的数据的方法。

  • Remote:数据通过网络与远程机器之间进行数据传输。
  • Direct:没有内核的参与,有关发送传输的所有内容都卸载到网卡上。
  • Memory:在用户空间虚拟内存与网卡直接进行数据传输不涉及到系统内核,没有额外的数据移动和复制。
  • Access:send、receive、read、write、atomic(原子操作是指不会被线程调度机制打断的操作;这种操作一旦开始,就一直运行到结束,中间不会有任何 context switch (切换到另一个线程)。)等操作。

RDMA与传统的网络接口不同,因为它绕过了操作系统内核(它是为众多应用程序提供对计算机硬件的安全访问的一部分软件,这种访问是有限的,并且内核决定一个程序在什么时候对某部分硬件操作多长时间,应用程序完成操作以后将权限交还给内核)。这使得RDMA的程序具有以下特点:

  • 绝对的最低时延
  • 最高的吞吐量
  • 最小的CPU足迹(需要CPU参与的地方被最小化)

 

RDMA的主要优势:

  • 零拷贝:应用程序可以在不涉及网络软件堆栈的情况下执行数据传输。数据直接发送和接收到缓冲区,而无需在网络层之间复制。
  • 内核绕过:应用程序可以直接从用户空间执行数据传输,而无需内核参与。
  • 无需CPU参与:应用程序可以访问远程内存而无需在远程服务器中消耗任何CPU时间。远程内存服务器将被读取,而无需远程进程(或处理器)的任何干预。而且,远程CPU的缓存不会被访问的内存内容填满。

2. RDMA工作原理

 

传统的TCP/IP通信过程如下:

  1. 把收到的数据包缓存到系统上,数据包经过处理之后,相应数据被分配到一个TCP连接。
  2. 接受系统再把主动提高的TCP数据同相应的应用程序联系起来,并将数据从系统缓冲区拷贝到目标存储地址。

 由此可见在发送和接受数据的过程中,数据在源端应用层从上向下逐层拷贝封装,目的端从下向上拷贝和解封装,所以比较慢,而且需要CPU参与的次数很多。

RDMA通信过程中,发送和接受、读写操作,都是网卡直接和参与数据传输。已经注册过的内存区域直接进行数据传输,速度快,不需要CPU参与,RDMA网卡接替了CPU的工作,节省下来的资源可以进行其他的运算和服务。

RDMA的工作过程如下:

  1. 当一个应用执行RDMA读写请求时,不执行任何数据复制。在不需要任何内核内存参与的条件下,RDMA请求从运行在用户空间中的应用中发送到本地网卡。
  2. 网卡读取缓冲的内容,并通过网络传送到远程网卡。
  3. 在网络上传输的RDMA信息包含目标机器虚拟内存地址和数据本身。请求完成可以完全在用户空间中处理(通过轮询用户空间的 RDMA 完成队列)。RDMA操作使应用可以从一个远程应用的内存中读取数据或向这个内存写数据。

因此,RDMA可以简单理解为利用相关的硬件和网络技术,网卡可以直接读写远程服务器的内存,最终达到高带宽、低延迟、和低资源利用率的效果。应用程序不需要参与数据传输过程,只需要指定内存读写地址,开启传输并等待传输完成即可。

3.支持RDMA的网络协议

RDMA作为一种host-offload、host-bypass技术,使低延迟、高带宽的直接的内存到内存的数据通信成为了可能。目前支持RDMA的网络协议有:

  • InfiniBand(IB):从一开始就支持RDMA的新一代网络协议。由于这是一种新的网络技术,因此需要支持该技术的网卡和交换机。
  • RDMA 过融合以太网(RoCE):即 RDMA over Converged Ethernet,允许通过以太网执行 RDMA 的网络协议。这允许在标准以太网基础架构(交换机)上使用 RDMA,只不过网卡必须是支持 RoCE 的特殊的网卡。
  • 互联网广域 RDMA 协议(iWARP):即 Internet Wide Area RDMA Protocol,其实也就是 RDMA over TCP,允许通过 TCP 执行 RDMA 的网络协议。这允许在标准以太网基础架构(交换机)上使用RDMA,只不过网卡要求是支持iWARP(如果使用 CPU offload 的话)的网卡。否则,所有 iWARP 栈都可以在软件中实现,但是失去了大部分的 RDMA 性能优势。
### 关于RDMA UMR OPC的技术文档和实现细节 #### RDMA简介及其组件 远程直接内存访问(RDMA)允许网络中的计算机直接从内存中交换数据,而不需要CPU的干预。这种机制显著减少了延迟并提高了带宽效率[^2]。 #### 用户模式注册(User Mode Registration, UMR) UMR是一种优化技术,它使得应用程序能够在用户空间内完成内存区域向硬件的映射过程,从而减少上下文切换带来的开销。对于频繁的数据传输场景尤其有用。通过这种方式可以更高效地管理资源,并且降低操作系统内核参与度所带来的性能损耗[^1]。 #### On-the-fly Page Coloring(OPC) OPC是指一种动态页面着色算法,在某些特定架构下用于加速地址翻译的过程。当涉及到大页支持时,该特性可以帮助改善虚拟机监控器(VMMs)以及客户操作系统之间的协作效果。具体来说就是让VMM能够更好地预测哪些物理帧会被用来分配给新的虚存请求,进而提前做好准备以加快后续操作的速度[^3]。 #### 实现细节 为了实现上述功能,通常会涉及以下几个方面: - **API接口设计**:提供一套易于使用的编程接口(API),使开发者可以在应用层面轻松调用这些高级特性。 ```c++ // 示例伪代码展示如何使用UMR API进行内存注册 void* buffer; size_t length; struct ibv_mr *mr; mr = ibv_reg_user_mr(pd, buffer, length, IBV_ACCESS_LOCAL_WRITE); ``` - **驱动程序开发**:编写专门针对不同网卡型号定制化的设备驱动来处理底层通信逻辑,确保能充分利用硬件提供的所有能力。 - **安全性和稳定性考量**:由于这部分工作是在用户态执行,因此必须特别注意防止潜在的安全漏洞;同时也要保证整个系统的健壮性不受影响。
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值