全部產品
Search
文件中心

Elastic Compute Service:彈性RDMA(eRDMA)

更新時間:Nov 22, 2024

相對於傳統的線下RDMA的應用情境,阿里雲普惠的彈性RDMA網路可以用在更加豐富的情境,例如快取資料庫(Redis)、巨量資料(Spark)、HPC(WRF)、AI訓練等。基於彈性RDMA,您既可以將HPC應用軟體部署在雲上,以擷取成本更低、彈性更好的高效能應用叢集;也可以將VPC網路替換成彈性RDMA網路,以加速您其他應用的效能。

什麼是彈性RDMA

彈性RDMA(Elastic Remote Direct Memory Access,簡稱eRDMA)是阿里雲自研的雲上彈性RDMA網路,底層鏈路複用VPC網路,採用全棧自研的擁塞控制CC(Congestion Control)演算法,享有傳統RDMA網路高吞吐、低延遲特性的同時,可支援秒級的大規模RDMA組網。可相容傳統HPC應用、AI應用以及傳統TCP/IP應用。

為什麼需要彈性RDMA

傳統的TCP/IP一直是業界主流的網路通訊協定,眾多應用都是基於TCP/IP構建的,但隨著資料中心相關業務的蓬勃發展,應用對網路的效能需求(如延遲、輸送量)越來越高,受限於TCP/IP的局限性(如拷貝開銷大、協議棧處理厚、CC演算法複雜、環境切換頻繁等),TCP/IP的網路通訊效能已經成為應用效能提升的瓶頸。

RDMA解決了這些痛點問題。相對於TCP/IP,RDMA實現了零拷貝、核心旁路等特性,避免了拷貝、頻繁的環境切換等開銷,相較於TCP/IP的通訊,達到了低延遲、高輸送量以及低CPU佔用。但是昂貴的價格以及營運成本讓很多應用望而卻步,RDMA的受眾相對較少。

阿里雲的eRDMA從設計之初就是要做雲上普惠的能力,既要滿足客戶對RDMA低延時的需求,又要降低福士化情境的適配門檻,讓更多的應用可以上雲體驗到更好的效能。

彈性RDMA的功能優勢

  • 高效能

    RDMA繞過核心協議棧,將資料直接從使用者態程式轉移到HCA中進行網路傳輸,極大地降低了CPU負載和延遲。eRDMA具有傳統RDMA網卡的優點,同時將傳統的RDMA技術應用到VPC網路下。超低的延遲讓使用者在雲網路中體驗到RDMA帶來的優越效能。

    說明

    HCA(Host Channel Adapter)是一種通常以網路介面卡(NIC)形態出現的硬體裝置,用於串連伺服器與網路,並提供對RDMA技術的支援。

  • 普惠

    無償啟用eRDMA。您只需在購買執行個體時,勾選eRDMA選項,即可實現eRDMA網路的開啟,無需再額外付費。

  • 規模部署

    傳統的RDMA依賴於網路的無損特性,規模部署成本高、規模部署困難。而eRDMA在實現中採用了自研的擁塞控制CC演算法,容忍VPC網路中的傳輸品質變化(延遲、丟包等),在有損的網路環境中依然擁有良好的效能表現。

  • 彈性擴充

    不同於傳統的RDMA網卡需要單獨一個硬體網卡,eRDMA是基於神龍架構的一款原生帶有雲屬性的RDMA HCA卡,可以在使用ECS的過程中動態添加裝置,支援熱遷移,部署十分靈活。

  • 共用VPC網路

    eRDMA依附於彈性網卡(ENI),網路可完全複用,可以在不改變業務組網的情況下,在原來的網路下啟用RDMA功能,體驗到RDMA的優勢。

如何?彈性RDMA通訊

  • ECS執行個體使能eRDMA:阿里雲提供了靈活方便的配置選項,方便您快速為ECS配置eRDMA,實現VPC網路下啟用RDMA功能,建立RDMA串連進行通訊。詳細資料,請參見ECS執行個體使能eRDMA

  • 應用快速適配eRDMA:如果您希望在應用程式中實現和配置RDMA相關的邏輯,以滿足低延遲、高頻寬和低CPU佔用等情境,您可以通過NetACC、SMC等方式對應用進行適配。詳細資料,請參見應用適配概述

彈性RDMA的基礎能力和規格

在RDMA網路通訊中,QP(Queue Pair)、CQ(Completion Queue)、MR(Memory Region)和verbs Opcode是幾個核心的組件,它們在RDMA通訊中扮演著重要的角色,共同確保了RDMA網路通訊的高效性和低延遲性。

當您在應用中使用eRDMA時,需要確保應用滿足產品的能力規格約束,否則可能會導致您的應用無法正常工作。

隊列對(QP)

