RDMA(Remote Direct Memory Access)
RDMA(Remote Direct Memory Access)技�g全�Q�h程直接���存取,就是�椴t解�Q�W路�鬏�中伺服器端����理的延�t而�a生的。RDMA通�^�W路把�Y料直接�魅���X的存��^,�����囊��系�y快速移�拥竭h程系�y存�ζ髦校�而不�Σ僮飨到y造成任何影�,�@�泳筒恍枰�用到多少��X的�理功能。它消除了外部存�ζ餮}�u和文本交�Q操作,因而能解放����w���和CPU周期用於改�M��用系�y性能。
直接����w�L��(DMA) 方式,是一�N完全由硬�w�绦�I/O交�Q的工作方式.在�@�N方式中, DMA 控制器��CPU 完全接管��R流排的控制,���交�Q不��^CPU ,而直接在����w和110 �O�渲��g�M行.DMA工作�r,由DMA 控制器向����w�l出地址和控制信�,�M行地址修改,��魉妥值���涤��担��K且以中�喾绞较�CPU �蟾�魉筒僮鞯慕Y束。
使用DMA 方式的目的是�p少大批量����鬏��rCPU 的�_�N.�裼�S�DMA 控制器(DMAC) 生成�L存地址�K控制�L存�^程.���c有操作均由硬�w�路���F,�鬏�速度快;CPU 基本不�诸A,�H在初始化和�Y束�r�⑴c, CPU �c外�O�K行工作,效率高。
目前,普通�W卡集成了支持硬�w校�和的功能,�K����w�M行了改�M,�亩��p少了�l送���的拷�量,但�o法�p少接收���的拷�量,而�@部分拷�量要占用CPU 的大量�算周期.普通�W卡的工作�^程如下:先把收到的���包�存到系�y上,���包��^�理後,相�����被分配到一��TCP �B接;然後,接收系�y再把主�犹峁┑�TCP ���同相��的��用程式��M起�恚��K�����南到y��n�^拷�到目�舜�Φ刂�.�@�樱�制�s�W路速率的因素就出�F了:��用通信��度不�嘣黾雍椭�CCPU 在�群伺c��用存�ζ鏖g�理���的任�辗敝厥瓜到y要不�嘧芳又�CCPU �Y源,配置高效的��w�K增��系�y�荷管理.���}的�P�I是要消除主�CCPU 中不必要的�l繁����鬏�,�p少系�y�g的信息延�t。
RDMA 是通�^�W路把�Y料直接�魅腚��X的存��^,�����囊��系�y快速移�拥竭h程系�y存�ζ髦校�而不�Σ僮飨到y造成任何影�,�@�泳筒恍枰�用到多少��X的�理功能.它消除了外部存�ζ餮}�u和文本交�Q操作,因而能�v出�R流排空�g和CPU 周期用於改�M��用系�y性能. 目前通用的做法需由系�y先��魅氲男畔⑦M行分析�c�擞�,然後再存�Φ秸��_的�^域.整�w�Y��如�D所示。
RDMA 的工作�^程如下:
1)��一����用�绦�RDMA �x或���求�r,不�绦腥魏����}�u.在不需要任何�群擞����w�⑴c的�l件下, RDMA �求�倪\行在用�艨臻g中的��用中�l送到本地NIC( �W卡)。
2) NIC �x取��n的�热荩��K通�^�W路�魉偷竭h程NIC。
3) 在�W路上�鬏�的RDMA 信息包含目�颂��M地址、����w�匙和���本身.�求完成既可以完全在用�艨臻g中�理(通�^��用�艏�完成排列) ,或者在��用一直睡眠到�求完成�r的情�r下通�^�群擞����w�理.RDMA 操作使��用可以�囊���h程��用的����w中�x���或向�@������w�����。
4) 目��NIC �_�J����w�匙,直接������人��用�存中.用於操作的�h程��M����w地址包含在RDMA 信息中。
零拷��W路技�g使NIC 可以直接�c��用����w相互�鬏����,�亩�消除了在��用����w�c�群擞����w之�g�}�u���的需要.�群擞����w旁路使��用�o需�绦�群擞����w�{用就可向NIC �l送命令.在不需要任何�群擞����w�⑴c的�l件下, RDMA �求�挠�艨臻g�l送到本地NIC,�K通�^�W路�l送�o�h程NIC ,�@就�p少了在�理�W路�鬏�流�r�群擞����w空�g�c用�艨臻g之�g�h境切�Q的次��.RDMA 中的零拷�技�g主要���F方法如�D所示。
在上�D中,右�是�鹘yTCP/IP �f�h以及普通�W卡�M行的通信操作�^程.很明�@,����用�酉�木W卡�@得����笪�r需要��^2 ����n�^和正常TCPIIP �f�h�X,其中由�中�嘭���牡谝��接收�列��n�^�x取����笪模�再拷�到MSGBuff 中,最後由��用�油ㄟ^系�y�{用�����笪淖x到用��B.而左��t是利用RDMA����F的零拷��^程,��t如下:
1) RDMA 及其LLP( Lower Layer Protocol)可以在NIC 上���F(�Q��RNIC)。
2) 在1)中所�f的2 �N���F都是��^以下步�E:�⑹瞻l的����存到一��已��擞�好的存��空�g中,然後根��LLP 和RDMA �p方�f商的��t直接�⒋舜��空�g映射到��用空�g,�@�泳�p少了�鹘y���F方法中的至少2次����w拷�,即���F零拷�.其中��表示���流�臃较颍�其���擞��存就是通�^RDMA 直接映射成�橛�艟�存空�g的。
如上�D��RDMA 的��成,RDMA的���F由RDMA、DDP 、MPA3 �N�f�h共�g���F,��成了iWARP�f�h族,用�肀WC高速�W路的互操作性。RDMA �佑渺��RMDA �x、��及Send 操作消息�D化成RDMA 消息,�K��RDMA 消息�魉椭�DDP(Direct Data Placement)�樱�DDP����RDMA消息分段封�b成DDP ���包�D�l到下��Marker-based,Protocol-data-unit-A1igned (MPA)�樱� MPA ���DDP ���包插入�俗R符,�L度及CRC 校�,��成MPA ���段。TCP �迂����TCP ���段�M行�{度,�_保�l包能�蝽�利到�_目�宋恢谩�IP ��t在���包中增加必要的�W路路由���信息。
RDMA �f�h�檫h端直接����存提供7 �N�型的控制操作.除了�h端��n�^�x取操作之外,每一�NRDMA 控制操作都只�a生一�����的RDMA 消息。
1)Send: �l送操作使用Send 消息���l送方��用的���直接�l送到���接收方��用尚未明�_�明的��n�^中.故Send 消息使用的是DDP 的�o�擞�的��n�^����鬟f模型,�⑸���用消息�鬟f到接收方��用的元�擞��列式��n�^中。
2) Send with Invalidate: 在Send 基�A上,加了一���Ш�擞�Stag. ���消息�存在Stag 所指定�Χ��用��n�^中,�K�⑾�息到�_通知�鬟_�o接收方��用後,接收方��用就再不允�S�l送方��用介人���n�^,直到接收方��用重新�明���n�^可用後才可以供�l送方��用�^�m使用。
3) Send with Solicited Event (Send with SE): �消息用����l送方��用的���直接�l送到���接收方��用的�o�擞��列式��n�^中,具��Send 所有的功能同�r增加�ο�息的反�。
4) Send with Solicited Event and Invalidate (Send with SE and Invalidate): �消息所���的操作是���l送方��用的���直接�l送到���接收方��用尚未明�_�明的��n�^中,具��Send with SE 所有的功能同�r增加�ο�息的反�。
5) Remote Direct Memory Access W出e: ���於RDMA ��操作,用����l送方��用的����鬟f到接收方��用已�明的��n�^中.在�@��操作中,接收方��用事先���己�分配出��擞�的��用接收��n�^,�K允�S�l送方��用直接�M行��n�^��操作.同�r,�l送方��用�在�明中得到了上述��n�^的位置、大小和相��的Stag 等信息.之後�l送方��用�_始�l起RDMA ��操作,�操作使用DDP 的��擞�的��n�^����鬟f模型,���l送方��用的消息直接�鬟f到接收方��用所�明的��擞���n�^中。
6) Remote Direct Memory Access Read: ���於RDMA �x操作,��Χ�(���於���源)��擞���用��n�^的����鬟f到本地(���於���接收方)的��擞���用��n�^.���源的上���用首先需要事先分配出��擞�的��用��n�^,�K允�S�υ���n�^�热葜苯舆M行�x操作.同�r,���源上���用�要�⒋��明的���源��n�^的位置、大小和相��的Stag 等信息�鬟f到本地上���用.���接收方上���用在得到上述�明後,分配相��的��擞���用��n�^,�_始��Χ俗x取���操作。
7) Terminate: �K止操作使用Terminate 消息�⒈镜匕l生的�e�`信息通知�o�Χ��用,以�K止��前���直接�存操作.�K止操作使用DDP 的元�擞���n�^模型��Terminate �鬟f到�Χ说�o�擞���n�^。
RDMA 的���菰陟犊衫�用�鹘y的�W路硬�w以TCP/IP 及乙太�W�j���斫�立�W�H�W路RDMA �⒈挥�戆研⌒退欧�器�B接�橐��群集可以�理�F今一些十�最w�理器的高端伺服器才能�蛱�理的大型�Y料�烊绻�把R D M A 及TOE 以及10GB 乙太�W�j放在一起�@是��相��吸引人的技�gRDMA 正在迅速成�楦咚偌�群和伺服器�^域�W的一�N基本特性InfiniBand�W路和���F��M介面架��的�W路支持RDMA ��用於��鬏�卸�d引擎�W卡的RDMA over TCP/IP 正在�_�l之中�裼�RDMA �慝@取高性能的�f�h包括Sockets Direct ProtocolSCSI RDMA Protocol SRP 和DirectAccess File System DAFS �裼�RDMA 的通信�彀�括Direct AccessProvider Library DAPL MessagePassing Interface MPI 和VirtualInterface Provider Library VIPL�\行分散式��用程式的集群是RDMA 能�虼箫@身手的�I域之一通�^DAPL 或VIPL以及集群上�\行的�Y料�燔��w�硎褂�RDMA 可在相同的��c�的肯芦@得更高的性能和更好的延展性使用MPI的集群科技�\算��用程式通�^支持互�BRDMA ���F了低延�t�r�g低�_�N和高吞吐量�@一�Y果也使它�@得了巨大的性能提升其他初期的RDMA ��用�有通�^D A F S 的�h程文件伺服器�L��通�^SRP 的存�υO�湓L��RDMA 技�g正在迅速成�楦咚偌�群系�y和存�τ蚓W路的基本特征技�g其中i W A R P /R D M A 是一�基本��造�K此外�有iSER 它是用於RDMA 的iSCSI �U展充分利用了R D M A 的功能RDMA 的其他早期��用包括通�^D A F S 的�h程文件伺服器�L��和通�^SRP 的刀片伺服器存�υL��RDMA 正在迅速成�楦咚偌�群和伺服器�^域�W的一�N基本特性。
�鹘y的直接�B接存��DAS DirectAccess Storage 是以伺服器�橹行牡拇���Y���@一存���w�M�Y��存在容量限制�B接距�x有限不易於共用和管理等不可�w服的缺�c已�不能��M足�W路�r代的��用需求�W路�r代的到�硎勾��技�g�l生了巨大�化�W路附加存��N A SNetwork Attatched Storage 存��^域�W路S A N(Storage Area Network)既能�榫W路上的��用系�y提供�S富快速�便的存���Y源又能共用存���Y源�K�ζ��施集中管理成�楫�今理想的存��管理和��用模式NAS�Y��存在一些�y以解�Q的���}如�鬏�能力有限可�U展性有限����浞菽芰τ邢�K且不能���Y料�旆��仗峁┯行У闹С�DAFS 把RDMA 的���c和N A S的存�δ芰�集成在一起全部�x��操作都直接通�^RDMA ��悠�绦�亩�降低了�W路文件�f�h所��淼南到y��d今後的NAS 存�ο到y��裼�DAFS 技�g提高系�y性能�K且在性能和�r格上�cSAN 存�ο到y�M行有力的���。
Infiniband的四大���c基於��实�f�h10 GB/s 性能RDMA 和�鬏�卸�d���菰陟�R D M A �鬏�卸�d高速度InfiniBand�W路和�裼锰��M介面架��的�W路支持RDMA 使用具有�鬏�卸�d引擎的NIC 的RDMA over TCP/IP 支持Infiniband的伺服器使用主�C通道�m配器HCA 把�f�h�D�Q到伺服器�炔康�PCI-X 或者PCI-Xpress �R流排H C A 具有R D M A 功能有�r也�Q之��群伺月罚�Kernel Bypass)。