關於遠程直接內存訪問技術 RDMA 的高性能架構設計介紹

編者按:傳統以太網方案存在系統調用消耗大量時間、增加數據傳輸延時、對 CPU 造成很重的負擔三個缺點,而 RDMA 技術可以解決以上三個缺點。那 RDMA 究竟是什麼?它的方案的設計思路是什麼?今天,浪潮信息驅動工程師劉偉帶大家深入理解 RDMA 技術的基本原理,交流在工程上的設計思路。本文整理自龍蜥大講堂 83 期,以下爲本次分享內容:

01 RDMA技術的優點、基礎知識和設計思路

  • RDMA 和傳統網絡方案的比較

傳統以太網方案存在三個缺點:send/sendto 等系統調用導致 CPU 在用戶態和內核態之間切換,消耗大量時間;發送過程中需要 CPU 把數據從用戶空間複製到內核空間(接收時反向複製),增加了數據傳輸延時;需要 CPU 全程參與數據包的封裝和解析,在數據量大時將對 CPU 將造成很重的負擔。

RDMA 技術可以解決上述三個問題:首先,其在數據傳輸過程中沒有系統調用;然後,在系統內存內部做到零拷貝,省掉了數據在用戶空間和內核空間之間拷貝的步驟。最後,把數據包的封裝和解析交由網卡硬件來做,降低了 CPU 負載。

  • RDMA 協議類型

RDMA 指的是一種遠程直接內存訪問技術。具體到協議層面,它主要包含了Infiniband(IB),RDMA over Converged Ethernet(RoCE)和Internet Wide Area RDMA Protocol(iWARP)三種協議。三種協議都符合RDMA標準,共享相同的上層用戶接口(Verbs),只是在不同層次上有一些差別。

  • RDMA 軟件架構

RDMA 的軟件架構按層次可分成兩部分,即 rdma-core 和內核 RDMA 子系統,分別運行在 Linux 系統中的用戶態和內核態。整個軟件架構適用於所有類型的 RDMA 網卡,不管網卡硬件執行了哪種 RDMA 協議(Infiniband/RoCE/iWARP)。

  • RDMA 基本元素和操作類型

WQE(Work Queue Element,工作隊列元素)的作用類似於以太網方案中收發隊列裏的描述符(Desc) 。其中包含了軟件希望硬件去做的任務類型(遠程讀、遠程寫、發送還是接收等)以及任務的詳細信息(數據所在的內存地址、數據長度和訪問密鑰等)。

WQ(Work Queue,工作隊列)類似於以太網方案中的發送/接收隊列,WQ 裏面可以容納很多 WQE,這些 WQE 在 WQ 中以先進先出(FIFO)隊列的形式存在。左圖展示了 WQ 和 WQE 的關係,以及它們和以太網方案中隊列和描述符功能的比較。

QP 是一個發送工作隊列和一個接受工作隊列的組合,這兩個隊列分別稱爲 SQ(Send Queue)和 RQ(Receive Queue)。SQ 和 RQ 都是一種 WQ。SQ 專門用來存放發送任務,RQ 專門用來存放接收任務。在一次 SEND-RECV 流程中,發送端需要把表示一次發送任務的 WQE 放到 SQ 裏面(這種操作稱爲 Post Send)。同樣的,接收端需要把表示一次接收任務的 WQE 放到 RQ 裏面(稱爲Post Receive),這樣硬件才知道收到數據之後放到內存中的哪個位置。在RDMA技術中,通信的基本主體或對象是 QP,而不是節點。對於每個節點來說,每個進程都可以申請和使用若干個 QP,而每個本地 QP 可以“連接到”一個遠端的 QP。每個節點的每個 QP 都有一個唯一的編號,稱爲 QPN(Query Pair Number),通過 QPN 可以唯一確定一個節點上的 QP。

CQ 意爲完成隊列(Completion Queue)。跟 WQ 中含有很多 WQE 類似,CQ 這個隊列中也有很多元素,叫做 CQE(Completion Queue Element)。可以認爲 CQE 跟 WQE 是相反的概念。如果 WQE 是軟件下發給硬件的任務,CQE 就是硬件完成任務之後返回給軟件的“完成報告”。每個 CQE 都包含某個 WQE 的完成信息。

RDMA WRITE 操作是一端應用主動寫入遠端內存的行爲,除了準備階段,遠端 CPU 不需要參與,也不感知何時有數據寫入、數據在何時接收完畢。所以這是一種單端操作。需要注意的是,操作發起端的應用程序是通過虛擬地址來讀寫遠端內存的,上層應用可以非常方便的對其進行操作。實際的虛擬地址—物理地址的轉換是由 RDMA 網卡完成的。

  • RDMA 方案的設計思路

下圖中橫向箭頭表示的是某應用程序執行的步驟。每個步驟中下行的箭頭和方框表示當前這個步驟的簡要實現流程。

RDMA 實現方案的設計思路中比較重要的三點:初始化和配置等低頻操作可以進入內核態執行;數據傳輸等高頻操作旁路內核;獨立的 QP、CQ 資源保證多線程併發。

02 浪潮 iRDMA 方案簡介

iRDMA 是浪潮信息體系結構研究部利用自研 F10A FPGA 加速卡,基於 Linux 內核 IB 驅動架構和 rdma-core 開源協議棧,開發的一套 RDMA 網絡加速平臺,用戶可在其基礎上進行二次開發。

下面是它的軟件模塊框圖:

我們使用 perftest 工具測試 iRDMA,並和 Mellanox ConnectX-4 Lx 10G 網卡做比較,帶寬測試結果見下圖。

總體來說 Mellanox 網卡比 iRDMA 帶寬大一點,按比例看小 size 時比較明顯。

點擊立即免費試用雲產品 開啓雲上實踐之旅!

原文鏈接

本文爲阿里雲原創內容,未經允許不得轉載。

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章