Elastic Compute Service (ECS) インスタンスで Elastic Remote Direct Memory Access (eRDMA) をサポートするインスタンスタイプを作成し、Elastic RDMA インターフェース (ERI) をインスタンスにバインドすることで、eRDMA を使用して、大規模ネットワーキング機能と RDMA の低レイテンシを活用できます。 ERI は、ERI 機能が有効になっている Elastic Network Interface (ENI) です。
ECS インスタンスで eRDMA を有効にする
ステップ 1:インスタンスタイプまたはイメージが eRDMA をサポートしているかどうかを確認する
eRDMA をサポートしているのは、一部のインスタンスタイプとイメージのみです。
ステップ 2:ECS インスタンスに eRDMA ドライバーをインストールする
eRDMA ドライバーは、Alibaba Cloud 社内で開発されています。 Alibaba Cloud は、eRDMA ドライバーのテクニカルサポートを提供しています。
eRDMA ドライバーのインストールプロセスは、完了するまでに時間がかかります。
eRDMA ドライバーインストールパッケージ
eRDMA ドライバーをインストールする
eRDMA をサポートする ECS インスタンスを作成するときに [eRDMA ドライバーの自動インストール] オプションを選択するか、インスタンスの作成後に eRDMA ドライバーを手動でインストールすることで、eRDMA ドライバーを自動的にインストールできます。
エンタープライズレベルの CPU ベースインスタンスに eRDMA ドライバーをインストールする方法については、「エンタープライズレベルインスタンスで eRDMA を構成する」をご覧ください。
GPU アクセラレーションインスタンスに eRDMA ドライバーをインストールする方法については、「GPU アクセラレーションインスタンスで eRDMA を有効にする」をご覧ください。
eRDMA カーネルモードドライバーのバージョンを確認する
eRDMA ドライバーがインストールされた後、
eadm verコマンドを実行して、eRDMA カーネルモードドライバーのバージョンを確認できます。 最新の eRDMA ドライバーバージョン 1.4.5 は、eRDMA カーネルモードドライバーバージョン 0.2.38 に対応しています。
eRDMA は、eRDMA カーネルモードドライバーの次のインストールモードをサポートしています。 接続確立方法に基づいてインストールモードを選択します。 接続確立方法については、「接続確立方法の説明」をご覧ください。
Standard: eRDMA カーネルモードドライバーは Standard モードでインストールされ、RDMA Connection Manager (CM) 接続のみをサポートします。重要デフォルトでは、eRDMA をサポートする CPU ベースのインスタンスファミリ は、eRDMA カーネルモードドライバーを Standard モードでインストールします。 このモードでは、RDMA_CM 接続確立方法のみがサポートされています。
Compat: eRDMA カーネルモードドライバーは Compat モード (互換モード) でインストールされ、RDMA CM 接続と帯域外 (OOB) 接続をサポートします。重要デフォルトでは、eRDMA をサポートする GPU ベースのインスタンスファミリ は、eRDMA カーネルモードドライバーを Compat モードでインストールします。 このモードでは、RDMA_CM と OOB の接続確立方法がサポートされています。
CLI を使用して、RDMA_CM と OOB の接続確立方法間の互換性を有効にすることができます。 詳細については、「eRDMA の接続確立モードを bRPC と互換性があるように変更する」をご覧ください。
Compat モードでは、30608 ~ 30623 の範囲の追加の 16 個の TCP ポートが使用されます。
ステップ 3:ERI を ECS インスタンスにバインドする
ECS インスタンスの作成時にプライマリ ENI の ERI 機能を有効にするか、インスタンスの作成後に ERI を ECS インスタンスにバインドできます。
特定のインスタンスタイプの ECS インスタンスにバインドできる ERI の最大数を照会するには、DescribeInstanceTypes 操作を呼び出し、応答の EriQuantity パラメーターの値を確認します。値が 0 の場合は、そのインスタンスタイプの ECS インスタンスに ERI をバインドできないことを示します。
ECS インスタンスの作成時に、ENI の [eRDMA インターフェース] オプションを有効にする
詳細については、「ERI」トピックの ECS インスタンスの作成時に ERI を作成する セクションをご覧ください。
ERI を作成し、ECS インスタンスにバインドする
ERI の作成方法については、「ERI」トピックの 個別に ERI を作成する セクションをご覧ください。
ERI を ECS インスタンスにバインドする方法については、「セカンダリ ENI をバインドする」をご覧ください。
ECS インスタンスにバインドされている ENI の ERI 機能を有効にする
ENI の属性を変更することで、ECS インスタンスにバインドされている ENI の ERI 機能を有効にすることができます。 詳細については、「ERI」トピックの 既存の ENI の ERI 機能のステータスを変更する セクションをご覧ください。
API オペレーションを呼び出して、ERI を作成し、ECS インスタンスにバインドする
次の手順を実行します。
API オペレーションを呼び出して、ERI を作成します。
CreateNetworkInterface オペレーションを呼び出して ENI を作成し、NetworkInterfaceTrafficMode パラメーターを HighPerformance に設定して、ENI の ERI 機能を有効にします。
呼び出しが成功したら、
NetworkInterfaceIdパラメーターの戻り値を記録します。これは ERI ID です。NetworkInterfaceId パラメーターを前の手順で記録した戻り値に設定し、InstanceId パラメーターを ECS インスタンスの ID に設定して、AttachNetworkInterface オペレーションを呼び出して、ERI を ECS インスタンスにバインドします。
重要ECS インスタンスのインスタンスタイプがインスタンスごとに複数の ERI をサポートしている場合は、インスタンスに複数の ERI をバインドするときに、ERI ごとに NetworkCardIndex パラメーターを異なる値に設定することをお勧めします。 これにより、ERI が異なるチャネルにバインドされ、インスタンスの最大ネットワーク帯域幅が実現されます。 詳細については、「ネットワークカードインデックス」をご覧ください。
eRDMA 構成の正確性を検証する
ibv_devinfo コマンドは、eRDMA が想定どおりに機能するかどうかを確認するのに役立ちます。 ibv_devinfo コマンドを実行すると、デバイスのハードウェア属性、ポートステータス、サポートされている機能など、デバイスに関する情報を取得できます。 少なくとも 1 つのポートが PORT_ACTIVE 状態の場合、RDMA コンポーネントは想定どおりに動作し、RDMA 機能は有効になっており、想定どおりに使用できます。 詳細については、「13.7. Testing Early InfiniBand RDMA operation」をご参照ください。
-v パラメーターを ibv_devinfo コマンドに渡して、ハードウェアバージョン、サポートされている最大メッセージサイズ、キューの数、メモリウィンドウサイズなど、各デバイスに関する詳細情報を照会することもできます。 前述の情報に基づいて、RDMA ネットワークのパフォーマンスを最適化および確認できます。
ibv_devinfo コマンドを実行して、ECS インスタンスでの eRDMA 構成の正確性を検証できます。
正しい eRDMA 構成: ERI は ECS インスタンスにバインドされており、eRDMA ドライバーはインスタンスに想定どおりにインストールされています。
説明インスタンスが複数の ERI をサポートし、バインドされている場合、インスタンス上の各 eRDMA デバイスのポートの
stateフィールドがPORT_ACTIVEの場合、ERI は想定どおりに機能します。ERI のポートの
stateフィールドがinvalid stateの場合、ERI は異常です。 この場合は、ERI が正しく構成されているかどうかを確認してください。 たとえば、ifconfigコマンドを実行して、ERI の IP アドレスを含むすべての構成が存在するかどうかを確認します。 詳細については、「セカンダリ ENI を構成する」をご参照ください。

