RDMA概述-转载

1 什么是RDMA
1.1 传统意义上的DMA

—直接内存访问(DMA)方式,是一种完全由硬件执行I/O交换的工作方式。在这种方式中,DMA控制器从CPU完全接管对总线的控制,数据交换不经过CPU,而直接在内存和I/O设备之间进行。DMA工作时,由DMA控制器向内存发出地址和控制信号;进行地址修改;对传送字的个数计数;并且以中断方式向CPU报告传送操作的结束。DMA方式一般用于高速传送成组的数据。

—使用DMA方式目的: 减少大批量数据传输时CPU的开销;方法:采用专用DMA控制器(DMAC)生成访存地址并控制访存过程;优点:操作均由硬件电路实现,传输速度快;CPU基本不干预,仅在初始化和结束时参与,CPU与外设并行工作,效率高。

—DMA的数据块传送过程可分为三个阶段:传送前预处理;正式传送;传送后处理。  DMA控制流程:1.预处理:由CPU执行I/O指令对DMAC进行初始化与启动。2. 数据传送:由DMAC控制总线进行数传。3.后处理:传送结束,DMAC向CPU发中断请求,报告DMA操作的结束。CPU响应,转入中断服务程序,完成DMA结束处理工作。

1.2 RDMA

—RDMA(RemoteDirect MemoryAccess)是通过网络把资料直接传入某台计算机的一块存储区域,不需用到多少计算机的处理功能。普通网卡集成了支持硬件校验和的功能,并对软件进行了改进,从而减少了发送数据的拷贝量,但无法减少接收数据的拷贝量,而这部分拷贝量要占用处理器的大量计算周期。普通网卡的工作过程如下:先把收到的数据包缓存到系统上,数据包经过处理后,相应数据被分配到一个TCP连接。下一步,接收系统再把主动提供的TCP数据同相应的应用程序联系起来,并将数据从系统缓冲区拷贝到目标存储地址。以太网已能满足高性能应用对网络吞吐率的要求,具备高吞吐率和成本优势,以太网技术要跟高性能网络应用挂钩,主要解决的问题是应用吞吐率。通常情况下,系统持续在主机CPU中处理以太网通信需要占用CPU资源。CPU速率会制约网络数据率;持续处理这类通信会导致CPU性能降级;对多端口千兆位或单端口10千兆位以太网,这类问题会变得更为严重。

—制约网络速率的因素主要在两方面:应用通信强度和主机CPU在内核与应用存储器间处理数据的效率。要达到特定的性能级别,需要追加主机CPU资源,配置高效的软件并增强系统负荷管理。传统的TCP/IP技术在处理数据传输的过程中需要占用大量的服务器资源。这样以太网的低投入、低运营成本优势就难以体现。为充分发挥万兆位以太网的性能优势,必须解决应用性能问题。系统不能以软件方式持续处理以太网通信;主机CPU资源必须释放专注于应用处理。解决这类问题的关键,是要消除主机CPU中不必要的频繁数据传输,减少系统间的信息延迟。总的来说,需要从协议、软件和硬件三方面入手。

—RDMA全名是“远程直接数据存取”,如图 2所示,RDMA是通过网络把资料直接传入计算机的存储区,将数据从一个系统快速移动到远程系统存储器中,而不对操作系统造成任何影响,这样就不需要用到多少计算机的处理功能。它消除了外部存储器复制和文本交换操作,因而能腾出总线空间和CPU周期用于改进应用系统性能。目前通用的做法需由系统先对传入的信息进行分析,然后再存储到正确的区域。

—当一个应用执行RDMA读或写请求时,不执行任何数据复制。在不需要任何内核内存参与的条件下,RDMA请求从运行在用户空间中的应用中发送到本地NIC(网卡),然后经过网络传送到远程NIC。请求完成既可以完全在用户空间中处理(通过轮询用户级完成排列),或者在应用一直睡眠到请求完成时的情况下通过内核内存处理。RDMA操作使应用可以从一个远程应用的内存中读数据或向这个内存写数据。用于操作的远程虚拟内存地址包含在RDMA信息中。远程应用除了为其本地NIC注册相关内存缓冲区外,不需要做其他任何事情。远程节点中的CPU完全不参与输入的RDMA操作,这些对CPU没有任何负担。

