Elastic Remote Direct Memory Access (eRDMA) をサポートするインスタンスタイプのelastic Compute Service (ECS) インスタンスを作成し、elastic RDMAインターフェイス (ERI) をインスタンスにバインドしてeRDMAを使用し、RDMAの大規模なネットワーク機能と低レイテンシの恩恵を受けることができます。 ERIは、ERI機能が有効になっているelastic network Interface (ENI) です。
ECSインスタンスでeRDMAを有効にする
eRDMAをサポートするインスタンスタイプの選択
eRDMAをサポートするエンタープライズレベルのCPUベースのインスタンスタイプについては、「エンタープライズレベルのインスタンスでのeRDMAの設定」をご参照ください。
ECSインスタンスへのERIのバインド
ECSインスタンスを作成するとき、またはインスタンスの作成後にERIをECSインスタンスにバインドするときに、プライマリENIのERI機能を有効にできます。
ECSインスタンスの作成時にENIのERI機能を有効にする
詳細については、「ERIs」トピックの「ECSインスタンスを作成するときにERIを作成する」セクションをご参照ください。
ERIの作成とECSインスタンスへのバインド
ERIの作成方法については、「ERIs」トピックの「ERIを個別に作成する」セクションを参照してください。
ERIをECSインスタンスにバインドする方法については、「セカンダリENIのバインド」をご参照ください。
ECSインスタンスにバインドされているENIのERI機能の有効化
ECSインスタンスにバインドされているENIのERI機能を有効にするには、ENIの属性を変更します。 詳細については、「ERIs」トピックの「既存のENIのERI機能のステータスの変更」セクションをご参照ください。
API操作を呼び出してERIを作成し、ERIをECSインスタンスにバインドします
以下の手順を実行します。
ERIを作成するためのAPI操作を呼び出します。
CreateNetworkInterface操作を呼び出してENIを作成し、NetworkInterfaceTrafficModeパラメーターをHighPerformanceに設定してENIのERI機能を有効にします。
呼び出しが成功したら、
NetworkInterfaceId
パラメーターの戻り値 (ERI ID) を記録します。NetworkInterfaceIdパラメーターを前の手順で記録された戻り値に設定し、InstanceIdパラメーターをECSインスタンスのIDに設定し、AttachNetworkInterface操作を呼び出してERIをECSインスタンスにバインドします。
重要ECSインスタンスのインスタンスタイプがインスタンスごとに複数のERIをサポートしている場合、インスタンスに複数のERIをバインドするときに、NetworkCardIndexパラメーターをERIごとに異なる値に設定することを推奨します。 これにより、ERIが異なるチャネルにバインドされ、インスタンスの最大ネットワーク帯域幅が実現されます。 詳細については、「AttachNetworkInterface」トピックの「リクエストパラメーター」セクションをご参照ください。
ECSインスタンスへのeRDMAドライバーのインストール
eRDMAドライバは、Alibaba Cloudによって社内で開発されています。 Alibaba Cloudは、eRDMAドライバーのテクニカルサポートを提供しています。
eRDMAドライバのインストールプロセスは、完了するまでに一定の時間を必要とする。
eRDMA driverインストールパッケージ
eRDMAドライバのインストール
eRDMAをサポートするECSインスタンスを作成するときに [eRDMAドライバーの自動インストール] オプションを選択するか、またはインスタンスの作成後にeRDMAドライバーを手動でインストールすることで、eRDMAドライバーを自動的にインストールできます。
エンタープライズレベルのCPUベースのインスタンスにeRDMAドライバーをインストールする方法については、「エンタープライズレベルのインスタンスにeRDMAを設定する」をご参照ください。
eRDMAカーネルモードドライバーのバージョンの確認
eRDMAドライバーのインストール後、
eadm ver
コマンドを実行して、eRDMAカーネルモードドライバーのバージョンを確認できます。 最新のeRDMAドライババージョン1.4.0は、eRDMAカーネルモードドライババージョン0.2.37に対応しています。
eRDMA設定の正しさの確認
ibv_devinfo
コマンドは、eRDMAが期待どおりに機能するかどうかを確認するのに役立ちます。 ibv_devinfo
コマンドを実行して、ハードウェア属性、ポートステータス、デバイスのサポートされている機能など、デバイスに関する情報を取得できます。 少なくとも1つのポートがPORT_ACTIVE
状態の場合、RDMAコンポーネントは期待どおりに実行され、RDMA機能は有効になり、期待どおりに使用できます。 詳細については、「13.7」をご参照ください。 初期のInfiniBand RDMA操作のテスト。
-v
パラメーターをibv_devinfo
コマンドに渡して、ハードウェアバージョン、サポートされている最大メッセージサイズ、キュー数、メモリウィンドウのサイズなど、各デバイスに関する詳細情報を照会することもできます。 上記の情報に基づいて、RDMAネットワークのパフォーマンスを最適化および確認できます。
ibv_devinfo
コマンドを実行して、ECSインスタンスのeRDMA設定の正確性を確認できます。
適切なeRDMA設定: ERIはECSインスタンスにバインドされ、eRDMAドライバーは期待どおりにインスタンスにインストールされます。
説明インスタンスが複数のERIをサポートしており、バインドされている場合、インスタンス上の各eRDMAデバイスのポートの
state
フィールドがPORT_ACTIVE
の場合、ERIは期待どおりに機能します。ERIのポートに対する
状態
フィールドが無効状態
である場合、ERIは異常である。 この場合、ERIが適切に設定されているかどうかを確認します。 たとえば、ifconfig
コマンドを実行して、IPアドレスを含むERIのすべての設定が存在するかどうかを確認します。 詳細については、「セカンダリENIの設定」をご参照ください。
インスタンスにERIがバインドされていません: eRDMAドライバはインスタンスにインストールされていますが、ERIはインスタンスにバインドされていません。 この場合、ERIsをインスタンスにバインドする必要があります。 詳細については、このトピックの「ECSインスタンスへのERIのバインド」セクションをご参照ください。
eRDMAドライバーが想定どおりにインストールされていません: ERIはインスタンスにバインドされていますが、eRDMAドライバーは想定どおりにインスタンスにインストールされていません。 この場合、インスタンスにeRDMAドライバを再インストールする必要があります。 詳細については、このトピックの「ECSインスタンスへのeRDMAドライバーのインストール」をご参照ください。
診断ツールを使用して、eRDMAの基本機能を確認することもできます。 詳細については、「eRDMAの監視と確認」トピックの「診断ツールを使用して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アトミック | ib_atomic_bw (アトミック帯域幅テスト) | ib_atomic_lat (原子レイテンシテスト) |
ネイティブイーサネット | raw_ethernet_bw (生のイーサネット帯域幅テスト) | raw_ethernet_lat (生のイーサネットレイテンシテスト) |
perftestのインストール
perftestパッケージを公式のperftestリポジトリからダウンロードしてperftestをインストールするか、Yellowdog Updater、Modified (YUM) またはAdvanced Packaging Tool (APT) リポジトリを使用してperftestをインストールすることができます。
公式perftestリポジトリ
perftestをインストールするECSインスタンスのパブリック帯域幅を有効にします。 詳細については、「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 -y
Ubuntu
sudo apt install perftest -y
perftestの使用例
perftestに含まれる各テストプログラムを個別のコマンドとして実行できます。 たとえば、送信レイテンシテストを実行するコマンドとしてib_send_lat
を実行します。
perftest
を使用してパフォーマンステストを実行する場合は、正しいテストパラメーターが重要です。 パラメーターを適切に設定することで、perftest
の動作をより正確に制御して、特定のテスト要件を満たし、より正確なテスト結果を得ることができます。 次の表に、perftest
の特定の重要なパラメーターを示します。
ネットワークレイテンシテストの実行方法については、「エンタープライズレベルのインスタンスにeRDMAを設定する」の「eRDMA書き込みレイテンシのテスト」をご参照ください。
関連ドキュメント
インスタンスのDockerコンテナにアプリケーションをデプロイする場合、コンテナでeRDMAを使用して、大規模なデータ転送と高性能なネットワーク通信を実現できます。 詳細については、「DockerコンテナーでのeRDMAの使用」をご参照ください。
Alibaba Cloud Container Service for Kubernetes (ACK) クラスターでeRDMAを使用すると、クラスター内のすべてのサービスとアプリケーションに低遅延で高スループットのネットワーク通信機能を提供できます。 詳細については、「eRDMAを使用したACKクラスターでのコンテナーネットワークの高速化」をご参照ください。
eRDMAのリアルタイムの作業ステータスを監視および確認できます。 詳細については、「eRDMAの監視と確認」をご参照ください。
eRDMAをTCPアプリケーションに統合できます。 詳細については、「eRDMAとアプリケーションの適応の概要」をご参照ください。