一部のエンタープライズレベルインスタンスは eRDMA をサポートしており、既存のネットワークアーキテクチャを変更することなく、超低レイテンシー、高スループット、高い伸縮性を備えた RDMA ネットワークサービスを提供します。このトピックでは、これらのインスタンスで eRDMA を有効化する方法について説明します。
制限事項
制限事項 | 説明 |
インスタンスタイプ | eRDMA をサポートするインスタンスタイプは以下のとおりです: |
イメージ |
説明 使用可能なイメージはインスタンスタイプによって異なります。インスタンスの購入ページには、選択したインスタンスタイプと互換性のあるイメージのみが表示されます。 |
eRDMA デバイス数 | インスタンスタイプがサポートする ERI の最大数を確認するには、DescribeInstanceTypes API を呼び出して、EriQuantity パラメーターを確認します。値が 0 の場合は、そのインスタンスタイプが ERI をサポートしていないことを意味します。 |
ネットワークの制限 |
|
エンタープライズレベルインスタンスの eRDMA 設定
インスタンス作成時
オペレーティングシステムが eRDMA ドライバーの自動インストールをサポートしていない場合、または自動インストールに失敗した場合は、インスタンスの作成後に手動またはスクリプトを使用してドライバーをインストールできます。詳細については、「既存インスタンスの場合」をご参照ください。
eRDMA ドライバーのインストールはインスタンスの起動後に開始され、時間がかかる場合があります。
ERI 機能をサポートするエンタープライズレベルインスタンスを作成します。インスタンスを作成する際は、以下のパラメーターにご注意ください。その他のパラメーターについては、「ウィザードを使用したインスタンスの作成」をご参照ください。
[インスタンスとイメージ]: eRDMA をサポートするインスタンスタイプを選択し、eRDMA ドライバーをインストールします。
[インスタンス]:制限事項をご参照ください。
[イメージ]: 公開イメージ を選択し、次に [eRDMA ドライバーのインストール] を選択します。 インスタンスの起動時に eRDMA ドライバーが自動的にインストールされます。

