Elastic Remote Direct Memory Access (eRDMA) は、Alibaba Cloudが提供する低レイテンシ、高スループット、高性能、高度にスケーラブルなRDMAネットワークサービスです。 eRDMAは、第4世代のSHENLONGアーキテクチャとVirtual Private Cloud (VPC) に基づいて開発されています。 eRDMAはRDMAエコシステムと完全に互換性があり、Elastic Compute Service (ECS) インスタンス用の超大規模な包括的ネットワークを提供します。 このトピックでは、Container Service for Kubernetes (ACK) クラスターでeRDMAを設定および使用する方法について説明します。
前提条件
ACKクラスターが作成されます。 詳細については、「ACK管理クラスターの作成」をご参照ください。
ステップ1: ACK eRDMAコントローラのインストール
ACK eRDMAコントローラーをインストールするには、次の手順を実行します。
ACKクラスターがTerwayを使用している場合、TerwayがeRDMA ENIを変更した場合に備えて、Terwayにelastic network interface (ENI) フィルターを設定します。 詳細については、「ENIフィルターの設定」をご参照ください。
ノードに複数のENIがある場合、ACK eRDMA Controllerは、デフォルトのルーティング優先度
200
を使用して、同じCIDRブロック内のENIのルートよりも優先度が低いeRDMAの追加ENIのルートを構成します。 ACK eRDMA Controllerのインストール後にENIを手動で設定する必要がある場合は、ルーティングの競合を回避してください。
[クラスター] ページで、管理するクラスターの名前をクリックします。 左側のナビゲーションウィンドウで、 を選択します。
[アドオン] ページで、[ネットワーキング] タブをクリックし、[ACK eRDMAコントローラー] を見つけ、ページの指示に従ってコンポーネントの設定とインストールを行います。
パラメーター
説明
preferDriverドライバータイプ
クラスターノードで使用されるeRDMAドライバーのタイプを選択します。 有効な値:
default
: デフォルトのドライバーモード。compat
: RDMA over Converged Ethernet (RoCE) と互換性のあるドライバーモード。ofed
: GPUモデルに適用可能なofedベースのドライバーモード。
ドライバーの種類の詳細については、「eRDMAの使用」をご参照ください。
ノードのすべてのeRDMAデバイスをポッドに割り当てるかどうかを指定します
有効な値:
True: このチェックボックスをオンにすると、ノード上のすべてのeRDMAデバイスがポッドに割り当てられます。
False: このチェックボックスをオンにしない場合、ポッドには非統一メモリアクセス (NUMA) トポロジに基づいてeRDMAデバイスが割り当てられます。 ノードの静的CPUポリシーを有効にして、NUMAをポッドとデバイスに確実に割り当てる必要があります。 CPUポリシーの設定方法の詳細については、「ノードプールの作成」をご参照ください。
左側のナビゲーションウィンドウで、[ワークロード] > [ポッド] を選択します。 [ポッド] ページで、ack-erdma-controller名前空間を選択してポッドのステータスを表示し、コンポーネントが期待どおりに実行されるようにします。
ステップ2: eRDMAを使用してコンテナーネットワークを高速化
ACK eRDMA Controllerをインストールした後、次の構成を使用してポッドのeRDMAを有効にできます。
設定 | 設定方法 | 説明 |
eRDMAの有効化 | ポッドのコンテナーリソースで
| ポッド内の RDMAデバイスを割り当てた後、ポッド内の割り当てられたデバイスを表示できます。
|
RDMAによる共有メモリ通信の有効化 (SMC-R) | eRDMAを有効にした後、
| SMC-Rを有効にすると、TCP接続の両端でSMC-Rを設定した場合にのみ、eRDMAアクセラレーションを使用できます。 ポッドに 説明
|
シナリオ1: GPUモデルはeRDMAを使用してNCCLを高速化
手順1: ACK eRDMAコントローラーのインストールに基づいてACK eRDMAコントローラーをインストールする場合、
preferDriver
パラメーターをofed
に設定して、Nvidia Collective Communication Library (NCCL) を高速化します。GPU高速化ノードをノードプールに追加します。 詳細については、「ノードプールの作成」をご参照ください。
アプリケーションコンテナイメージをビルドするときに、eRDMA関連のパッケージをインストールします。
クラスターでeRDMAを使用するGPUアプリケーションを実行します。
nccl-test
を例として使用します。eRDMAがNCCLによって使用されていることを確認します。
アプリケーションログでは、NCCLが使用する通信タイプとネットワークインターフェイスの数を確認できます。 例:
コマンド出力は、
erdma_0
およびerdma_1
eRDMAデバイスが高速化されていることを示します。
シナリオ2: SMC-Rを使用したアプリケーションネットワークの高速化
手順1: ACK eRDMAコントローラーのインストールに基づいてACK eRDMAコントローラーをインストールする場合は、
preferDriver
パラメーターをdefault
に設定して、通常の通信を高速化します。次のサンプルコードに基づいて、クラスター内のSMC-Rを使用して高速化できるアプリケーションを作成します。
ポッド内のネットワーク接続のステータスを確認します。
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
コマンド出力では、
[モード]
列にSMCR
が表示されます。これは、接続によってeRDMAが使用されていることを示します。