すべてのプロダクト
Search
ドキュメントセンター

Elastic Compute Service:エンタープライズレベル インスタンスで eRDMA を有効にする

最終更新日:Jul 03, 2025

特定のエンタープライズレベル Elastic Compute Service (ECS) インスタンスは、ネットワーク アーキテクチャを変更することなく、低レイテンシ、高スループット、高パフォーマンス、および拡張性の高い RDMA ネットワーク サービスを提供するために、Elastic Remote Direct Memory Access (eRDMA) をサポートしています。このトピックでは、エンタープライズレベルの ECS インスタンスに eRDMA をデプロイする方法について説明します。

制限事項

項目

説明

インスタンス ファミリー

次のインスタンス ファミリーは、eRDMA をサポートしています。

インスタンス ファミリーをクリックして詳細を表示

イメージ

  • Alibaba Cloud Linux 3 (推奨)

  • Alibaba Cloud Linux 2 for x86

  • CentOS 7.9 for x86

  • Ubuntu 18.04/20.04/22.04/24.04

  • Anolis OS 8.4 ANCK for Arm および Anolis OS 8.6 ANCK for Arm

説明

選択可能なイメージは、インスタンス タイプによって異なります。選択可能なイメージは、eRDMA をサポートするインスタンス タイプを選択すると、インスタンス購入ページに表示されます。

eRDMA デバイスの数

特定のインスタンス タイプの ECS インスタンスにバインドできる ERI の最大数をクエリするには、DescribeInstanceTypes オペレーションを呼び出し、レスポンスの EriQuantity パラメーターの値を確認します。値が 0 の場合は、そのインスタンス タイプの ECS インスタンスに ERI をバインドできません。

ネットワーク

  • Elastic RDMA インターフェース (ERI) に IPv6 アドレスを割り当てることはできません。

  • 2 つの ECS インスタンスが eRDMA 経由で通信する場合、通信パスは、Server Load Balancer (SLB) インスタンスなどのネットワーク要素にまたがることはできません。

  • eRDMA 対応 GPU アクセラレーション インスタンスは、eRDMA の動作パターンが異なるため、eRDMA 対応エンタープライズレベル インスタンスと直接通信できません。この問題を解決するには、GPU アクセラレーション インスタンスで eRDMA を構成するのと同じ方法で、エンタープライズレベル インスタンスで eRDMA を構成します。構成には、eRDMA および OpenFabrics Enterprise Distribution (OFED) ドライバーのインストール、およびエンタープライズレベル インスタンスへの ERI のバインドが含まれます。詳細については、「GPU アクセラレーション インスタンスで eRDMA を有効にする」をご参照ください。

エンタープライズレベルの ECS インスタンスで eRDMA を構成する

ECS インスタンスの作成時に eRDMA を構成する

重要
  • 選択したオペレーティングシステム バージョンで [ eRDMA ドライバーの自動インストール ] オプションを選択できない場合、または eRDMA ドライバーが自動的にインストールされない場合は、インスタンスの作成後に手動またはスクリプトを使用してドライバーをインストールできます。詳細については、このトピックの「既存のインスタンスで eRDMA を構成する」セクションをご参照ください。

  • ECS インスタンスを起動した後、システムが eRDMA ドライバーをインストールするまでしばらくお待ちください。

  1. ECS インスタンス購入ページに移動します

  2. ERI をサポートするエンタープライズレベルの ECS インスタンスを作成します。ECS インスタンスを作成する際は、次のパラメーターまたはオプションに注意してください。ECS インスタンス購入ページのその他のパラメーターについては、「[カスタム起動] タブでインスタンスを作成する」をご参照ください。

    • [インスタンスとイメージ] : eRDMA をサポートするインスタンス タイプを選択し、eRDMA ドライバーをインストールします。

      • [インスタンス] : 詳細については、このトピックの「制限事項」セクションをご参照ください。

      • [イメージ] : [パブリックイメージ] タブをクリックし、パブリックイメージを選択してから、[eRDMA ドライバーの自動インストール] を選択します。インスタンスが起動すると、システムは自動的に eRDMA ドライバーをインストールします。

        eRDMA

    • [ENI] : [プライマリ ENI] の右側にある [ eRDMA インターフェース ] オプションを選択して、ERI を ECS インスタンスにバインドします。

      image

      説明

      エンタープライズレベル インスタンスを作成する場合、プライマリ Elastic Network Interface (ENI) に対してのみ ERI 機能を有効にできます。セカンダリ ENI の ERI 機能は、ECS コンソールまたは API オペレーションの呼び出しによって有効にできます。詳細については、「ERI」をご参照ください。

