部分企業級ECS執行個體支援配置eRDMA,可以實現在不需要修改現有網路架構的情況下,體驗超低延遲、大吞吐、高彈性的高效能RDMA網路服務,本文介紹如何在企業級ECS執行個體上啟用eRDMA。
使用限制
限制項 | 說明 |
執行個體規格 | 支援eRDMA的執行個體規格如下: |
鏡像 |
說明 不同執行個體規格可選擇的鏡像範圍不同,實際可選擇的鏡像以購買頁面的實際展示為準。 |
eRDMA裝置數量 | 您可以通過DescribeInstanceTypes返回參數中的EriQuantity的值,查詢執行個體規格支援綁定ERI的最大數量(0表示不支援彈性RDMA介面)。 |
網路限制 |
|
為企業級執行個體配置eRDMA
購買執行個體時配置eRDMA
對於不支援安裝eRDMA驅動的作業系統或自動安裝失敗的情況,您可以在執行個體建立完成後,通過指令碼方式或手動方式安裝驅動。具體操作,請參見為已有執行個體配置eRDMA。
在購買的執行個體啟動後,eRDMA驅動安裝可能需要一段時間,請您耐心等待。
建立支援ERI的企業級執行個體。建立過程中需注意以下配置項(其他參數,請參見自訂購買執行個體):
執行個體和鏡像:選擇支援eRDMA的執行個體規格,並安裝eRDMA驅動。
實例:請參見使用限制。
鏡像:選擇公用鏡像,選中出現的安裝eRDMA驅動。執行個體啟動過程中會自動安裝eRDMA驅動,無需您再手動安裝。

