一部のエンタープライズレベルの Elastic Compute Service (ECS) インスタンスは、elastic Remote Direct Memory Access (eRDMA) をサポートしています。この機能は、既存のネットワークアーキテクチャを変更することなく、超低レイテンシー、高スループット、高弾力性を備えた高性能な RDMA ネットワークサービスを提供します。このトピックでは、エンタープライズレベルの ECS インスタンスで eRDMA を有効にする方法について説明します。
制限事項
制限事項 | 説明 |
インスタンスタイプ | 以下のインスタンスファミリーは eRDMA をサポートしています: g9ae、c9ae、r9ae、g9a、c9a、r9a、u2a などの一部のインスタンスタイプでは、eRDMA をサポートするために 4 つ以上の vCPU が必要です。 |
イメージ |
説明 利用可能なイメージはインスタンスタイプによって異なります。インスタンス購入ページで利用可能なイメージが最終的なものです。 |
eRDMA デバイスの数 | 特定のインスタンスタイプの ECS インスタンスにバインドできる ERI の最大数を照会するには、DescribeInstanceTypes 操作を呼び出し、応答の EriQuantity パラメーターの値を確認します。値が 0 の場合、そのインスタンスタイプの ECS インスタンスに ERI をバインドできないことを示します。 |
ネットワークの制限 |
|
エンタープライズレベルインスタンスでの eRDMA の設定
インスタンス作成時の eRDMA の設定
オペレーティングシステムが eRDMA ドライバーをサポートしていない場合、または自動インストールに失敗した場合は、インスタンス作成後にスクリプトを使用するか手動でドライバーをインストールできます。詳細については、「既存インスタンスでの eRDMA の設定」をご参照ください。
インスタンスの起動後、eRDMA ドライバーのインストールが完了するまでに時間がかかる場合があります。
ERI をサポートするエンタープライズレベルのインスタンスを作成します。作成プロセス中に、以下の設定項目に注意してください。その他のパラメーターについては、「ウィザードを使用したインスタンスの作成」をご参照ください。
インスタンスとイメージ:eRDMA をサポートするインスタンスタイプを選択し、eRDMA ドライバーをインストールするオプションを選択します。
インスタンス:詳細については、「制限事項」をご参照ください。
イメージ:[パブリックイメージ] を選択し、次に [eRDMA ドライバーのインストール] を選択します。eRDMA ドライバーはインスタンスの起動時に自動的にインストールされます。手動でインストールする必要はありません。

ENI:プライマリ ENI の右側で、ERI 機能を有効にして ERI を ECS インスタンスにアタッチします。
説明エンタープライズレベルのインスタンスを購入する場合、ERI 機能はプライマリ ENI に対してのみ有効にできます。セカンダリ ENI に eRDMA を設定するには、コンソールで、または API 操作を呼び出して、セカンダリ ENI の ERI 機能を有効にできます。詳細については、「Elastic RDMA Interface (ERI)」をご参照ください。
既存インスタンスでの eRDMA の設定
インスタンスタイプが eRDMA をサポートするインスタンスタイプのリスト に含まれていることを確認します。
インスタンスタイプは eRDMA をサポートしている必要があります。
インスタンスで eRDMA が正しく設定されていることを確認します。
まず、インスタンスで eRDMA が正しく設定されていることを確認します。詳細については、「eRDMA 設定の確認」をご参照ください。
インスタンスに eRDMA が設定されていないことを確認した場合は、次の手順を実行して eRDMA ドライバーをインストールし、ERI をインスタンスにアタッチします。
インスタンスへの 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 の場合:更新を実行する必要はありません。このステップをスキップしてください。
次のコマンドを順に実行して、最新のカーネルパッケージバージョンとオペレーティングシステムのカーネルバージョンを表示します。
rpm -qa | grep kernel # 最新のカーネルパッケージバージョンを表示します。 uname -r # オペレーティングシステムのカーネルバージョンを表示します。コマンドの出力が次の例のようであれば、バージョンは一致しており、これ以上の操作は必要ありません。バージョンが一致しない場合は、インスタンスを再起動して変更を有効にしてください。

次のコマンドを実行して、依存関係パッケージをインストールします。
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 インストールパッケージのさまざまなバージョンのリリースについては、「ステップ 2:ECS インスタンス用の eRDMA ドライバーのインストール」をご参照ください。
次のコマンドを実行して、インストールパッケージを解凍し、ファイルディレクトリに移動します。
tar -xvf erdma_installer-latest.tar.gz && cd erdma_installer次のコマンドを実行して、ドライバーをインストールします。
方法 1:インストールプロセス中にアンインストールと自動ダウンロードのステップを手動で確認します。
sudo sh install.sh方法 2:確認なしでインストールする
sudo sh install.sh --batch
返された情報に基づいてインストール結果を確認します。
次の情報が返された場合、ドライバーはインストールされています。