—RDMA让计算机可以直接存取其它计算机的内存,而不需要经过处理器耗时的传输,因为通常这样的数据要求还要经过操作系统及其他软件层。内存瓶颈随着连接速度超过服务器的处理能力和内存带宽而变得更加严重。远程直接内存存取(RDMA)使一台计算机可以直接将信息传送到另一台计算机内存中。这项技术通过减少对带宽和处理器开销的需要降低了时延。这种效果是通过在NIC的硬件中部署一项可靠的传输协议以及支持零复制网络技术和内核内存旁路实现的。零复制网络技术使NIC可以直接与应用内存相互传输数据,从而消除了在应用内存与内核内存之间复制数据的需要。内核内存旁路使应用无需执行内核内存调用就可向NIC发送命令。在不需要任何内核内存参与的条件下,RDMA请求从用户空间发送到本地NIC并通过网络发送给远程NIC,这就减少了在处理网络传输流时内核内存空间与用户空间之间环境切换的次数。RDMA比现行的方法快速。使用目前普遍使用的网络通过来RDMA连结计算机与存储系统,硬件连接速度加快会把众多低价位的服务器集结成效能更强大的数据库,而不必购置昂贵的机器。对很注重占地空间和功耗的系统而言,就千兆位以太网满载传输这一任务而言,RNIC所需功耗仅为相应网卡和微处理器的一小部分。
2 RDMA的工作原理规范
—RDMA是一种网卡技术,采用该技术可以使一台计算机直接将信息放入另一台计算机的内存中。通过最小化处理过程的开销和带宽的需求,RDMA减少了延迟时间。RDMA通过在网卡上将可靠传输协议固化于硬件,以及支持绕过内核的零拷贝网络这两种途径来达到这一目标。绕过内核使应用程序不必执行内核调用就可以向网卡发出命令。当一个应用程序执行RDMA读/写请求时,系统并不执行数据拷贝动作。这就减少了处理网络通信时在内核空间和用户空间上下文切换的次数。RDMA请求的完成,或者完全在用户空间中进行,或者在应用程序希望进入睡眠直到完成信号出现的情况下通过内核进行。RDMA操作用于读写操作的远程虚拟内存地址含在RDMA消息中传送,远程应用程序要做的只是在其本地网卡中注册相应的内存缓冲区。远程节点的CPU在整个RDMA操作中并不提供服务,因此没有带来任何负载。通过类型值(键值)的使用,一个应用程序能够在远程应用程序对它进行随机访问的情况下保护它的内存。发布RDMA操作的应用程序必须为它试图访问的远程内存指定正确的类型值,远程应用程序在本地网卡中注册内存时获得这个类型值。发布RDMA的应用程序也必须确定远程内存地址和该内存区域的类型值。远程应用程序会将相关信息通知给发布RDMA的应用程序,这些信息包括起始虚拟地址、内存大小和该内存区域的类型值。在发布RDMA的应用程序能够对该内存区域进行RDMA操作之前,远程应用程序应将这些信息通过发送操作传送给发布RDMA的应用程序。

—如图 3 所示, 服务模型分为三层,依次为网络互连层、 SCSI 协议层、 SCSI应用层。

—SCSI RDMA有两种RDMA操作:RDMA写和RDMA读。读和写都是相对于SCSI启动方来说的。

—零复制网络技术及其功能实现

—零复制网络技术是通过在NIC的硬件中部署一项可靠的传输协议以及支持零复制网络技术和内核内存旁路实现的。请求完成既可以完全在用户空间中处理(通过轮询用户级完成排列),或者在应用希望一直睡眠到请求完成时的情况下通过内核内存处理。软件部分负责协议功能实现。

—API(应用程序接口)包括用于低时延消息处理、成就高性能计算的MPI(消息通过接口),以及DAPL(直接接入供应库)。后者包括两部分:KDAPL和UDAPL,分别用于内核和用户(应用程序)。Linux支持KDAPL,其他操作系统将来也有可能支持。
  