彈性網卡:主網卡右側選擇開啟彈性RDMA介面,為ECS執行個體綁定ERI。
說明購買企業級執行個體時,僅支援為主網卡啟用彈性RDMA介面。如果您需要為輔助網卡配置eRDMA,您可以通過控制台或OpenAPI方式為輔助彈性網卡開啟RDMA介面。具體操作,請參見彈性RDMA網卡(ERI)。
為已有執行個體配置eRDMA
確認執行個體規格在支援eRDMA的執行個體規格列表中。
您需要選擇支援eRDMA的執行個體規格。
驗證執行個體是否已正確配置eRDMA。
您可以先驗證執行個體是否已正確配置eRDMA。具體操作,請參見驗證eRDMA配置的正確性。
如果您確認尚未為執行個體配置eRDMA,則需要依次執行以下步驟,為執行個體安裝eRDMA驅動並綁定ERI。
為執行個體安裝eRDMA驅動。
如果您未在建立執行個體的時候選擇eRDMA驅動,則執行個體不會自動安裝eRDMA驅動。您需要根據實際情況選擇指令碼方式或者手動方式安裝eRDMA驅動。
指令碼方式:預設下載最新且穩定版本的驅動包。
手動方式:可以下載指定版本的驅動包。
通過指令碼一鍵安裝
執行以下命令,下載最新且穩定版本的驅動包。
curl -O http://mirrors.cloud.aliyuncs.com/erdma/env_setup.sh執行以下命令,安裝剛下載的驅動包。
sudo /bin/bash env_setup.sh > /var/log/erdma_install.log 2>&1執行安裝指令碼後,指令碼會自動協助您安裝eRDMA驅動所需的軟體依賴包以及eRDMA驅動,等待安裝指令碼執行結束即可。
說明如果以指令碼方式安裝驅動失敗,請您檢查安裝日誌,安裝日誌的具體路徑為:
/var/log/erdma_install.log。
手動逐步安裝
執行以下命令,更新前置軟體包。
Alibaba Cloud Linux 3/CentOS/Anolis OS:
sudo yum update -yUbuntu:無需更新,跳過該步驟。
依次執行以下命令,查看最新的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執行以下命令,安裝依賴的軟體包。
對於x86執行個體,請執行以下操作:
Alibaba Cloud Linux 3/CentOS/Anolis OS:
sudo yum install gcc-c++ dkms cmake kernel-devel kernel-headers libnl3 libnl3-develUbuntu:
sudo apt-get install dkms cmake libnl-3-dev libnl-route-3-dev linux-headers-generic
對於Arm執行個體,由於需要基於源碼執行構建任務,相關的軟體依賴包較多且可能會發生變化,因此可以忽略本步驟,直接執行安裝指令碼。如果安裝指令碼失敗,指令碼會提示您需要安裝的軟體依賴包,請根據提示完成安裝,然後重新執行軟體安裝即可。
執行以下命令,下載驅動安裝包。
從內網地址擷取軟體包
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驅動。
執行以下命令,解壓安裝包並進入檔案目錄。
tar -xvf erdma_installer-latest.tar.gz && cd erdma_installer執行以下命令,安裝驅動。
方式一:安裝過程需手動確認相關卸載步驟及自動下載步驟
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倉庫,然後才能擷取到對應的軟體包。
為執行個體綁定ERI。
您可以通過以下幾種方式為執行個體綁定彈性RDMA網卡。
說明您可以通過DescribeInstanceTypes返回參數中的EriQuantity的值,查詢執行個體規格支援綁定ERI的最大數量(0表示不支援彈性RDMA介面)。
修改ECS執行個體已綁定的彈性網卡屬性,啟用ERI
具體操作,請參見修改已建立彈性網卡的RDMA介面。
通過OpenAPI建立開啟了ERI的輔助彈性網卡並綁定到執行個體
如果您是通過OpenAPI的方式建立並綁定輔助彈性網卡,則操作如下:
通過OpenAPI建立ERI。
您可以通過CreateNetworkInterface 建立一個彈性網卡,並設定NetworkInterfaceTrafficMode參數的值為HighPerformance,即建立一個開啟了ERI的彈性網卡。
調用成功後,請記錄返回資料中產生的彈性網卡ID(即
NetworkInterfaceId對應的傳回值)。調用AttachNetworkInterface,指定NetworkInterfaceId為上一步返回的網卡ID,指定InstanceId為目標執行個體ID,即將建立的開啟了ERI的彈性網卡綁定到目標執行個體上。
重要如果您的執行個體規格支援綁定多個ERI,為了擷取最大網路頻寬,建議您在綁定時候為每張ERI指定不同的NetworkCardIndex,實現將不同的ERI綁定到不同的通道。詳細資料,請參見物理網卡映射。
測試執行個體在eRDMA的寫延遲效能
您可以在兩台配置了eRDMA的企業級執行個體上,安裝perftest後通過ib_write_lat進行寫延遲測試。關於perftest測試,請參見perftest測試集。
環境準備
準備兩台配置了eRDMA(已安裝eRDMA軟體棧、彈性網卡開啟了RDMA介面)的企業級執行個體,分別作為服務端和用戶端。
確保網路設定正確,兩台伺服器之間內網互連。詳細資料,請參見ECS實現內網互連。
測試步驟
分別遠端連線兩台執行個體。
具體操作,請參見使用Workbench登入Linux執行個體。
驗證並保證兩台執行個體eRDMA配置正確。
具體操作,請參見驗證eRDMA配置的正確性。
在兩台執行個體上,分別執行以下命令,安裝perftest測試載入器。
您可以選擇開通公網通過官方倉庫下載並安裝,或者直接通過yum/apt源進行安裝。
通過官方倉庫下載並安裝
為ECS執行個體開通公網,詳細資料,請參見開通公網。
訪問perftest官方倉庫下載並安裝perftest工具。
通過yum/apt源安裝
說明不同Linux發行版的軟體源中包含的perftest版本可能不一致,在通訊時可能存在相容性問題。建議您通訊的執行個體使用相同的Linux發行版,否則請通過官方倉庫下載並安裝。
Alibaba Cloud Linux 3/CentOS/Anolis OS
sudo yum install perftest -yUbuntu
sudo apt install perftest -y
測試eRDMA網路延遲是否符合預期表現。
在服務端執行個體上,執行以下命令,啟動
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選項會忽略這些串連並強制重建立立新的串連。
在用戶端執行個體上,執行以下命令,啟動
ib_write_lat,串連服務端。ib_write_lat -R -a -F <server_ip><server_ip>是服務端ECS執行個體上測試使用的開啟了彈性RDMA介面的網卡的私人IP地址。擷取IP地址的方法,請參見查看IP地址。查看測試結果。
用戶端測試完成後,
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