QP(Queue Pair)是RDMA中的基本通訊實體,由一個發送隊列(Send Queue,SQ)和一個接收隊列(Receive Queue,RQ)組成。QP負責管理髮送和接收的資料。

  • 作用:QP允許應用程式發送和接收資料,它是RDMA通訊的核心。QP的狀態機器管理著串連的狀態,從初始化到終止。

  • eRDMA QP的基本規格:

    規格名稱

    規格

    說明

    建鏈方式

    RDMA_CM

    • RDMA_CM用於管理RDMA串連的建立、維護和關閉,簡化了RDMA串連的管理過程,使應用程式可以更方便地使用RDMA功能。常用於MPI、SMC-R、PolarDB SCC等情境下。詳細資料,請參見Linux rdma_cm

    • eRDMA提供了相容模式(compat mode)用於OOB情境下的應用,如Tensorflow、NCCL、BRPC等。

      重要

    QP類型

    RC

    RC類型的QP提供可靠的串連服務。它支援send操作、RDMA write操作、RDMA read操作和atomic操作。

    SRQ(Shared Receive Queue)

    不支援

    無。

    最大QP數目max_qp_num

    和執行個體規格類型系列有關,最大支援131,071

    • 指的是一個RDMA裝置或網路介面上可以建立的最大隊列對(QP)數量。

    • 它決定了RDMA網路可以支援的最大並發串連數,從而影響網路的擴充性和並發處理能力。

    最大的發送WR深度max_send_wr

    8,192

    • 表示一個QP發送隊列的最大工作請求(Work Request)數量。

    • 它決定了QP可以同時發起的發送操作的數量,影響QP的發送效能和輸送量。

    最大的接收WR深度max_recv_wr

    32,768

    • 表示一個QP接收隊列的最大工作請求數量。

    • 它決定了QP可以同時處理的接收操作的數量,影響QP的接收效能和輸送量。

    最大的發送SGE數目max_send_sge

    說明

    Sge是指散射-聚集元素(Scatter-Gather Element)。

    6

    • 單個send wr支援的離散地址數目。

    • 它決定了QP在一次發送操作中可以處理的最大記憶體片段數量,影響資料轉送的效率和靈活性。

    最大的接收SGE數目max_recv_sge

    1

    • 單個recv wr支援的離散地址數目。

    • 它決定了QP在一次接收操作中可以處理的最大記憶體片段數量,影響資料接收的效率和靈活性。

完成隊列(CQ)

CQ(Completion Queue)用於通知應用程式工作請求(Work Request,WR)的完成情況。當RDMA操作(如發送或接收)完成時,相關的完成資訊會被放入CQ。

  • 作用:CQ是RDMA中非同步作業完成通知的關鍵,它輔助應用程式管理非同步事件和錯誤處理。它提供了一種機制,讓應用程式能夠知道哪些操作已經完成,這對於非同步作業的管理至關重要。

  • eRDMA CQ的基本規格:

    規格名稱

    規格

    說明

    CQ(Completion Queue)數目

    依據執行個體規格,最大CQ數為QP數的兩倍

    CQ的完成向量數目vector_num

    依據執行個體規格(CPU和QP數有關),最大不超過31

    • 每個vector會對應一個硬體中斷。實際使用中,每個CPU配置至多一個vector就可以滿足通訊需求。

    • 每個vector會關聯一個eRDMA內部的CEQ(Completion Event Queue)隊列。

    最大CEQ深度

    4096

    • 0.2.34版本的CEQ深度為256。

    • 如果使用event模式,建議每個vector綁定的CQ隊列數不超過4096,否則可能出現CEQ隊列溢出的風險。

    最大CQ隊列深度

    1,048,576

    無。

RDMA記憶體管理

MR(Memory Region)和MW(Memory Window)是RDMA中用於記憶體管理的兩個重要概念。

  • MR(Memory Region):代表一塊可以被RDMA訪問的記憶體地區。通過註冊MR,應用程式可以讓RDMA硬體直接存取這塊記憶體地區。

    • 作用:MR使得RDMA能夠直接在遠程主機的記憶體上執行操作,如讀寫操作,這是RDMA零拷貝特性的基礎。

    • eRDMA MR的基本規格:

      規格名

      規格

      MR數目

      依據執行個體規格,最大MR數為QP數的兩倍

      Max MR size

      依據底層硬體,最小支援2 GB、最大支援64 GB

  • MW(Memory Window):阿里雲目前不支援MW。

verbs介面

verbs是RDMA編程的基礎,它定義了一組介面,用於控制RDMA裝置的行為。Opcode是這些介面中用於指定具體操作類型的代碼。

  • 作用:Opcode定義了RDMA操作的類型,如發送(SEND)、接收(RECEIVE)、讀取(READ)、寫入(WRITE)等,它們告訴RDMA硬體需要執行的具體動作,允許應用程式直接與RDMA硬體互動,實現高效的資料轉送。

  • Opcode支援情況

    Opcode

    支援情況

    RDMA Write

    支援

    RDMA Write with Immediate

    支援

    RDMA Read

    支援

    Send

    支援

    Send with Invalidate

    支援

    Send with Immediate

    支援

    Send with Solicited Event

    支援

    Local Invalidate

    支援

    Atomic Operation

    支援