既存の ECS インスタンスで eRDMA を構成する

  1. インスタンス タイプをeRDMA をサポートするインスタンス タイプのリストと照合します。

    インスタンス タイプが eRDMA をサポートしていることを確認します。

  2. インスタンスに対して eRDMA が想定どおりに構成されているかどうかを確認します。

    • インスタンスに対して eRDMA が想定どおりに構成されているかどうかを確認する方法については、「eRDMA を使用する」トピックの「eRDMA 構成の正確性を検証する」セクションをご参照ください。

    • インスタンスに対して eRDMA が想定どおりに構成されていない場合は、次の手順を実行して、eRDMA ドライバーをインストールし、ERI を ECS インスタンスにバインドできます。

  3. インスタンスに eRDMA ドライバーをインストールします

    インスタンスの作成時に [ ERDMA ドライバーの自動インストール ] を選択しないと、eRDMA ドライバーはインスタンスに自動的にインストールされません。実際のシナリオに基づいて、手動またはスクリプトを使用して eRDMA ドライバーをインストールします。

    • スクリプトを使用して eRDMA ドライバーをインストールすると、最新の安定した eRDMA ドライバー バージョンのインストール パッケージが自動的にダウンロードされます。

    • eRDMA ドライバーを手動でインストールする場合は、特定の eRDMA ドライバー バージョンのパッケージをダウンロードできます。

    スクリプトを実行して eRDMA ドライバーをインストールする

    1. 最新かつ安定した eRDMA ドライバー パッケージをダウンロードします。

      curl -O http://mirrors.cloud.aliyuncs.com/erdma/env_setup.sh
    2. eRDMA ドライバー パッケージをインストールします。

      sudo /bin/bash env_setup.sh > /var/log/erdma_install.log 2>&1

      スクリプトは、eRDMA ドライバーに必要な依存関係、次に eRDMA ドライバーを自動的にインストールします。スクリプトの実行が完了するまで待ちます。

      説明

      スクリプトを使用して eRDMA ドライバーをインストールできない場合は、/var/log/erdma_install.log ファイルのログを確認してください。

    eRDMA ドライバーを手動でインストールする

    1. 前提条件パッケージを更新します

      • Alibaba Cloud Linux 3、CentOS、および Anolis OS の場合は、次のコマンドを実行します。

        sudo yum update -y
      • Ubuntu の場合は、この手順をスキップします。

    2. 次のコマンドを順番に実行して、最新のカーネル パッケージ バージョンとオペレーティングシステム カーネル バージョンをクエリします

      rpm -qa | grep kernel  // 最新のカーネル パッケージ バージョンをクエリします。
      uname -r  // オペレーティングシステム カーネル バージョンをクエリします。

      次の図に示すコマンド出力は、カーネル パッケージ バージョンがオペレーティングシステム カーネル バージョンと同じであることを示しています。この場合、追加の操作を実行する必要はありません。バージョンが異なる場合は、ECS インスタンスを再起動してバージョンを同じにします。

      image.png

    3. 依存関係パッケージをインストールします

      • ECS インスタンスが x86 インスタンスの場合は、インスタンス オペレーティングシステムに基づいて次のいずれかのコマンドを実行します。

        • Alibaba Cloud Linux 3、CentOS、または Anolis OS

          sudo yum install gcc-c++ dkms cmake kernel-devel kernel-headers libnl3 libnl3-devel
        • Ubuntu

          sudo apt-get install dkms cmake libnl-3-dev libnl-route-3-dev kernel-headers
      • ECS インスタンスが Arm インスタンスの場合、ビルド タスクはソースコードに基づいて実行されます。この場合、多数の依存関係が必要であり、変更される可能性があります。この手順をスキップして、インストール スクリプトを実行できます。インストール スクリプトが依存関係パッケージのインストールに失敗した場合、必要な依存関係パッケージをインストールするように求められます。プロンプトに従って依存関係パッケージをインストールし、eRDMA ドライバーを再インストールします。

    4. ドライバー インストール パッケージをダウンロードします

      • 内部 URL から eRDMA ドライバー インストール パッケージをダウンロードします。

        wget http://mirrors.cloud.aliyuncs.com/erdma/erdma_installer-latest.tar.gz
      • パブリック URL から eRDMA ドライバー インストール パッケージをダウンロードします。

        wget https://mirrors.aliyun.com/erdma/erdma_installer-latest.tar.gz

      この例では、最新の eRDMA ドライバー バージョンのインストール パッケージがダウンロードされます。ビジネス シナリオに基づいて、特定の eRDMA ドライバー バージョンのインストール パッケージをダウンロードできます。さまざまなバージョンの eRDMA インストール パッケージのリリースについては、「eRDMA を使用する」トピックの「ECS インスタンスの eRDMA ドライバーをインストールする」セクションをご参照ください。

    5. インストール パッケージを解凍し、インストール パッケージが解凍されたディレクトリに移動します

      tar -xvf erdma_installer-latest.tar.gz && cd erdma_installer
    6. 次のいずれかの方法を使用して、eRDMA ドライバーをインストールします

      • 方法 1: eRDMA ドライバーをインストールします。インストール プロセス中に、関連するアンインストール手順と自動インストール手順を確認します。

        sudo sh install.sh
      • 方法 2: eRDMA ドライバーを自動的にインストールします。

        sudo sh install.sh  --batch

      コマンド出力で、ドライバーがインストールされているかどうかを確認します。

      次のコマンド出力は、eRDMA ドライバーがインストールされていることを示しています。

      4.png

      次のコマンド出力は、eRDMA ドライバーのインストールに失敗したことを示しています。プロンプトに従って操作を実行し、eRDMA ドライバーを再インストールします。

      5.png

      説明

      ECS インスタンスで CentOS 7 が実行されており、ドライバーの再インストール時にパッケージが見つからないというエラー メッセージが表示された場合は、yum コマンドを実行してもパッケージを取得できない可能性があります。この場合、パッケージを取得する前に、yum install -y epel-release コマンドを実行して Extra Packages for Enterprise Linux (EPEL) リポジトリをインストールする必要がある場合があります。

  4. ECS インスタンスに ERI をバインドします。

    次のいずれかの方法を使用して、ECS インスタンスに ERI をバインドできます。

    説明

    特定のインスタンス タイプの ECS インスタンスにバインドできる ERI の最大数をクエリするには、DescribeInstanceTypes オペレーションを呼び出し、レスポンスの EriQuantity パラメーターの値を確認します。値が 0 の場合は、そのインスタンス タイプの ECS インスタンスに ERI をバインドできません。

    • ECS インスタンスにバインドされている ENI の ERI 機能を有効にする

      ENI の属性を変更することで、ECS インスタンスにバインドされている ENI の ERI 機能を有効にできます。詳細については、「ERI」トピックの「既存の ENI の ERI 機能のステータスを変更する」セクションをご参照ください。

    • ERI を作成し、ECS インスタンスにバインドする

    • API オペレーションを呼び出して ERI を作成し、ECS インスタンスにバインドする

      次の手順を実行します。

      1. API オペレーションを呼び出して ERI を作成します。

        CreateNetworkInterface オペレーションを呼び出して ENI を作成し、NetworkInterfaceTrafficMode パラメーターを HighPerformance に設定して、ENI の ERI 機能を有効にします。

        呼び出しが成功したら、NetworkInterfaceId パラメーターの戻り値を記録します。これは ERI ID です。

      2. NetworkInterfaceId パラメーターを前の手順で記録した戻り値に設定し、InstanceId パラメーターを ECS インスタンスの ID に設定して、AttachNetworkInterface オペレーションを呼び出して、ERI を ECS インスタンスにバインドします。

        重要

        ECS インスタンスのインスタンス タイプがインスタンスごとに複数の ERI をサポートしている場合は、インスタンスに複数の ERI をバインドするときに、各 ERI の NetworkCardIndex パラメーターを異なる値に設定することをお勧めします。これにより、ERI が異なるチャネルにバインドされ、インスタンスの最大ネットワーク帯域幅が実現されます。詳細については、「ネットワーク カード インデックス」をご参照ください。

