AI の力を解き放つ

100 万トークンが無料

88% 割引

NaNDayNaN:NaN:NaN
今すぐアクティブ化
このページは機械翻訳によるものです。内容の正確さは保証しておりません。 人力翻訳を依頼する

ACK クラスタで eRDMA を使用してコンテナネットワークを高速化する

更新日時2025-03-18 17:56

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 を構成および使用する方法について説明します。

前提条件

手順 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 を手動で構成する必要がある場合は、ルーティングの競合を回避してください。

  1. [クラスタ] ページで、管理するクラスタを見つけ、その名前をクリックします。左側のナビゲーションウィンドウで、[操作] > [アドオン] を選択します。

  2. [アドオン] ページで、[ネットワーク] タブをクリックし、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 を有効にする

ポッドのコンテナリソースで aliyun/erdma のリソース使用量を指定します。

spec:
  containers:
  - name: erdma-container
    resources:
      limits:
        aliyun/erdma: 1

ポッドで aliyun/erdma のリソースを指定することにより、eRDMA デバイスをポッドに割り当てます。

RDMA デバイスを割り当てた後、ポッドに割り当てられたデバイスを表示できます。

/# ls /dev/infiniband/
rdma_cm  uverbs0

Shared Memory Communication over RDMA (SMC-R) を有効にする

eRDMA を有効にした後、network.alibabacloud.com/erdma-smcr: "true" annotation を指定して、ポッドの TCP 接続を高速化します。

metadata:
  annotations:
    network.alibabacloud.com/erdma-smcr: "true"

SMC-R を有効にした後、TCP 接続の両端で SMC-R を構成した場合にのみ、eRDMA アクセラレーションを使用できます。

ポッドに smc-tools をインストールし、smcss コマンドを実行して、接続のアクセラレーションステータスを確認できます。

説明
  • この機能は、Alibaba Cloud Linux 3 でのみサポートされています。カーネルバージョンは 5.10.134-17 以降である必要があります。詳細については、「Alibaba Cloud Linux 3 のリリースノート」をご参照ください。

  • eRDMA ドライバの種類として ofed または compat が選択されている場合、この機能はサポートされていません。

  • Alibaba Cloud ERI eRDMA デバイスと SMC は IPv6 アドレスをサポートしていません。アプリケーションが IPv6 を使用している場合、SMC は TCP にフォールバックします。

シナリオ 1: GPU モデルは eRDMA を使用して NCCL を高速化する

  1. 手順 1: ACK eRDMA Controller をインストールする に基づいて ACK eRDMA Controller をインストールする際に、preferDriver パラメーターを ofed に設定して、Nvidia Collective Communication Library (NCCL) を高速化します。

  2. GPU アクセラレーションノードをノードプールに追加します。詳細については、「ノードプールの作成と管理」をご参照ください。

  3. アプリケーションコンテナイメージをビルドする際に、eRDMA 関連のパッケージをインストールします。

    インストールされている eRDMA 関連のパッケージを表示する

    # Debian または Ubuntu: sources.list の OS 名とバージョンが使用しているものと同じであることを確認してください。
    wget -qO - https://mirrors.aliyun.com/erdma/GPGKEY | apt-key add - && echo "deb [ arch=amd64 ] https://mirrors.aliyun.com/erdma/apt/{OS|ubuntu} {Version|focal}/erdma main" | tee /etc/apt/sources.list.d/erdma.list && apt update && apt install -y libibverbs1 ibverbs-providers ibverbs-utils librdmacm1
    
    # Alibaba Cloud Linux または Red Hat Enterprise Linux (RHEL) の場合、yum.repos.d ディレクトリに OS リポジトリアドレスを指定します。
    cat > /etc/yum.repos.d/erdma.repo <<EOF
    [erdma]
    name = ERDMA Repository
    baseurl = http://mirrors.aliyun.com/erdma/yum/redhat/7/erdma/x86_64/
    gpgcheck = 0
    enabled = 1
    EOF
    yum install --disablerepo=*  --enablerepo erdma -y libibverbs ibverbs-providers ibverbs-utils librdmacm
  4. クラスタで eRDMA を使用する GPU アプリケーションを実行します。 nccl-test を例として使用します。

    eRDMA を使用する GPU アプリケーションのサンプルテンプレートを表示する

    apiVersion: apps/v1
    kind: StatefulSet
    metadata:
      name: nccltest
    spec:
      selector:
        matchLabels:
          app: nccltest
      serviceName: "nccltest"
      replicas: 2
      template:
        metadata:
          labels:
            app: nccltest
        spec:
          hostNetwork: true 
          dnsPolicy: ClusterFirstWithHostNet
          containers:
          - env:
            - name: NCCL_SOCKET_IFNAME
              value: "eth0"
            - name: NCCL_DEBUG
              value: "INFO"
            - name: NCCL_IB_GID_INDEX
              value: "1"
            image: <nccl-test-image-with-erdma>
            imagePullPolicy: Always
            name: nccltest
            securityContext:
              privileged: true
            resources:
              limits:
                nvidia.com/gpu: "8"
                aliyun/erdma: "1"
              requests:
                nvidia.com/gpu: "8"
                aliyun/erdma: "1"
  5. NCCL によって eRDMA が使用されていることを確認します。

    アプリケーションログで、NCCL によって使用される通信の種類とネットワークインターフェースの数を確認できます。例:

    image

    コマンド出力は、erdma_0 および erdma_1 eRDMA デバイスが高速化されていることを示しています。

シナリオ 2: SMC-R を使用してアプリケーションネットワークを高速化する

  1. 手順 1: ACK eRDMA Controller をインストールする に基づいて ACK eRDMA Controller をインストールする際に、preferDriver パラメーターを default に設定して、通常の通信を高速化します。

  2. 次のサンプルコードに基づいて、クラスタで SMC-R を使用して高速化できるアプリケーションを作成します。

    SMC-R を使用するアプリケーションのサンプルテンプレートを表示する

    apiVersion: apps/v1
    kind: Deployment
    metadata:
      labels:
        app: app-with-erdma
      name: app-with-erdma
    spec:
      replicas: 2
      selector:
        matchLabels:
          app: app-with-erdma
      template:
        metadata:
          labels:
            app: app-with-erdma
          annotations:
            network.alibabacloud.com/erdma-smcr: "true"
        spec:
          containers:
          - image: <application image>
            imagePullPolicy: Always
            name: app-with-erdma
            resources:
              limits:
                aliyun/erdma: 1
  3. ポッドのネットワーク接続のステータスを確認します。

    コンテナに 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 が使用されていることを示します。

  • 目次 (1, M)
  • 前提条件
  • 手順 1: ACK eRDMA Controller をインストールする
  • 手順 2: eRDMA を使用してコンテナネットワークを高速化する
  • シナリオ 1: GPU モデルは eRDMA を使用して NCCL を高速化する
  • シナリオ 2: SMC-R を使用してアプリケーションネットワークを高速化する
フィードバック
phone お問い合わせ

Chat now with Alibaba Cloud Customer Service to assist you in finding the right products and services to meet your needs.

alicare alicarealicarealicare