[ENI]:[プライマリ ENI] の右側で、ERI 機能を有効にして、ERI を ECS インスタンスにバインドします。
説明エンタープライズレベルインスタンスを作成する際、ERI 機能はプライマリ ENI でのみ有効にできます。セカンダリ ENI に eRDMA を設定する必要がある場合は、コンソールまたは API を呼び出して、セカンダリ ENI の ERI 機能を有効にできます。詳細については、「Elastic RDMA ネットワークインターフェイス (ERI)」をご参照ください。
既存インスタンスの場合
インスタンスタイプが eRDMA 対応インスタンスタイプのリスト に含まれていることを確認します。
eRDMA をサポートするインスタンスタイプを選択する必要があります。
インスタンスで eRDMA が正しく設定されていることを確認します。
インスタンスで eRDMA が正しく設定されていることを確認します。詳細については、「eRDMA 設定の確認」をご参照ください。
インスタンスに eRDMA が設定されていない場合は、以下の手順に従って eRDMA ドライバーをインストールし、ERI をインスタンスにアタッチします。
インスタンスに 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 ドライバーが自動的にインストールされます。インストールが完了するまで待ちます。
説明ドライバーのインストールが失敗した場合、
/var/log/erdma_install.logのインストールログを確認してください。
手動インストール
次のコマンドを実行して、前提条件パッケージを更新します。
Alibaba Cloud Linux 3、CentOS、または Anolis OS:
sudo yum update -yUbuntu:更新は不要です。このステップはスキップできます。
次のコマンドを順番に実行して、最新のカーネルパッケージバージョンと実行中のカーネルバージョンを確認します。
rpm -qa | grep kernel # 最新のカーネルパッケージのバージョンを確認します。 uname -r # 実行中のカーネルのバージョンを確認します。サンプル出力は、バージョンが一致していないことを示しています。新しいカーネルを適用するには、インスタンスを再起動する必要があります。再起動後、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 インスタンスはソースベースのビルドタスクを必要とするため、依存パッケージは多数あり、変更される可能性があります。したがって、このステップをスキップして直接インストールスクリプトを実行できます。インストールスクリプトが失敗した場合は、必要な依存パッケージをインストールを促すプロンプトが表示されます。プロンプトに従ってインストールし、再度インストールスクリプトを実行してください。
次のコマンドを実行して、ドライバーインストールパッケージをダウンロードします。
内部 URL からパッケージを取得します:
wget http://mirrors.cloud.aliyuncs.com/erdma/erdma_installer-latest.tar.gzパブリック URL からパッケージを取得します:
wget https://mirrors.aliyun.com/erdma/erdma_installer-latest.tar.gz
デフォルトでは、最新バージョンのドライバーインストールパッケージがダウンロードされます。要件に応じて特定のバージョンをダウンロードすることもできます。さまざまな eRDMA インストーラーパッケージバージョンのリリース情報については、「ステップ2:ECS インスタンスに eRDMA ドライバーをインストールする」をご参照ください。
次のコマンドを実行して、インストールパッケージを解凍し、解凍後のディレクトリに移動します。
tar -xvf erdma_installer-latest.tar.gz && cd erdma_installer次のコマンドを実行して、ドライバーをインストールします。
方法1:インストール中に、アンインストールと自動ダウンロードの各ステップで確認を行います。
sudo sh install.sh方法2:確認プロンプトなしでインストールを実行します。
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 リポジトリをインストールする必要がある場合があります。これにより、必要なパッケージを取得できます。
ERI をインスタンスにアタッチします。
次のいずれかの方法で、ERI をインスタンスにアタッチできます。
説明DescribeInstanceTypes API オペレーションを呼び出して、インスタンスタイプがサポートする ERI の最大数を照会できます。応答内の EriQuantity パラメーターの値を確認してください。値が 0 の場合、そのインスタンスタイプは ERI をサポートしていません。
-
バインド済み ENI の属性を変更して eRDMA インターフェイスを有効化
「ENI の属性の変更」をご参照ください。
-
ERI を作成して ECS インスタンスにバインド
-
ERI を作成するには、「スタンドアロン ERI の作成」をご参照ください。
-
ERI を ECS インスタンスにバインドするには、「セカンダリ ENI のバインド」をご参照ください。
-
-
API オペレーションを使用して eRDMA インターフェイスが有効なセカンダリ ENI を作成し、インスタンスにバインド
API オペレーションを使用してセカンダリ ENI を作成およびバインドします。
-
API オペレーションを呼び出して ERI を作成します。
CreateNetworkInterface オペレーションを呼び出し、NetworkInterfaceTrafficMode パラメーターを HighPerformance に設定して、ERI 機能が有効なエラスティックネットワークインターフェイスを作成します。
NetworkInterfaceIdパラメーターで返された ENI ID を記録します。 -
AttachNetworkInterface を呼び出します。NetworkInterfaceId に前のステップで取得した ID を、InstanceId にターゲットインスタンス ID を設定して、ERI が有効な ENI をバインドします。
重要ご利用のインスタンスタイプが複数の ERI をサポートしている場合、ネットワーク帯域幅を最大化するために、各 ERI をバインドする際に異なる NetworkCardIndex を指定してください。これにより、ERI が異なるチャンネルにバインドされます。「ネットワークカードインデックス」をご参照ください。
-
-
eRDMA 書き込みレイテンシーのテスト
2 つの eRDMA 対応のエンタープライズレベルのインスタンスにperftest をインストールし、ib_write_lat を使用して書き込みレイテンシをテストできます。 perftest の詳細については、「perftest テストスイート」をご参照ください。
前提条件
eRDMA が設定された 2 台 のエンタープライズレベルインスタンスを準備します。つまり、各インスタンスには eRDMA ソフトウェアスタックがインストールされ、ENI で ERI 機能が有効になっている必要があります。一方のインスタンスは サーバー として、もう一方は クライアント として機能します。
2 つのインスタンスが内部ネットワーク経由で相互に通信できることを確認します。詳細については、「ECS インスタンス間の内部通信の有効化」をご参照ください。
操作手順
2 つのインスタンスそれぞれにリモート接続します。
詳細については、「Workbench を使用した Linux インスタンスへの接続」をご参照ください。
両方のインスタンスで eRDMA が正しく設定されていることを確認します。
詳細については、「eRDMA 設定の確認」をご参照ください。
各インスタンスで次のコマンドを実行して、perftest ツールをインストールします。
perftest は公式リポジトリ(パブリック IP アドレスが必要)または YUM/APT リポジトリからインストールできます。
公式リポジトリ
-
ECS インスタンスにパブリック IP アドレスを割り当てます。
-
公式 perftest リポジトリから perftest をダウンロードしてインストールします。
YUM または APT リポジトリ
説明ソフトウェアリポジトリ内の
perftestのバージョンは Linux ディストリビューションによって異なるため、互換性の問題が発生する可能性があります。通信を行うすべてのインスタンスで同じディストリビューションを使用してください。それが不可能な場合は、公式リポジトリからインストールしてください。-
Alibaba Cloud Linux 3、CentOS、または Anolis OS
sudo yum install perftest -y -
Ubuntu
sudo apt install perftest -y
-
eRDMA ネットワークのレイテンシーをテストします。
サーバーインスタンスで、クライアントからの接続をリッスンするサーバーとして
ib_write_latを起動するには、次のコマンドを実行します。ib_write_lat -R -a -F-R: RDMA 接続マネージャー (RDMA_CM) を使用して接続を確立します。重要eRDMA をサポートする CPU ベースのインスタンスタイプ の場合、eRDMA カーネルドライバーはデフォルトで標準モードでインストールされ、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>をサーバーの ERI 対応 ENI のプライベート 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