eRDMA 書き込みレイテンシをテストする

eRDMA が構成されている 2 つのエンタープライズレベル インスタンスに Perftest をインストールし、ib_write_lat を使用して書き込みレイテンシをテストできます。Perftest テストの詳細については、「eRDMA を使用する」トピックの「Perftest テスト セット」セクションをご参照ください。

環境を準備する

  1. サーバークライアントとして機能する2 つのエンタープライズレベル ECS インスタンスを作成します。ECS インスタンスにeRDMA ソフトウェア スタックがインストールされ、インスタンスにERI がバインドされていることを確認します。

  2. インスタンスに有効なネットワーク構成があり、内部ネットワーク経由で相互に通信できることを確認します。詳細については、「内部ネットワーク経由で ECS インスタンスを接続する」をご参照ください。

手順

  1. 2 つの ECS インスタンスに接続します。

    詳細については、「Workbench を使用して SSH 経由で Linux インスタンスに接続する」をご参照ください。

  2. 両方のインスタンスの eRDMA 構成が正しいことを確認します。

    詳細については、「eRDMA を使用する」トピックの「eRDMA 構成の正確性を検証する」をご参照ください。

  3. 各 ECS インスタンスに Perftest をインストールします。

    公式の perftest リポジトリから perftest パッケージをダウンロードして perftest をインストールするか、Yellowdog Updater, Modified (YUM) または Advanced Packaging Tool (APT) リポジトリを使用して perftest をインストールできます。

    公式 perftest リポジトリ

    1. perftest をインストールする ECS インスタンスのパブリック帯域幅を有効にします。詳細については、「パブリック帯域幅を有効にする」をご参照ください。

    2. 公式 perftest リポジトリから perftest パッケージをダウンロードして、perftest をインストールします。

    YUM または APT リポジトリ

    説明

    さまざまなバージョンの perftest が、さまざまな Linux ディストリビューションのリポジトリに含まれています。非互換性が発生する可能性があります。非互換性を防ぐために、perftest をインストールする ECS インスタンスで実行されている Linux ディストリビューションを特定し、同じ Linux ディストリビューションのリポジトリに含まれている perftest バージョンをインストールすることをお勧めします。それ以外の場合は、公式 perftest リポジトリから perftest パッケージをダウンロードして perftest をインストールします

    • Alibaba Cloud Linux 3/CentOS/Anolis OS

      sudo yum install perftest -y
    • Ubuntu

      sudo apt install perftest -y
  4. eRDMA ネットワーク レイテンシが想定されるパフォーマンスを満たしているかどうかをテストします。

    1. サーバー側インスタンスで、クライアントからの接続をリッスンするサーバーとして ib_write_lat を起動します。

      ib_write_lat -R -a -F
      • -R : RDMA Connection Manager (CM) を使用して接続を確立します。

        重要
        • デフォルトでは、eRDMA をサポートする CPU ベースのインスタンス ファミリーは、標準モードで eRDMA カーネルモード ドライバーをインストールします。このモードでは、RDMA_CM 接続確立方法のみがサポートされています。詳細については、「eRDMA」トピックの「接続確立方法」セクションをご参照ください。

        • デフォルトでは、Perftest は帯域外 (OOB) 接続を確立します。CPU ベースのインスタンスで Perftest テストを実行する場合は、サーバーとクライアントの両方で -R パラメーターを指定して、RDMA_CM メソッドを使用して接続を確立できます。そうしないと、接続確立プロセス中に例外が発生する可能性があります。

        • CLI メソッドを使用して、RDMA_CM と OOB 接続確立方法間の互換性を有効にすることもできます。詳細については、「eRDMA の接続確立モードを変更して bRPC と互換性を持たせる」をご参照ください。CLI メソッドを使用して RDMA_CM と OOB 接続確立方法間の互換性を有効にした後、接続確立コマンドで -R パラメーターを指定しないでください。

      • -a : すべてのサイズのテスト メッセージを送信します。サイズの範囲は 2 バイトから 2^23 バイトです。これにより、さまざまなメッセージ サイズがレイテンシに及ぼす影響をテストできます。

      • -F : 既存の接続を強制的に置き換えます。既存の RDMA 接続が不要な場合は、-F パラメーターを構成して、既存の接続を無視し、新しい接続を確立します。

    2. クライアント側インスタンスで、ib_write_lat を起動し、サーバーに接続します。

      ib_write_lat -R -a -F <server_ip>

      <server_ip> を、サーバー側 ECS インスタンスにバインドされている ERI のプライベート IP アドレスに置き換えます。IP アドレスをクエリする方法については、「IP アドレスを表示する」をご参照ください。

    3. テスト結果を確認します。

      クライアントがテストされると、ib_write_latテスト構成情報接続情報、およびパフォーマンステスト結果を出力します。統計には、最小、最大、および平均レイテンシが含まれます。

      image

      ib_write_lat テスト結果のレイテンシ データ

      • #bytes : テスト メッセージのペイロードのサイズ。有効値: 2 ~ 8388608。単位: バイト。さまざまなメッセージ サイズは、さまざまな負荷でのパフォーマンスを理解するのに役立ちます。

      • #iterations : 反復回数。各サイズのメッセージを繰り返しテストする回数を指定します。値が大きいほど、平均値などの統計結果が安定します。

      • t_min[usec] : すべてのテストで記録された最小レイテンシ。単位: マイクロ秒。この値は、最良のケースのネットワーク レイテンシの参考になります。

      • t_max[usec] : すべてのテストで記録された最大レイテンシ。単位: マイクロ秒。値が大きい場合は、特定のネットワークの問題または一時的なトラフィック輻輳を示している可能性があります。

      • t_typical[usec] : テストで記録された標準的なレイテンシ。単位: マイクロ秒。ほとんどの場合、値はすべてのテストの中央値です。

      • t_avg[usec] : すべてのテストの平均レイテンシ。単位: マイクロ秒。平均レイテンシは、ネットワーク レイテンシに関する全体的なユーザー エクスペリエンスを反映しています。

      • t_stdev[usec] : レイテンシの標準偏差。単位: マイクロ秒。値が小さいほど、レイテンシが安定します。値が大きいほど、レイテンシが変動します。

      • 99% percentile[usec] : 99 パーセンタイルのレイテンシ値。テスト結果のレイテンシ値の 99% がこの値よりも低いことを示します。単位: マイクロ秒。99 パーセンタイルのデータポイントは、極端な場合のレイテンシ パフォーマンスを理解するのに役立ちます。

      • 99.9% percentile[usec] : 99.9 パーセンタイルのレイテンシ値。テスト結果のレイテンシ値の 99.9% がこの値よりも低いことを示します。単位: マイクロ秒。99.9 パーセンタイルのデータポイントは、極端な場合のレイテンシ パフォーマンスを理解するのに役立ちます。

      上記のレイテンシ統計は、RDMA ネットワーク パフォーマンスを包括的に理解するのに役立ち、ネットワーク パフォーマンスの最適化とネットワークの問題のトラブルシューティングに役立ちます。たとえば、テスト結果で、特定のサイズのテスト メッセージが送信されたときにレイテンシが急激に増加したことが示された場合は、ネットワーク構成またはハードウェア パフォーマンスがビジネス要件を満たしているかどうかを確認できます。テスト結果でレイテンシの変動が示された場合は、トラフィック輻輳またはネットワークの不安定性の問題を確認できます。