RDMA(远程直接内存访问)简介

翻译自:Introduction to Remote Direct Memory Access (RDMA)

RDMA 是什么

直接内存访问(DMA,Direct Memory Access)是设备直接访问主机内存,而不需要 CPU 的介入。

远程直接内存访问(RDMA,Remote DMA)是指可直接访问远程主机的内存(即可读写内存),访问过程中不需要远程主机的 CPU 的介入。

RDMA 有何优势

使用 RDMA 有以下主要优势:

  • 零拷贝:应用程序可以不通过网络协议栈执行数据传输,并且数据不需要在网络层做复制而直接写入目标缓存区。
  • 绕过内核:应用程序可以直接从用户空间做数据传输,不需要执行用户空间/内核的上下文切换。
  • 无需 CPU 介入:应用程序可以直接访问远程主机内存,而不需要消耗远程主机上 CPU 的时间片。远程主机内存的访问无需远程主机进程(或 CPU)的干预。远程主机 CPU 的高速缓存也不需要填充被访问的内存内容。
  • 基于消息的事务:数据作为离散信息被处理而不是作为流信息被处理,这消除了应用程序将流信息分解成不同消息/事务的必要(译者注:即没必要再做拆分,本身就支持基于消息的事务)
  • 支持 Scatter/Gather: RDMA 原生支持 Scatter/Gather,即把读取的多个内存缓冲区作为一个流消息发送出去,或者是把一个流消息写到几个分散的内存缓冲区。

RDMA 的应用行业

您可以在需要至少以下一项的行业中发现 RDMA 的应用:

  • 低延迟:比如 HPC、金融服务行业、Web 2.0
  • 高带宽:比如 HPC、医疗器械、存储备份系统、云计算
  • 占地面积小(译者注:Small CPU footprint 什么鬼?):比如 HPC、云计算

还有很多很多其他的行业……

哪种网络协议支持 RDMA

目前,有三种网络协议支持 RDMA:

  • InfiniBand(IB):这是新一代的网络协议,从一开始就支持 RDMA。由于是一种新的网络技术,因此需要支持该技术的网卡和交换机。
  • RDMA Over Converged Ethernet(RoCE):这是基于以太网的网络协议,底层是以太网头,上层(包括数据)是 InfiniBand 头。基于现有标准的以太网基础设施(交换机)就可以使用 RDMA 技术,只需要一种支持 RoCE 的特殊网卡即可。
  • Internet Wide Area RDMA Protocol(iWARP):一种基于 TCP 协议的实现 RDMA 技术的网络协议。iWARP 不支持 IB 和 RoCE 中的一些功能。该协议基于标准的以太网设施(交换机)即可实现 RDMA,只需要一种支持 iWARP 的特殊网卡即可;或者通过软件模拟 iWARP 的协议栈而不需要特殊网卡也可实现 RDMA 技术,但这样会丧失 RDMA 技术的性能优势。

是否意味着我需要学习好几种编程 API

不需要。幸运的是,同一个库(或者API,即 verbs)就可以搞定上述所有的 RDMA 协议。在类 Unix 系统上该库叫做 libibverbs/kernel verbs,在 Windows 系统上是 Network Direct(ND)。

这些网络协议是否相兼容

因为这些是完全不同的网络协议,它们各自的包也完全不同;在它们之间没有任何交换机或路由器的情况下,它们无法相互兼容。然而,同样的代码可以操作所有的网络协议。因为这些网络协议都支持 libibverbs 库,可以用同一个二进制文件操纵所有网络协议,而不需要重新编译源码。

RDMA 的支持

对一些操作系统来说,内核已经集成了 RDMA 的支持。比如,Linux 原生支持 RDMA 并且所有主流发行版本都支持 RDMA。其他的操作系统可能需要下载包(比如 OFED)以获得 RDMA 的支持。

 

 

Advertisements

分类:RDMA

Tagged as:

发表评论

Fill in your details below or click an icon to log in:

WordPress.com 徽标

You are commenting using your WordPress.com account. Log Out /  更改 )

Google+ photo

You are commenting using your Google+ account. Log Out /  更改 )

Twitter picture

You are commenting using your Twitter account. Log Out /  更改 )

Facebook photo

You are commenting using your Facebook account. Log Out /  更改 )

Connecting to %s

This site uses Akismet to reduce spam. Learn how your comment data is processed.