次の情報が返された場合、ドライバーのインストールに失敗しました。プロンプトに従って操作を実行し、再度ドライバーのインストールを試みてください。
説明CentOS 7 システムを使用していて、ドライバーの再インストール時にソフトウェアパッケージが不足しているというメッセージが表示され、
yumを使用してパッケージを取得できない場合は、パッケージを取得する前にyum install -y epel-releaseコマンドを実行して EPEL リポジトリをインストールする必要がある場合があります。
インスタンスへの ERI のアタッチ
次のいずれかの方法でインスタンスに ERI をアタッチできます。
説明特定のインスタンスタイプの ECS インスタンスにバインドできる ERI の最大数を照会するには、DescribeInstanceTypes 操作を呼び出し、応答の EriQuantity パラメーターの値を確認します。値が 0 の場合、そのインスタンスタイプの ECS インスタンスに ERI をバインドできないことを示します。
ECS インスタンスにバインドされている ENI の ERI 機能を有効にする
ENI の属性を変更することで、ECS インスタンスにバインドされている ENI の ERI 機能を有効にできます。詳細については、「ERI」トピックの「既存の ENI の ERI 機能のステータスを変更する」セクションをご参照ください。
ERI を作成し、ERI を ECS インスタンスにバインドする
ERI の作成方法については、「ERI」トピックの「ERI を個別に作成する」セクションをご参照ください。
ERI を ECS インスタンスにバインドする方法については、「セカンダリ ENI のバインド」をご参照ください。
API 操作を呼び出して ERI を作成し、ERI を ECS インスタンスにバインドする
次の手順を実行します:
API 操作を呼び出して ERI を作成します。
CreateNetworkInterface 操作を呼び出して ENI を作成し、NetworkInterfaceTrafficMode パラメーターを HighPerformance に設定して ENI の ERI 機能を有効にします。
呼び出しが成功したら、ERI ID である
NetworkInterfaceIdパラメーターの戻り値を記録します。NetworkInterfaceId パラメーターを前のステップで記録した戻り値に設定し、InstanceId パラメーターを ECS インスタンスの ID に設定して、AttachNetworkInterface 操作を呼び出して ERI を ECS インスタンスにバインドします。
重要ECS インスタンスのインスタンスタイプがインスタンスごとに複数の ERI をサポートしている場合、複数の ERI をインスタンスにバインドする際には、ERI ごとに NetworkCardIndex パラメーターに異なる値を設定することをお勧めします。これにより、ERI が異なるチャネルにバインドされ、インスタンスの最大ネットワーク帯域幅が達成されます。詳細については、「ネットワークカードインデックス」をご参照ください。
インスタンスの eRDMA 書き込みレイテンシーのテスト
perftest をインストールし、ib_write_lat を使用して、eRDMA が設定された 2 つのエンタープライズレベルインスタンスの書き込みレイテンシーをテストできます。perftest テストの詳細については、「perftest テストセット」をご参照ください。
前提条件
eRDMA が設定された2 つのエンタープライズレベルインスタンスを準備します。eRDMA ソフトウェアスタックがインストールされ、ERI がインスタンスにアタッチされている必要があります。1 つのインスタンスはサーバーとして、もう 1 つはクライアントとして機能します。
ネットワークが正しく設定されており、2 つのサーバーが内部ネットワークを介して相互に通信できることを確認します。詳細については、「ECS インスタンス間のイントラネット相互通信の有効化」をご参照ください。
手順
2 つのインスタンスにリモートで接続します。
詳細については、「Workbench を使用した Linux インスタンスへの接続」をご参照ください。
両方のインスタンスで eRDMA 設定が正しいことを確認します。
詳細については、「eRDMA 設定の確認」をご参照ください。
2 つのインスタンスで次のコマンドを実行して、perftest ツールをインストールします。
公式の perftest リポジトリから perftest パッケージをダウンロードしてインストールするか、Yellowdog Updater, Modified (YUM) または Advanced Packaging Tool (APT) リポジトリを使用して perftest をインストールできます。
公式 perftest リポジトリ
perftest をインストールする ECS インスタンスのパブリック帯域幅を有効にします。詳細については、「パブリック帯域幅の有効化」をご参照ください。
公式 perftest リポジトリから perftest パッケージをダウンロードして perftest をインストールします。
YUM または APT リポジトリ
説明異なる Linux ディストリビューションのリポジトリには、異なるバージョンの perftest が含まれています。互換性の問題が発生する可能性があります。互換性の問題を避けるため、perftest をインストールする ECS インスタンスが実行している Linux ディストリビューションを特定し、同じ Linux ディストリビューションのリポジトリに含まれる perftest バージョンをインストールすることをお勧めします。そうでない場合は、公式 perftest リポジトリから perftest パッケージをダウンロードして perftest をインストールしてください。
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 カーネルドライバーをインストールします。このモードでは、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 インスタンスで ERI 機能が有効になっているネットワークインターフェースカード (NIC) のプライベート IP アドレスに置き換えます。IP アドレスの取得方法については、「IP アドレスの表示」をご参照ください。テスト結果を表示します。
クライアントテストが完了すると、
ib_write_latはテスト設定情報、接続情報、およびパフォーマンステスト結果を出力します。結果には、最小、最大、平均レイテンシーなどのレイテンシー関連の統計が含まれます。