eRDMA ドライバーが想定どおりにインストールされていない: 次の図は、eRDMA ドライバーがインスタンスに想定どおりにインストールされていないことを示しています。 この場合は、インスタンスに eRDMA ドライバーを再インストールする必要があります。 詳細については、この Topic の手順 2: ECS インスタンスに eRDMA ドライバーをインストールするセクションをご参照ください。

インスタンスに ERI がバインドされていない: eRDMA ドライバーはインスタンスにインストールされていますが、ERI はインスタンスにバインドされていません。 この場合は、ERI をインスタンスにバインドする必要があります。 詳細については、この Topic の手順 3: ERI を ECS インスタンスにバインドするセクションをご参照ください。

診断ツールを使用して、eRDMA の基本機能を確認することもできます。 詳細については、「eRDMA の監視と確認」Topic の診断ツールを使用して RDMA 関連の問題を確認し、eRDMA パフォーマンスを評価するセクションをご参照ください。
eRDMA ネットワークパフォーマンスをテストする
Perftest は、送信、受信、読み取り、書き込みなどのネットワーク操作を評価するためのさまざまなテストオプションを提供するパフォーマンステストツールキットです。 Perftest を使用すると、RDMA 操作のレイテンシや帯域幅などのパフォーマンスメトリックを測定できます。測定値に基づいて RDMA デバイスとネットワークのパフォーマンスを判断し、構成を最適化したり、潜在的な問題を解決したりできます。詳細については、「perftest」をご参照ください。
perftest に含まれるテストプログラム
Perftest には、テストプログラムのコレクションが含まれています。ビジネス要件に基づいてテストプログラムを使用して、ネットワーク帯域幅またはレイテンシをテストし、ネットワークパフォーマンスを評価できます。次の表に、テストプログラムを示します。
RDMA 操作 | 帯域幅テストプログラム | レイテンシテストプログラム |
送信 | ib_send_bw(送信帯域幅テスト) | ib_send_lat(送信レイテンシテスト) |
RDMA 読み取り | ib_read_bw(読み取り帯域幅テスト) | ib_read_lat(読み取りレイテンシテスト) |
RDMA 書き込み | ib_write_bw(書き込み帯域幅テスト) | ib_write_lat(書き込みレイテンシテスト) |
RDMA Atomic | ib_atomic_bw (アトミック帯域幅テスト) | ib_atomic_lat (アトミックレイテンシテスト) |
ネイティブ イーサネット | raw_ethernet_bw(Raw イーサネット帯域幅テスト) | raw_ethernet_lat(Raw イーサネットレイテンシテスト) |
perftest をインストールする
公式の perftest リポジトリから perftest パッケージをダウンロードして perftest をインストールするか、Yellowdog Updater, Modified(YUM)または Advanced Packaging Tool(APT)リポジトリを使用して perftest をインストールできます。
公式 perftest リポジトリ
perftest をインストールする ECS インスタンスのパブリック帯域幅を有効にします。詳細については、「パブリック帯域幅を有効にする」をご参照ください。
公式 perftest リポジトリから perftest パッケージをダウンロードし、perftest をインストールします。
YUM または APT リポジトリ
perftest の異なるバージョンは、異なる Linux ディストリビューションのリポジトリに含まれています。非互換性が発生する可能性があります。非互換性を防ぐために、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
perftest の使用例
perftest に含まれる各テストプログラムは、別々のコマンドとして実行できます。たとえば、ib_send_lat をコマンドとして実行して、送信レイテンシテストを実行します。
perftest を使用してパフォーマンステストを実行する場合、正しいテストパラメーターが重要です。パラメーターを適切に構成することにより、特定のテスト要件を満たし、より正確なテスト結果を得るために、perftest の動作をより正確に制御できます。次の表に、perftest の特定の重要なパラメーターを示します。
ネットワークレイテンシテストの実行方法については、「エンタープライズレベルインスタンスで eRDMA を構成する」トピックのeRDMA 書き込みレイテンシをテストするセクションをご参照ください。
ネットワーク帯域幅テストの実行方法については、「GPU アクセラレーションインスタンスで eRDMA を有効にする」をご参照ください。
参考資料
インスタンス上の Docker コンテナにアプリケーションをデプロイする場合、コンテナ内で eRDMA を使用して、大規模なデータ転送と高性能なネットワーク通信を実現できます。詳細については、「Docker コンテナで eRDMA を有効にする」をご参照ください。
Alibaba Cloud Container Service for Kubernetes (ACK) クラスタで eRDMA を使用して、クラスタ内のすべてのサービスとアプリケーションに低レイテンシと高スループットのネットワーク通信機能を提供できます。詳細については、「ACK クラスタで eRDMA を使用してコンテナネットワークを高速化する」をご参照ください。
eRDMA のリアルタイムステータスを監視および確認できます。詳細については、「eRDMA を監視および確認する」をご参照ください。
eRDMA を TCP アプリケーションに統合できます。詳細については、「eRDMA とアプリケーションの適応の概要」をご参照ください。