従来の Remote Direct Memory Access (RDMA) と比較して、Elastic RDMA (eRDMA) は、Redis ベースのキャッシュデータベース、Spark ベースのビッグデータ分析、高性能コンピューティング (HPC) における気象研究および予測モデル (WRF)、AI トレーニングなど、幅広いシナリオで使用できます。 eRDMA を使用してクラウドに HPC アプリケーションをデプロイし、低コストで高い弾力性を備えた高性能アプリケーションクラスタを構築できます。 また、VPC を eRDMA ネットワークに置き換えて、アプリケーションを高速化することもできます。
eRDMA とは
eRDMA は、Alibaba Cloud がクラウド向けに開発した Elastic Remote Direct Memory Access (RDMA) ネットワークです。 eRDMA は、基盤となるリンクとして仮想プライベートクラウド (VPC) を再利用し、Alibaba Cloud によって開発された輻輳制御 (CC) アルゴリズムを使用します。 eRDMA は、RDMA サポートに基づいて、高スループットと低レイテンシを実現します。 RDMA と比較して、eRDMA は数秒以内に大規模な RDMA ネットワーキングを実装します。 eRDMA は、従来の HPC アプリケーション、AI アプリケーション、および伝送制御プロトコル/インターネットプロトコル (TCP/IP) アプリケーションをサポートしています。
eRDMA を使用する理由
TCP/IP プロトコルスタックは、多くのアプリケーションが構築されている主流のネットワーク通信プロトコルを提供します。 データセンターに関連するビジネスの発展に伴い、低レイテンシや高スループットなど、ネットワークパフォーマンスに対する要求が高まっています。 TCP/IP は、高いコピーオーバーヘッド、プロトコルスタック間の処理、複雑な CC アルゴリズム、頻繁なコンテキストスイッチングなどの制限により、通信ネットワークのパフォーマンスを制限するボトルネックとなっています。
RDMA は、前述の課題の解決に役立ちます。 RDMA は、ゼロコピーやカーネルバイパスなどの機能を提供し、データのコピー時やコンテキストの頻繁な切り替え時のオーバーヘッドを防ぎます。 TCP/IP 通信と比較して、RDMA は低レイテンシ、高スループット、低 CPU 使用率を実現します。 ただし、RDMA は価格と O&M コストが高いため、使用シナリオが限られています。
Alibaba Cloud eRDMA は、多様なクラウド環境との包括的な互換性を持つように設計されています。 eRDMA は低レイテンシを提供し、幅広いアプリケーションがクラウド環境に適応してパフォーマンスを向上させるための要件を軽減します。
eRDMA のメリット
高パフォーマンス
RDMA は、カーネルスタックをバイパスして、ユーザーモードプログラムからホストチャネルアダプタ (HCA) にデータを転送し、ネットワーク伝送を行います。 これにより、CPU 負荷とレイテンシが大幅に削減されます。 eRDMA は、従来の RDMA インターフェースの利点を提供し、RDMA を VPC に適用します。 eRDMA は、RDMA がクラウドネットワークに提供する超低レイテンシを実現します。
説明HCA は、サーバーをネットワークに接続し、RDMA のサポートを提供するハードウェアネットワークインターフェースカード (NIC) です。
包括性
eRDMA は無料で有効化できます。 eRDMA を有効にするには、ECS インスタンスを購入する際に [Elastic RDMA インターフェース] オプションを選択するだけです。
大規模デプロイメント
従来の RDMA は、ロスレスネットワークに基づいています。 これにより、大規模デプロイメントのコストと難易度が高くなります。 eRDMA は、Alibaba Cloud によって開発された CC アルゴリズムを使用して、レイテンシやパケット損失など、VPC での伝送品質を制御します。 eRDMA は、ロッシーネットワークで優れたパフォーマンスを提供します。
スケーラビリティ
個別のハードウェア NIC を必要とする RDMA と比較して、eRDMA は神龍アーキテクチャに基づいてクラウド属性を持つ RDMA HCA カードを使用します。 eRDMA は、ECS を使用するときに動的にデバイスを追加でき、ホットマイグレーションをサポートしているため、柔軟なデプロイが可能です。
共有 VPC
eRDMA は、Elastic Network Interface (ENI) に依存し、ENI が属するネットワークを再利用します。 これにより、サービスネットワーキングを変更することなく、レガシーネットワークで RDMA 機能を有効化できます。
eRDMA 通信の実装
Elastic Compute Service (ECS) インスタンスの eRDMA を有効にする: Alibaba Cloud は、ECS インスタンスの eRDMA を迅速に構成し、VPC で RDMA 機能を有効にし、通信用の RDMA 接続を確立するための柔軟で便利な構成オプションを提供しています。 ECS インスタンスの eRDMA を有効にするには、インスタンスに対して eRDMA 対応のインスタンスタイプを選択し、インスタンスに eRDMA ドライバーをインストールし、Elastic RDMA インターフェース (ERI) をインスタンスにバインドする必要があります。 詳細については、「ECS インスタンスで eRDMA を有効にする」をご参照ください。
アプリケーションの eRDMA への迅速な適応: 低レイテンシ、高帯域幅、低 CPU 使用率の要件を満たすために、アプリケーションに RDMA 関連のロジックを実装および構成する場合は、Network Accelerator (NetACC) またはサーバー移行センター (SMC) を使用してアプリケーションを適応させることができます。 詳細については、「eRDMA とアプリケーションの適応の概要」をご参照ください。
eRDMA の基本機能と仕様
RDMA ネットワーク通信では、キューペア (QP)、完了キュー (CQ)、メモリ領域 (MR)、および verbs Opcode がコアコンポーネントです。 これらは RDMA 通信において重要な役割を果たし、RDMA ネットワーク通信の高効率と低レイテンシを保証します。
このセクションでは、eRDMA の仕様について説明します。 eRDMA を使用する場合、サービス仕様の要件が満たされていることを確認してください。 そうしないと、アプリケーションが期待どおりに動作しない可能性があります。
QP
QP は、RDMA における基本的な通信エンティティです。 送信キュー (SQ) と受信キュー (RQ) で構成されます。 QP は、送受信されるデータの管理に使用されます。
特徴: QP を使用すると、アプリケーションはデータを送受信できます。 これは RDMA 通信の中核です。 QP 状態機械は、初期化から終了まで、接続の状態を管理します。
eRDMA QP の仕様:
項目
仕様
説明
接続確立方法
RDMA_CM
RDMA_CM は、RDMA 接続の確立、維持、およびクローズを管理するために使用されます。 RDMA 接続の管理プロセスを簡素化し、アプリケーションが RDMA 機能を簡単に使用できるようにします。 Message Passing Interface (MPI)、Shared Memory Communications over Remote Direct Memory Access (SMC-R)、PolarDB SCC などのシナリオで一般的に使用されます。 詳細については、「Linux rdma_cm」を参照してください。
重要デフォルトでは、eRDMA をサポートする CPU ベースのインスタンスファミリは、標準モードで eRDMA カーネルモードドライバーをインストールします。 このモードでは、RDMA_CM 接続確立方法のみがサポートされます。
eRDMA は、TensorFlow、NVIDIA Collective Communications Library (NCCL)、better Remote Procedure Call (bRPC) などのアウトオブバンド (OOB) シナリオのアプリケーション向けに Compat モードを提供します。
重要デフォルトでは、eRDMA をサポートする GPU ベースのインスタンスファミリは、Compat モードで eRDMA カーネルモードドライバーをインストールします。 このモードでは、RDMA_CM および OOB 接続確立方法がサポートされます。
CLI を使用して、RDMA_CM と OOB 接続確立方法間の互換性を有効にすることができます。 詳細については、「eRDMA の接続確立モードを bRPC と互換性のあるように変更する」をご参照ください。
Compat モードでは、30608 ~ 30623 の範囲の追加の 16 個の TCP ポートが使用されます。
QP タイプ
RC
RC タイプの QP は、信頼性の高い接続サービスを提供します。 RC タイプの QP は、送信操作、RDMA 書き込み操作、RDMA 読み取り操作、およびアトミック操作をサポートします。
共有受信キュー (SRQ)
サポートされていません。
なし。
最大 QP 数 (max_qp_num)
このパラメーターは、インスタンスファミリによって異なります。 最大 131,071 個の QP を作成できます。
RDMA デバイスまたはネットワークインターフェースで作成できる QP の最大数。
このパラメーターは、RDMA ネットワークで作成できる同時接続の最大数を決定し、ネットワークの拡張性と同時処理能力に影響します。
最大送信作業リクエスト (WR) の深さ (max_send_wr)
8,192
QP 送信キューの作業リクエストの最大数。
このパラメーターは、QP が同時に開始できる送信操作の数を決定し、QP の送信パフォーマンスとスループットに影響します。
最大受信 WR の深さ (max_recv_wr)
32,768
QP 受信キューの作業リクエストの最大数。
このパラメーターは、QP が同時に処理できる受信操作の数を決定し、QP の受信パフォーマンスとスループットに影響します。
送信 WR の最大 SGE 数 (max_send_sge)
説明6
送信 WR のスキャッターギャザー要素 (SGE) の最大数。
このパラメーターは、QP が 1 回の送信操作で処理できるメモリセグメントの最大数を決定し、データ転送の効率と柔軟性に影響します。
受信 WR の最大 SGE 数 (max_recv_sge)
1
受信 WR の SGE の最大数。
このパラメーターは、QP が 1 回の受信操作で処理できるメモリセグメントの最大数を決定し、データ受信の効率と柔軟性に影響します。
CQ
CQ は、WR の完了をアプリケーションに通知するために使用されます。 送信や受信などの RDMA 操作が完了すると、関連する完了情報が CQ に格納されます。
特徴: CQ は、RDMA における非同期操作完了通知の鍵です。 CQ は、アプリケーションが非同期イベントを管理し、エラーを処理するのに役立ちます。 CQ は、どの操作が完了したかをアプリケーションに通知するメカニズムを提供し、これは非同期操作の管理に不可欠です。
eRDMA CQ の仕様:
項目
仕様
説明
CQ
CQ の数は、インスタンスタイプによって異なります。 CQ の最大数は、QP の数の 2 倍です。
なし。
CQ のベクター数 (vector_num)
CQ のベクター数は、インスタンスタイプによって異なります。 CQ のベクターの最大数は 31 です。 CPU の数は、QP の数に関連しています。
各ベクターは、ハードウェア割り込みに対応しています。 実際の使用では、各 CPU に最大 1 つのベクターを構成して、通信要件を満たすことができます。
各ベクターは、eRDMA の完了イベントキュー (CEQ) に関連付けられています。
最大 CEQ の深さ
4,096
バージョン 0.2.34 では、最大 CEQ の深さは 256 です。
イベントモードでは、各ベクターに 4,096 を超える CQ をバインドしないことをお勧めします。 そうしないと、CEQ オーバーフローが発生する可能性があります。
最大 CQ の深さ
1,048,576
なし。
RDMA メモリ管理
MR とメモリウィンドウ (MW) は、RDMA におけるメモリ管理の重要な概念です。
MR: RDMA によってアクセスできるメモリ領域を指定します。 MR を登録すると、アプリケーションは RDMA ハードウェアにこのメモリ領域への直接アクセスを許可できます。
特徴: MR を使用すると、RDMA はリモートホストのメモリに対して読み取りや書き込みなどの操作を直接実行できます。 これは、RDMA のゼロコピー機能の基礎です。
eRDMA MR の仕様:
項目
仕様
MR
MR の数は、インスタンスタイプによって異なります。 MR の最大数は、QP の数の 2 倍です。
最大 MR サイズ
MR のサイズは、基盤となるハードウェアによって異なります。 サポートされている最小 MR サイズは 2 GB で、サポートされている最大 MR サイズは 64 GB です。
MW: Alibaba Cloud は MW をサポートしていません。
verbs インターフェース
verbs は RDMA プログラミングの基盤であり、RDMA デバイスの動作を制御するための一連のインターフェースを定義します。 Opcode は、これらのインターフェースで使用されるコードであり、特定の種類の操作を指定します。
特徴: Opcode は、送信 (SEND)、受信 (RECEIVE)、読み取り (READ)、書き込み (WRITE) などの RDMA 操作のタイプを定義します。 Opcode は、RDMA ハードウェアに実行する特定の命令を提供し、アプリケーションが RDMA ハードウェアと直接対話して効率的なデータ転送を行うことを可能にします。
Opcode のサポート:
Opcode
操作がサポートされているかどうか
RDMA 書き込み
サポートされています
イミディエイト付き RDMA 書き込み
サポートされています
RDMA 読み取り
サポートされています
送信
サポートされています
無効化付き送信
サポートされています
イミディエイト付き送信
サポートされています
要求イベント付き送信
サポートされています
ローカル無効化
サポートされています
アトミック操作
サポートされています