全部產品
Search
文件中心

Elastic Compute Service:在企業級執行個體上啟用eRDMA

更新時間:Jun 17, 2026

部分企業級ECS執行個體支援配置eRDMA,可以實現在不需要修改現有網路架構的情況下,體驗超低延遲、大吞吐、高彈性的高效能RDMA網路服務,本文介紹如何在企業級ECS執行個體上啟用eRDMA。

使用限制

限制項

說明

執行個體規格

支援eRDMA的執行個體規格如下:

點擊查看支援的執行個體規格

鏡像

  • Alibaba Cloud Linux 3(推薦)

  • Alibaba Cloud Linux 2(僅x86系統支援)

  • CentOS 7.9(僅x86系統支援)

  • Ubuntu 18.04/20.04/22.04/24.04

  • Anolis OS 8.4 ANCK/8.6 ANCK(僅Arm版本支援)

說明

不同執行個體規格可選擇的鏡像範圍不同,實際可選擇的鏡像以購買頁面的實際展示為準。

eRDMA裝置數量

您可以通過DescribeInstanceTypes返回參數中的EriQuantity的值,查詢執行個體規格支援綁定ERI的最大數量(0表示不支援彈性RDMA介面)。

網路限制

  • 網卡開啟彈性RDMA介面後,不支援分配IPv6地址。

  • 兩個執行個體之間通過彈性RDMA通訊,通訊鏈路中間不支援跨網元裝置(例如Server Load Balancer等)。

  • GPU執行個體與企業級執行個體中的eRDMA由於所處工作模式不同,所以GPU執行個體與企業級執行個體不能直接通訊。如果需要通訊,請在企業級執行個體中參考GPU執行個體部署eRDMA的方式進行部署(安裝eRDMA驅動、OFED驅動,並且為執行個體綁定彈性RDMA網卡)。具體操作,請參見在GPU執行個體上啟用eRDMA

為企業級執行個體配置eRDMA

購買執行個體時配置eRDMA

重要
  • 對於不支援安裝eRDMA驅動的作業系統或自動安裝失敗的情況,您可以在執行個體建立完成後,通過指令碼方式或手動方式安裝驅動。具體操作,請參見為已有執行個體配置eRDMA

  • 在購買的執行個體啟動後,eRDMA驅動安裝可能需要一段時間,請您耐心等待。

  1. 前往執行個體購買頁

  2. 建立支援ERI的企業級執行個體。建立過程中需注意以下配置項(其他參數,請參見自訂購買執行個體):

    • 執行個體和鏡像:選擇支援eRDMA的執行個體規格,並安裝eRDMA驅動。

      • 實例:請參見使用限制

      • 鏡像選擇公用鏡像,選中出現的安裝eRDMA驅動。執行個體啟動過程中會自動安裝eRDMA驅動,無需您再手動安裝。

        image

    • 彈性網卡主網卡右側選擇開啟彈性RDMA介面,為ECS執行個體綁定ERI。

      說明

      購買企業級執行個體時,僅支援為主網卡啟用彈性RDMA介面。如果您需要為輔助網卡配置eRDMA,您可以通過控制台或OpenAPI方式為輔助彈性網卡開啟RDMA介面。具體操作,請參見彈性RDMA網卡(ERI)