3 RDMA在数据传输中的应用
3.1 RDMA的应用
—RDMA的优势在于可利用传统的网络硬件,以TCP/IP及以太网络标准来建立因特网。RDMA将被用来把小型服务器连接为一个群集,可以处理现今一些十几颗处理器的高端服务器才能够处理的大型数据库。如果把RDMA及TOE,以及10GB以太网络放在一起,这是个相当吸引人的技术。RDMA正在迅速成为高速集群和服务器区域网的一种基本特性。
—InfiniBand网络和实现虚拟接口架构的网络支持RDMA,应用于带传输卸载引擎网卡的RDMA overTCP/IP正在开发之中。采用RDMA来获取高性能的协议包括Sockets Direct Protocol、SCSI RDMAProtocol(SRP)和Direct Access File System(DAFS)。采用RDMA的通信库包括Direct AccessProvider Library(DAPL)、Message Passing Interface(MPI)和Virtual InterfaceProvider Library(VIPL)。运行分布式应用程序的集群是RDMA能够大显身手的领域之一。通过DAPL或VIPL以及集群上运行的数据库软件来使用RDMA,可在相同的节点数目下获得更高的性能和更好的延展性。使用MPI的集群科技运算应用程序,通过支持互连RDMA实现了低延迟时间、低开销和高吞吐量,这一结果也使它获得了巨大的性能提升。其他初期的RDMA应用还有通过DAFS的远程文件服务器访问,通过SRP的存储设备访问。RDMA技术正在迅速成为高速集群系统和存储域网络的基本特征技术。其中iWARP/RDMA是一类基本构造块;此外还有iSER,它是用于RDMA的iSCSI扩展,充分利用了RDMA的功能。

—RDMA的其他早期应用包括通过DAFS的远程文件服务器访问和通过SRP的刀片服务器存储访问。RDMA正在迅速成为高速集群和服务器区域网的一种基本特性。

3.2 NAS和SAN中的应用

—传统的直接连接存储DAS(Direct Access Storage)是以服务器为中心的存储结构。这一存储体系结构存在容量限制、连接距离有限、不易于共享和管理等不可克服的缺点,已经不能够满足网络时代的应用需求。
—网络时代的到来使存储技术发生了巨大变化,网络附加存储
NAS(Network Attatched Storage)、存储区域网络SAN(Storage AreaNetwork)既能为网络上的应用系统提供丰富、快速、简便的存储资源;又能共享存储资源并对其实施集中管理,成为当今理想的存储管理和应用模式。NAS结构存在一些难以解决的问题。如传输能力有限、可扩展性有限、数据备份能力有限并且不能对数据库服务提供有效的支持。DAFS把RDMA的优点和NAS的存储能力集成在一起,全部读写操作都直接通过RDMA驱动器执行,从而降低了网络文件协议所带来的系统负载。今后的NAS存储系统将采用DAFS技术提高系统性能,并且在性能和价格上与SAN存储系统进行有力的竞争。
3.3 Infiniband
—Infiniband的四大优点:基于标准的协议,10GB/s性能,RDMA和传输卸载。优势在于:RDMA,传输卸载,高速度。InfiniBand网络和采用虚拟接口架构的网络支持RDMA,使用具有传输卸载引擎的NIC的RDMA overTCP/IP。支持Infiniband的服务器使用主机通道适配器(HCA),把协议转换到服务器内部的PCI-X或者PCI-Xpress总线。HCA具有RDMA功能,有时也称之为内核旁路(Kernel Bypass)。
4 其他
—网络存储技术的发展日新月异,虚拟存储技术、网格存储技术等等最新的技术将会给我们带来更多的方便,虚拟存储技术将底层存储设备进行抽象化统一管理,向服务器层屏蔽存储设备硬件的特殊性,而只保留其统一的逻辑特性,从而实现了存储系统集中、统一而又方便的管理。统一的虚拟存储将不同厂商的FC-SAN、NAS、IP-SAN、DAS等各类存储资源整合起来,形成一个统一管理、监控和使用的公用存储池。虚拟存储的实质是资源共享,因此,统一虚拟存储的任务有两点:其一是如何进一步增加可共享的存储资源的数量;其二是如何通过有效的机制在现有存储资源基础上提供更好的服务。从系统的观点看,存储虚拟化有三种途径:基于主机的虚拟化存储、基于存储设备的虚拟化存储以及基于网络的虚拟化存储。统一虚拟存储的实现只能从虚拟存储的实质出发,单一存储映像的方法可能是虚拟存储的发展方向。
—由于RDMA是近期新的存储技术,尽管有各个厂商发布信息或报道,但是都没有详细或完整的资料。本人在参照标准的基础上,参考了这些报道和一些专家的文章的内容,形成了此文,供大家参考。同时也请大家批评指正。

ZHANGCHI wechat
关注微信号进一步交流