Elastic Remote Direct Memory Access (eRDMA) は、Alibaba Cloud が提供する、低レイテンシー、高スループット、高弾力性を備えたパフォーマンス専有型 RDMA ネットワークサービスです。eRDMA は、第 4 世代の X-Dragon システムアーキテクチャーと VPC ネットワーク上に構築された、ECS インスタンス向けの費用対効果の高い RDMA サービスです。eRDMA は RDMA エコシステムと完全に互換性があり、大規模なネットワークデプロイメントをサポートしています。このトピックでは、ACK クラスターで eRDMA を構成して使用する方法について説明します。
前提条件
-
バージョン 1.20 以降を実行するクラスターを作成済みであること。クラスターのスペックアップについては、「クラスターのスペックアップ」をご参照ください。
-
ノードプールに、Elastic Remote Direct Memory Access (eRDMA) をサポートするノードを作成済みであること。
ERI は、特定のインスタンスファミリーの ECS インスタンスにのみバインドできます。ERI をサポートするインスタンスファミリーについては、「インスタンスファミリーの概要」をご参照ください。
ステップ 1: ACK eRDMA Controller コンポーネントのインストール
ACK eRDMA Controller コンポーネントをインストールします。
-
ご利用のクラスターが Terway ネットワークプラグインを使用している場合、Terway コンポーネントが eRDMA 対応 ENI を変更するのを防ぐために、Terway のホワイトリストも構成する必要があります。詳細については、「ENI のホワイトリストの構成」をご参照ください。
-
ノードに複数のネットワークインターフェースコントローラー (NIC) がある場合、ACK eRDMA Controller は、アタッチされた eRDMA 対応 ENI のルートを、同じ CIDR ブロック内の NIC のルートよりも低い優先度で構成します。デフォルトのルート優先度は
200です。ACK eRDMA Controller をインストールした後に NIC を手動で構成するには、ルートの競合を避けるようにしてください。
クラスターリスト ページで、ご利用のクラスターの名前をクリックします。左側のナビゲーションウィンドウで、アドオン管理 をクリックします。
-
アドオン管理 ページで、ネットワーク タブをクリックし、ACK eRDMA Controller コンポーネントを見つけて、プロンプトに従って構成およびインストールします。
設定項目
説明
preferDriver ドライバータイプ
クラスターノードで使用する eRDMA ドライバータイプを選択します。有効な値:
-
default: デフォルトのドライバーモード。 -
compat: RoCE 互換のドライバーモード。 -
ofed: OFED ベースのドライバーモード。このモードは、GPU インスタンスタイプに適しています。
ドライバータイプの詳細については、「eRDMA の有効化」をご参照ください。
ポッドにノードのすべての eRDMA デバイスを割り当てるかどうか
有効な値:
-
True (選択済み): ノード上のすべての eRDMA デバイスを Pod に割り当てます。
-
False (クリア済み): NUMA トポロジーに基づいて、1 つの eRDMA デバイスを Pod に割り当てます。Pod とデバイスの固定 NUMA 割り当てを確実にするには、ノードで静的 CPU 管理ポリシーを有効にする必要があります。CPU ポリシーの構成方法については、「ノードプールの作成と管理」をご参照ください。
インストールが完了したら、左側のナビゲーションウィンドウで、ワークロード > ポッド を選択します。次に、名前空間を ack-erdma-controller に設定し、Pod のステータスを表示して、コンポーネントが正常に実行されていることを確認します。
-
ステップ 2: eRDMA を使用したコンテナネットワークの高速化
ACK eRDMA Controller コンポーネントをインストールした後、Pod で以下の構成を使用して eRDMA 高速化を有効にできます。
|
構成 |
方法 |
説明 |
|
eRDMA の有効化 |
アプリケーションの Pod のコンテナリソースで
|
アプリケーションの Pod で デバイスが割り当てられたら、Pod で表示します。
|
|
SMC-R を使用した透過的な高速化の有効化 |
eRDMA を有効にした後、Pod の
|
SMC-R を使用した透過的な高速化を有効にした後、eRDMA 高速化は、TCP 接続の両端が SMC-R で構成されている場合にのみ使用できます。 Pod に 説明
|
シナリオ 1: GPU インスタンスタイプ向けの NCCL 通信を eRDMA で高速化する
-
ステップ 1: ACK eRDMA Controller コンポーネントのインストール の手順に従ってコンポーネントをインストールします。NCCL 通信の場合は、
preferDriverをofedに設定します。 -
GPU ノードをノードプールに追加します。詳細については、「ノードプールの作成と管理」をご参照ください。
-
アプリケーションコンテナイメージを構築する際に、eRDMA 関連パッケージをインストールします。
-
クラスターで eRDMA を使用する GPU アプリケーションを実行します。この例では
nccl-testを使用します。 -
NCCL が eRDMA を使用して高速化されていることを確認します。
アプリケーションログをチェックして、NCCL が使用する通信タイプと NIC の数を確認できます。次の図に例を示します。

期待される出力は、
erdma_0とerdma_1の eRDMA デバイスが高速化に使用されていることを示しています。
シナリオ 2: SMC-R を使用したアプリケーションネットワークの透過的な高速化
-
ステップ 1: ACK eRDMA Controller コンポーネントのインストール の手順に従ってコンポーネントをインストールします。標準通信高速化の場合は、
preferDriverをdefaultに設定します。 -
次のサンプルコードを使用して、クラスターで SMC-R によって高速化されるアプリケーションを作成します。
-
Pod 内のネットワーク接続の高速化ステータスを確認します。
コンテナに
smc-toolsをインストールし、smcssコマンドを実行して、高速化効果を表示できます。/# smcss State UID Inode Local Address Peer Address Intf Mode ACTIVE 00000 0059964 172.17.192.73:47772 172.17.192.10:80 0000 SMCR期待される出力は、
Mode列にSMCRが表示されており、接続が eRDMA によって高速化されていることを示しています。