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 を構成および使用する方法について説明します。
前提条件
Kubernetes 1.20 以降を実行する ACK クラスタが準備されていること。アップグレードするには、「クラスタをアップグレードする」をご参照ください。
elastic Remote Direct Memory Access (eRDMA) をサポートするノードが作成され、ノードプールに追加されていること。
ERI は、特定のインスタンスファミリの ECS インスタンスにのみバインドできます。 ERI をサポートするインスタンスファミリの詳細については、「インスタンスファミリの概要」をご参照ください。
手順 1: ACK eRDMA Controller をインストールする
次の手順を実行して、ACK eRDMA Controller をインストールできます。
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 Controller を見つけ、ページの指示に従ってコンポーネントを構成およびインストールします。
パラメーター
説明
[preferdriver] [ドライバの種類]
クラスタノードで使用される eRDMA ドライバの種類を選択します。有効な値:
default: デフォルトのドライバモード。compat: RDMA over Converged Ethernet (RoCE) と互換性のあるドライバモード。ofed: ofed ベースのドライバモード。GPU モデルに適用できます。
ドライバの種類の詳細については、「eRDMA を使用する」をご参照ください。
[ノードのすべての Erdma デバイスをポッドに割り当てるかどうかを指定します]
有効な値:
True: このチェックボックスをオンにすると、ノード上のすべての eRDMA デバイスがポッドに割り当てられます。
False: このチェックボックスをオンにしないと、非均一メモリアクセス (NUMA) トポロジに基づいて eRDMA デバイスがポッドに割り当てられます。 NUMA をポッドとデバイスに割り当てることができるように、ノードの静的 CPU ポリシーを有効にする必要があります。 CPU ポリシーの構成方法の詳細については、「ノードプールの作成と管理」をご参照ください。
左側のナビゲーションウィンドウで、[ワークロード] > [ポッド] を選択します。 [ポッド] ページで、ack-erdma-controller 名前空間を選択して、ポッドのステータスを表示し、コンポーネントが想定どおりに実行されていることを確認します。
手順 2: eRDMA を使用してコンテナネットワークを高速化する
ACK eRDMA Controller をインストールした後、次の構成を使用して、ポッドの eRDMA を有効にできます。
構成 | 構成方法 | 説明 |
eRDMA を有効にする | ポッドのコンテナリソースで | ポッドで RDMA デバイスを割り当てた後、ポッドに割り当てられたデバイスを表示できます。 |
Shared Memory Communication over RDMA (SMC-R) を有効にする | eRDMA を有効にした後、 | SMC-R を有効にした後、TCP 接続の両端で SMC-R を構成した場合にのみ、eRDMA アクセラレーションを使用できます。 ポッドに 説明
|
シナリオ 1: GPU モデルは eRDMA を使用して NCCL を高速化する
手順 1: ACK eRDMA Controller をインストールする に基づいて ACK eRDMA Controller をインストールする際に、
preferDriverパラメーターをofedに設定して、Nvidia Collective Communication Library (NCCL) を高速化します。GPU アクセラレーションノードをノードプールに追加します。詳細については、「ノードプールの作成と管理」をご参照ください。
アプリケーションコンテナイメージをビルドする際に、eRDMA 関連のパッケージをインストールします。
クラスタで eRDMA を使用する GPU アプリケーションを実行します。
nccl-testを例として使用します。NCCL によって eRDMA が使用されていることを確認します。
アプリケーションログで、NCCL によって使用される通信の種類とネットワークインターフェースの数を確認できます。例:

コマンド出力は、
erdma_0およびerdma_1eRDMA デバイスが高速化されていることを示しています。
シナリオ 2: SMC-R を使用してアプリケーションネットワークを高速化する
手順 1: ACK eRDMA Controller をインストールする に基づいて ACK eRDMA Controller をインストールする際に、
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コマンド出力では、
Mode列にSMCRが表示されます。これは、接続で eRDMA が使用されていることを示します。