為已有執行個體配置eRDMA

  1. 確認執行個體規格在支援eRDMA的執行個體規格列表中。

    您需要選擇支援eRDMA的執行個體規格。

  2. 驗證執行個體是否已正確配置eRDMA。

    • 您可以先驗證執行個體是否已正確配置eRDMA。具體操作,請參見驗證eRDMA配置的正確性

    • 如果您確認尚未為執行個體配置eRDMA,則需要依次執行以下步驟,為執行個體安裝eRDMA驅動並綁定ERI。

  3. 為執行個體安裝eRDMA驅動

    如果您未在建立執行個體的時候選擇eRDMA驅動,則執行個體不會自動安裝eRDMA驅動。您需要根據實際情況選擇指令碼方式或者手動方式安裝eRDMA驅動。

    • 指令碼方式:預設下載最新且穩定版本的驅動包。

    • 手動方式:可以下載指定版本的驅動包。

    通過指令碼一鍵安裝

    1. 執行以下命令,下載最新且穩定版本的驅動包。

      curl -O http://mirrors.cloud.aliyuncs.com/erdma/env_setup.sh
    2. 執行以下命令,安裝剛下載的驅動包。

      sudo /bin/bash env_setup.sh > /var/log/erdma_install.log 2>&1

      執行安裝指令碼後,指令碼會自動協助您安裝eRDMA驅動所需的軟體依賴包以及eRDMA驅動,等待安裝指令碼執行結束即可。

      說明

      如果以指令碼方式安裝驅動失敗,請您檢查安裝日誌,安裝日誌的具體路徑為:/var/log/erdma_install.log

    手動逐步安裝

    1. 執行以下命令,更新前置軟體包

      • Alibaba Cloud Linux 3/CentOS/Anolis OS:

        sudo yum update -y
      • Ubuntu:無需更新,跳過該步驟。

    2. 依次執行以下命令,查看最新的kernel包版本和作業系統的核心版本

      rpm -qa | grep kernel  #查看最新的kernel包版本
      uname -r  #查看作業系統的核心版本

      系統返回樣本資訊如下,表示兩者版本一致,無需進行額外操作。若版本不一致,則需要重啟執行個體使其生效。

      [ecs-user@iZbp1xxxxxxxxxxxxx ~]$ rpm -qa | grep kernel
      kernel-tools-5.10.134-16.1.al8.x86_64
      kernel-5.10.134-16.1.al8.x86_64
      kernel-modules-extra-5.10.134-16.1.al8.x86_64
      kernel-hotfix-13383560-5.10.134-15-1.0-20230724161633.al8.x86_64
      kernel-devel-5.10.134-16.1.al8.x86_64
      kernel-5.10.134-15.al8.x86_64
      kernel-modules-5.10.134-16.1.al8.x86_64
      kernel-tools-libs-5.10.134-16.1.al8.x86_64
      kernel-core-5.10.134-16.1.al8.x86_64
      kernel-core-5.10.134-15.al8.x86_64
      kernel-modules-internal-5.10.134-16.1.al8.x86_64
      kernel-devel-5.10.134-15.al8.x86_64
      kernel-modules-5.10.134-15.al8.x86_64
      kernel-headers-5.10.134-16.1.al8.x86_64
      [ecs-user@iZbp1xxxxxxxxxxxxx ~]$ uname -r
      5.10.134-15.al8.x86_64
    3. 執行以下命令,安裝依賴的軟體包

      • 對於x86執行個體,請執行以下操作:

        • Alibaba Cloud Linux 3/CentOS/Anolis OS:

          sudo yum install gcc-c++ dkms cmake kernel-devel kernel-headers libnl3 libnl3-devel
        • Ubuntu:

          sudo apt-get install dkms cmake libnl-3-dev libnl-route-3-dev linux-headers-generic
      • 對於Arm執行個體,由於需要基於源碼執行構建任務,相關的軟體依賴包較多且可能會發生變化,因此可以忽略本步驟,直接執行安裝指令碼。如果安裝指令碼失敗,指令碼會提示您需要安裝的軟體依賴包,請根據提示完成安裝,然後重新執行軟體安裝即可。

    4. 執行以下命令,下載驅動安裝包

      • 從內網地址擷取軟體包

        wget http://mirrors.cloud.aliyuncs.com/erdma/erdma_installer-latest.tar.gz
      • 從公網地址擷取軟體包

        wget https://mirrors.aliyun.com/erdma/erdma_installer-latest.tar.gz

      這裡預設下載最新版本的驅動安裝包,您還可以根據實際情境下載指定版本的驅動包。eRDMA不同安裝程式包版本的發布資訊,請參見步驟二:為ECS執行個體安裝eRDMA驅動

    5. 執行以下命令,解壓安裝包並進入檔案目錄

      tar -xvf erdma_installer-latest.tar.gz && cd erdma_installer
    6. 執行以下命令,安裝驅動

      • 方式一:安裝過程需手動確認相關卸載步驟及自動下載步驟

        sudo sh install.sh
      • 方式二:安裝過程無需確認過程

        sudo sh install.sh  --batch

      根據返回資訊,確認安裝結果。

      若系統返回如下資訊,則表示安裝驅動成功。

      ================================= Installation Information ======
          architecture        : x86_64
          distributor         : alinux
          release             : 3
          binary path         : RPMS/alinux3
          build from source   : erdma(N) rdma-core(N) eadm(N)
          install requires    : gcc make patch gcc-c++ dkms cmake kernel-
          build requires      : gcc make patch gcc-c++ dkms cmake kernel-
      vel redhat-rpm-config rpm-build libnl3-devel ninja-build perl-gen
      hon3-docutils
          temp dir            : /tmp/ERDMA.120833
          log file            : /tmp/install-erdma.log.120833
      ====================================================================
      Checking for Linux headers availability...
      Verifying dependencies...
      Removing erdma package...
      Start to uninstall rdma-core libraries...
      Installing erdma
      Reloading erdma modules
      Installation finished successfully.
      Update erdma.ko in initramfs

      若系統返回如下資訊,則表示提示安裝驅動失敗,請按照提示資訊操作,完成後重新嘗試安裝驅動。

      ========================== Installation Information ========================================
        architecture      : x86_64
        distributor        : alinux
        release            : 3
        binary path        : RPMS/alinux3
        build from source  : erdma(Y) rdma-core(Y) eadm(Y)
        install requires   : gcc make patch gcc-c++ dkms cmake kernel-headers kernel-devel
        build requires     : gcc make patch gcc-c++ dkms cmake kernel-headers kernel-devel gcc make patch gcc-c++ dkms cmake kernel-headers kernel-devel redhat-rpm-config rpm-build libnl3-devel ninja-build perl-generators pandoc systemd-devel valgrind-devel kernel-rpm-macros python3-Cython python3-docutils
        temp dir           : /tmp/ERDMA.172873
        log file           : /tmp/install-erdma.log.172873
      ===========================================================================================
      Checking for Linux headers availability...
      Verifying dependencies...
      ERDMA requires the following Packages(s) to be installed:   libnl3-devel ninja-build perl-generators pandoc systemd-devel valgrind-devel python3-Cython python3-docutils
      說明

      如果您使用的是CentOS 7系統,並且重新安裝驅動過程中提示缺少軟體包,但您無法通過yum擷取到,您可能需要執行yum install -y epel-release命令,先安裝epel-release倉庫,然後才能擷取到對應的軟體包。

  4. 為執行個體綁定ERI。

    您可以通過以下幾種方式為執行個體綁定彈性RDMA網卡。

    說明

    您可以通過DescribeInstanceTypes返回參數中的EriQuantity的值,查詢執行個體規格支援綁定ERI的最大數量(0表示不支援彈性RDMA介面)。

    • 通過OpenAPI建立開啟了ERI的輔助彈性網卡並綁定到執行個體

      如果您是通過OpenAPI的方式建立並綁定輔助彈性網卡,則操作如下:

      1. 通過OpenAPI建立ERI。

        您可以通過CreateNetworkInterface 建立一個彈性網卡,並設定NetworkInterfaceTrafficMode參數的值為HighPerformance,即建立一個開啟了ERI的彈性網卡。

        調用成功後,請記錄返回資料中產生的彈性網卡ID(即NetworkInterfaceId對應的傳回值)。

      2. 調用AttachNetworkInterface,指定NetworkInterfaceId為上一步返回的網卡ID,指定InstanceId為目標執行個體ID,即將建立的開啟了ERI的彈性網卡綁定到目標執行個體上。

        重要

        如果您的執行個體規格支援綁定多個ERI,為了擷取最大網路頻寬,建議您在綁定時候為每張ERI指定不同的NetworkCardIndex,實現將不同的ERI綁定到不同的通道。詳細資料,請參見物理網卡映射

