RDMA
出自 MBA智库百科(https://wiki.mbalib.com/)
RDMA(Remote Direct Memory Access)
目錄 |
RDMA(Remote Direct Memory Access)技術全稱遠程直接數據存取,就是為瞭解決網路傳輸中伺服器端數據處理的延遲而產生的。RDMA通過網路把資料直接傳入電腦的存儲區,將數據從一個系統快速移動到遠程系統存儲器中,而不對操作系統造成任何影響,這樣就不需要用到多少電腦的處理功能。它消除了外部存儲器複製和文本交換操作,因而能解放記憶體帶寬和CPU周期用於改進應用系統性能。
RDMA的理解[1]
- 1.傳統意義上的DMA
直接記憶體訪問(DMA) 方式,是一種完全由硬體執行I/O交換的工作方式.在這種方式中, DMA 控制器從CPU 完全接管對匯流排的控制,數據交換不經過CPU ,而直接在記憶體和110 設備之間進行.DMA工作時,由DMA 控制器向記憶體發出地址和控制信號,進行地址修改,對傳送字的個數計數,並且以中斷方式向CPU 報告傳送操作的結束。
使用DMA 方式的目的是減少大批量數據傳輸時CPU 的開銷.採用專用DMA 控制器(DMAC) 生成訪存地址並控制訪存過程.優點有操作均由硬體電路實現,傳輸速度快;CPU 基本不幹預,僅在初始化和結束時參與, CPU 與外設並行工作,效率高。
- 2.RDMA工作原理
目前,普通網卡集成了支持硬體校驗和的功能,並對軟體進行了改進,從而減少了發送數據的拷貝量,但無法減少接收數據的拷貝量,而這部分拷貝量要占用CPU 的大量計算周期.普通網卡的工作過程如下:先把收到的數據包緩存到系統上,數據包經過處理後,相應數據被分配到一個TCP 連接;然後,接收系統再把主動提供的TCP 數據同相應的應用程式聯繫起來,並將數據從系統緩衝區拷貝到目標存儲地址.這樣,制約網路速率的因素就出現了:應用通信強度不斷增加和主機CPU 在內核與應用存儲器間處理數據的任務繁重使系統要不斷追加主機CPU 資源,配置高效的軟體並增強系統負荷管理.問題的關鍵是要消除主機CPU 中不必要的頻繁數據傳輸,減少系統間的信息延遲。
RDMA 是通過網路把資料直接傳入電腦的存儲區,將數據從一個系統快速移動到遠程系統存儲器中,而不對操作系統造成任何影響,這樣就不需要用到多少電腦的處理功能.它消除了外部存儲器複製和文本交換操作,因而能騰出匯流排空間和CPU 周期用於改進應用系統性能. 目前通用的做法需由系統先對傳入的信息進行分析與標記,然後再存儲到正確的區域.整體結構如圖所示。
RDMA 的工作過程如下:
1)當一個應用執行RDMA 讀或寫請求時,不執行任何數據複製.在不需要任何內核記憶體參與的條件下, RDMA 請求從運行在用戶空間中的應用中發送到本地NIC( 網卡)。
2) NIC 讀取緩衝的內容,並通過網路傳送到遠程NIC。
3) 在網路上傳輸的RDMA 信息包含目標虛擬地址、記憶體鑰匙和數據本身.請求完成既可以完全在用戶空間中處理(通過輪詢用戶級完成排列) ,或者在應用一直睡眠到請求完成時的情況下通過內核記憶體處理.RDMA 操作使應用可以從一個遠程應用的記憶體中讀數據或向這個記憶體寫數據。
4) 目標NIC 確認記憶體鑰匙,直接將數據寫人應用緩存中.用於操作的遠程虛擬記憶體地址包含在RDMA 信息中。
- 3.RDMA申零拷貝技術
零拷貝網路技術使NIC 可以直接與應用記憶體相互傳輸數據,從而消除了在應用記憶體與內核記憶體之間複製數據的需要.內核記憶體旁路使應用無需執行內核記憶體調用就可向NIC 發送命令.在不需要任何內核記憶體參與的條件下, RDMA 請求從用戶空間發送到本地NIC,並通過網路發送給遠程NIC ,這就減少了在處理網路傳輸流時內核記憶體空間與用戶空間之間環境切換的次數.RDMA 中的零拷貝技術主要實現方法如圖所示。
在上圖中,右邊是傳統TCP/IP 協議以及普通網卡進行的通信操作過程.很明顯,當應用層想從網卡獲得數據報文時需要經過2 個緩衝區和正常TCPIIP 協議錢,其中由軟中斷負責從第一個接收隊列緩衝區讀取數據報文,再拷貝到MSGBuff 中,最後由應用層通過系統調用將數據報文讀到用戶態.而左邊則是利用RDMA來實現的零拷貝過程,規則如下:
1) RDMA 及其LLP( Lower Layer Protocol)可以在NIC 上實現(稱為RNIC)。
2) 在1)中所說的2 種實現都是經過以下步驟:將收發的數據緩存到一個已經標記好的存儲空間中,然後根據LLP 和RDMA 雙方協商的規則直接將此存儲空間映射到應用空間,這樣就減少了傳統實現方法中的至少2次記憶體拷貝,即實現零拷貝.其中細線表示數據流動方向,其實標記緩存就是通過RDMA 直接映射成為用戶緩存空間的。
RDMA的構成[2]
如上圖為RDMA 的構成,RDMA的實現由RDMA、DDP 、MPA3 種協議共間實現,構成了iWARP協議族,用來保證高速網路的互操作性。RDMA 層用於將RMDA 讀、寫及Send 操作消息轉化成RDMA 消息,並將RDMA 消息傳送至DDP(Direct Data Placement)層,DDP應將RDMA消息分段封裝成DDP 數據包轉發到下層Marker-based,Protocol-data-unit-A1igned (MPA)層, MPA 層將DDP 數據包插入標識符,長度及CRC 校驗,構成MPA 數據段。TCP 層負責對TCP 數據段進行調度,確保發包能夠順利到達目標位置。IP 層則在數據包中增加必要的網路路由數據信息。
RDMA數據操作方法[1]
RDMA 協議為遠端直接數據緩存提供7 種類型的控制操作.除了遠端緩衝區讀取操作之外,每一種RDMA 控制操作都只產生一個對應的RDMA 消息。
1)Send: 發送操作使用Send 消息將發送方應用的數據直接發送到數據接收方應用尚未明確聲明的緩衝區中.故Send 消息使用的是DDP 的無標記的緩衝區數據傳遞模型,將上層應用消息傳遞到接收方應用的無標記隊列式緩衝區中。
2) Send with Invalidate: 在Send 基礎上,加了一個導航標記Stag. 當該消息緩存在Stag 所指定對端應用緩衝區中,並將消息到達通知傳達給接收方應用後,接收方應用就再不允許發送方應用介人該緩衝區,直到接收方應用重新聲明該緩衝區可用後才可以供發送方應用繼續使用。
3) Send with Solicited Event (Send with SE): 該消息用來將發送方應用的數據直接發送到數據接收方應用的無標記隊列式緩衝區中,具備Send 所有的功能同時增加對消息的反饋。
4) Send with Solicited Event and Invalidate (Send with SE and Invalidate): 該消息所對應的操作是將發送方應用的數據直接發送到數據接收方應用尚未明確聲明的緩衝區中,具備Send with SE 所有的功能同時增加對消息的反饋。
5) Remote Direct Memory Access W出e: 對應於RDMA 寫操作,用來將發送方應用的數據傳遞到接收方應用已聲明的緩衝區中.在這個操作中,接收方應用事先應該己經分配出帶標記的應用接收緩衝區,並允許發送方應用直接進行緩衝區寫操作.同時,發送方應用還在聲明中得到了上述緩衝區的位置、大小和相應的Stag 等信息.之後發送方應用開始發起RDMA 寫操作,該操作使用DDP 的帶標記的緩衝區數據傳遞模型,將發送方應用的消息直接傳遞到接收方應用所聲明的帶標記緩衝區中。
6) Remote Direct Memory Access Read: 對應於RDMA 讀操作,將對端(對應於數據源)帶標記應用緩衝區的數據傳遞到本地(對應於數據接收方)的帶標記應用緩衝區.數據源的上層應用首先需要事先分配出帶標記的應用緩衝區,並允許對該緩衝區內容直接進行讀操作.同時,數據源上層應用還要將待聲明的數據源緩衝區的位置、大小和相應的Stag 等信息傳遞到本地上層應用.數據接收方上層應用在得到上述聲明後,分配相應的帶標記應用緩衝區,開始從對端讀取數據操作。
7) Terminate: 終止操作使用Terminate 消息將本地發生的錯誤信息通知給對端應用,以終止當前數據直接緩存操作.終止操作使用DDP 的元標記緩衝區模型將Terminate 傳遞到對端的無標記緩衝區。
RDMA 在數據傳輸中的應用[3]
- 1.RDMA 的應用
RDMA 的優勢在於可利用傳統的網路硬體以TCP/IP 及乙太網絡標準來建立網際網路RDMA 將被用來把小型伺服器連接為一個群集可以處理現今一些十幾顆處理器的高端伺服器才能夠處理的大型資料庫如果把R D M A 及TOE 以及10GB 乙太網絡放在一起這是個相當吸引人的技術RDMA 正在迅速成為高速集群和伺服器區域網的一種基本特性InfiniBand網路和實現虛擬介面架構的網路支持RDMA 應用於帶傳輸卸載引擎網卡的RDMA over TCP/IP 正在開發之中採用RDMA 來獲取高性能的協議包括Sockets Direct ProtocolSCSI RDMA Protocol SRP 和DirectAccess File System DAFS 採用RDMA 的通信庫包括Direct AccessProvider Library DAPL MessagePassing Interface MPI 和VirtualInterface Provider Library VIPL運行分散式應用程式的集群是RDMA 能夠大顯身手的領域之一通過DAPL 或VIPL以及集群上運行的資料庫軟體來使用RDMA 可在相同的節點數目下獲得更高的性能和更好的延展性使用MPI的集群科技運算應用程式通過支持互連RDMA 實現了低延遲時間低開銷和高吞吐量這一結果也使它獲得了巨大的性能提升其他初期的RDMA 應用還有通過D A F S 的遠程文件伺服器訪問通過SRP 的存儲設備訪問RDMA 技術正在迅速成為高速集群系統和存儲域網路的基本特征技術其中i W A R P /R D M A 是一類基本構造塊此外還有iSER 它是用於RDMA 的iSCSI 擴展充分利用了R D M A 的功能RDMA 的其他早期應用包括通過D A F S 的遠程文件伺服器訪問和通過SRP 的刀片伺服器存儲訪問RDMA 正在迅速成為高速集群和伺服器區域網的一種基本特性。
- 2. NAS 和SAN 中的應用
傳統的直接連接存儲DAS DirectAccess Storage 是以伺服器為中心的存儲結構這一存儲體繫結構存在容量限制連接距離有限不易於共用和管理等不可剋服的缺點已經不能夠滿足網路時代的應用需求網路時代的到來使存儲技術發生了巨大變化網路附加存儲N A SNetwork Attatched Storage 存儲區域網路S A N(Storage Area Network)既能為網路上的應用系統提供豐富快速簡便的存儲資源又能共用存儲資源並對其實施集中管理成為當今理想的存儲管理和應用模式NAS結構存在一些難以解決的問題如傳輸能力有限可擴展性有限數據備份能力有限並且不能對資料庫服務提供有效的支持DAFS 把RDMA 的優點和N A S的存儲能力集成在一起全部讀寫操作都直接通過RDMA 驅動器執行從而降低了網路文件協議所帶來的系統負載今後的NAS 存儲系統將採用DAFS 技術提高系統性能並且在性能和價格上與SAN 存儲系統進行有力的競爭。
- 3.Infiniband
Infiniband的四大優點基於標準的協議10 GB/s 性能RDMA 和傳輸卸載優勢在於R D M A 傳輸卸載高速度InfiniBand網路和採用虛擬介面架構的網路支持RDMA 使用具有傳輸卸載引擎的NIC 的RDMA over TCP/IP 支持Infiniband的伺服器使用主機通道適配器HCA 把協議轉換到伺服器內部的PCI-X 或者PCI-Xpress 匯流排H C A 具有R D M A 功能有時也稱之為內核旁路(Kernel Bypass)。
標點呢??