RDMA
RDMA概念
远程直接内存访问(即Remote Direct Memory Access)是一种直接内存访问技术,它将数据直接从一台计算机的内存传输到另一台计算机,无需尤其是面对高性能计算HPC、大数据分析和浪涌型IO高并发、低时延应用,现有TCP/IP软硬件架构和应用高CPU消耗的技术特征根本不能满足应用的需求。
RDMA优势
- 零复制:零复制网络技术使网卡可以直接与应用内存相互传输数据,从而消除了在应用内存与内核之间复制数据的需要。因此,传输延迟会显著减小。
- 内核旁路:内核协议栈旁路技术使应用程序无需执行内核内存调用就可向网卡发送命令。在不需要任何内核内存参与的条件下,RDMA请求从用户空间发送到本地网卡并通过网络发送给远程网卡,这就减少了在处理网络传输流时内核内存空间与用户空间之间环境切换的次数。
- 没有CPU参与:应用程序可以访问远程内存,而不占用远程机器中的任何CPU。远程存储器将被读取,无需任何干预的远程进程(或处理器)。远程CPU中的缓存将不会被访问的内存内容填满。
- 基于消息的事务:数据被作为离散消息处理,而不是作为流,这消除了应用将流分成不同消息/事务的需要。
- 分散/收集条目支持: RDMA支持本地处理多个分散/收集条目,即读取多个内存缓冲区并将其作为一个流或获取一个流并将其写入多个内存缓冲区。
RDMA实现
常见的RDMA实现包括虚拟接口架构、基于融合以太网的RDMA(RoCE)、]InfiniBand、iWARP。RDMA的实现方式主要分为InfiniBand和Ethernet两种传输网络。而在以太网上,又可以根据与以太网融合的协议栈的差异分为iWARP和RoCE(包括RoCEv1和RoCEv2)。其中,InfiniBand是最早实现RDMA的网络协议,被广泛应用到高性能计算中。