測試執行個體在eRDMA的寫延遲效能

您可以在兩台配置了eRDMA的企業級執行個體上,安裝perftest後通過ib_write_lat進行寫延遲測試。關於perftest測試,請參見perftest測試集

環境準備

  1. 準備兩台配置了eRDMA(已安裝eRDMA軟體棧、彈性網卡開啟了RDMA介面)的企業級執行個體,分別作為服務端用戶端

  2. 確保網路設定正確,兩台伺服器之間內網互連。詳細資料,請參見ECS實現內網互連

測試步驟

  1. 分別遠端連線兩台執行個體。

    具體操作,請參見使用Workbench登入Linux執行個體

  2. 驗證並保證兩台執行個體eRDMA配置正確。

    具體操作,請參見驗證eRDMA配置的正確性

  3. 在兩台執行個體上,分別執行以下命令,安裝perftest測試載入器。

    您可以選擇開通公網通過官方倉庫下載並安裝,或者直接通過yum/apt源進行安裝。

    通過官方倉庫下載並安裝

    1. 為ECS執行個體開通公網,詳細資料,請參見開通公網

    2. 訪問perftest官方倉庫下載並安裝perftest工具。

    通過yum/apt源安裝

    說明

    不同Linux發行版的軟體源中包含的perftest版本可能不一致,在通訊時可能存在相容性問題。建議您通訊的執行個體使用相同的Linux發行版,否則請通過官方倉庫下載並安裝

    • Alibaba Cloud Linux 3/CentOS/Anolis OS

      sudo yum install perftest -y
    • Ubuntu

      sudo apt install perftest -y
  4. 測試eRDMA網路延遲是否符合預期表現。

    1. 在服務端執行個體上,執行以下命令,啟動 ib_write_lat 作為伺服器,監聽來自用戶端的串連。

      ib_write_lat -R -a -F
      • -R:表示使用 RDMA_CM來建立串連。

        重要
        • 目前支援eRDMA的CPU執行個體規格,預設eRDMA核心驅動安裝模式為Standard,僅支援RDMA_CM建鏈方式。詳細資料,請參見建鏈方式

        • perftest預設為OOB帶外建鏈,在CPU執行個體上進行perftest測試時,服務端和用戶端均可以通過-R參數指定使用RDMA CM建鏈方式,否則在建立串連時可能會出現異常。

        • 您也可以通過命令列方式,實現RDMA_CM和OOB建鏈方式的相容。詳細資料,請參見修改eRDMA與bRPC的建鏈模式以實現相容。通過該方式實現相容後,命令中無需加-R。

      • -a:這個選項表示運行所有訊息大小的測試,從 2 到 2^23 位元組。這允許測試不同訊息大小對延遲的影響。

      • -F:強制覆蓋任何現有串連。這意味著如果之前已經建立了串連,使用 -F 選項會忽略這些串連並強制重建立立新的串連。

    2. 在用戶端執行個體上,執行以下命令,啟動 ib_write_lat,串連服務端。

      ib_write_lat -R -a -F <server_ip>

      <server_ip>服務端ECS執行個體上測試使用的開啟了彈性RDMA介面的網卡的私人IP地址。擷取IP地址的方法,請參見查看IP地址

    3. 查看測試結果。

      用戶端測試完成後,ib_write_lat 會輸出測試組態資訊串連資訊以及效能測試結果(延遲相關的統計資料,包括最小、最大、平均延遲等效能指標)。

      [root@xxx              ~]# ib_write_lat -R -a -F 172.17.0.131
       RDMA_Write Latency Test
       Dual-port       : OFF		Device           : erdma_0
       Number of qps   : 1		Transport type   : IW
       Connection type  : RC		Using SRQ        : OFF
       PCIe relax order: OFF
       ibv_wr* API     : OFF
       TX depth         : 1
       Mtu              : 1024[B]
       Link type        : Ethernet
       GID index        : 0
       Max inline data  : 96[B]
       rdma_cm QPs      : ON
       Data ex. method  : rdma_cm
       local address: LID 0000 QPN 0x000b PSN 0xaf51c5
       GID: 00:22:62:22:161:180:00:00:00:00:00:00:00:00:00:00
       remote address: LID 0000 QPN 0x000a PSN 0x347ff0
       GID: 00:22:62:09:142:189:00:00:00:00:00:00:00:00:00:00
       #bytes #iterations    t_min[usec]    t_max[usec]  t_typical[usec]    t_avg[usec]    t_stdev[usec]   99% percentile[usec]   99.9% percentile[usec]
         2       1000          12.26          16.79          12.59            12.65            0.19              14.32                    16.79
         4       1000          12.10          18.10          12.54            12.60            0.24              14.57                    18.10
         8       1000          12.04          18.75          12.42            12.48            0.31              14.09                    18.75
        16       1000          12.45          14.77          12.77            12.81            0.11              14.10                    14.77
        32       1000          12.28          15.55          12.75            12.81            0.21              14.67                    15.55
        64       1000          12.41          16.10          12.79            12.84            0.16              14.31                    16.10
       128       1000          12.86          16.22          13.19            13.21            0.15              14.78                    16.22
       256       1000          13.11          20.85          13.53            13.64            0.35              15.43                    20.85
       512       1000          13.09          16.54          13.44            13.47            0.17              15.16                    16.54

      ib_write_lat測試結果延遲資料說明

      • #bytes:訊息大小,測試中使用的payload大小,從2位元組到8388608位元組不等。不同的訊息大小可以協助您瞭解不同負載下的效能表現。

      • #iterations:迭代次數,表示每個訊息大小的測試重複了多少次。高迭代次數可以提供更穩定的平均值和統計資料。

      • t_min[usec]:最小延遲,單位是微秒,表示在所有測量中記錄到的最小延遲時間。這個值可以給您一個最佳情況下的網路延遲參考。

      • t_max[usec]:最大延遲,單位是微秒,表示在所有測量中記錄到的最大延遲時間。高的最大延遲可能指示網路中的某些問題或者瞬時的擁塞。

      • t_typical[usec]:典型延遲,單位是微秒,示在測試中常見的延遲時間。通常是所有測量值的中位元。

      • t_avg[usec]:平均延遲,單位是微秒,表示所有測量值的平均延遲時間。這個值可以給您一個整體的網路延遲印象。

      • t_stdev[usec]:延遲的標準差,單位是微秒,表示延遲值的變異程度。較小的標準差意味著延遲比較穩定,而較大的標準差則表示延遲波動較大。

      • 99% percentile[usec]:99%分位元的延遲,單位是微秒,表示99%的測量值都低於這些值。這些資料點可以協助您瞭解極端情況下的延遲表現。

      • 99.9% percentile[usec]:99.9%分位元的延遲,單位是微秒,表示99.9%的測量值都低於這些值。這些資料點可以協助您瞭解極端情況下的延遲表現。

      通過綜合這些資料,您可以對 RDMA 網路的效能有一個全面的瞭解,並據此進行網路最佳化和故障排除。例如,如果您發現在特定訊息大小下延遲突然增加,您可能需要檢查網路設定或硬體效能是否滿足要求。如果您看到延遲波動較大,可能需要進一步調查網路中的擁塞情況或不穩定因素。