特定のエンタープライズレベル Elastic Compute Service (ECS) インスタンスは、ネットワーク アーキテクチャを変更することなく、低レイテンシ、高スループット、高パフォーマンス、および拡張性の高い RDMA ネットワーク サービスを提供するために、Elastic Remote Direct Memory Access (eRDMA) をサポートしています。このトピックでは、エンタープライズレベルの ECS インスタンスに eRDMA をデプロイする方法について説明します。
制限事項
項目 | 説明 |
インスタンス ファミリー | 次のインスタンス ファミリーは、eRDMA をサポートしています。 |
イメージ |
説明 選択可能なイメージは、インスタンス タイプによって異なります。選択可能なイメージは、eRDMA をサポートするインスタンス タイプを選択すると、インスタンス購入ページに表示されます。 |
eRDMA デバイスの数 | 特定のインスタンス タイプの ECS インスタンスにバインドできる ERI の最大数をクエリするには、DescribeInstanceTypes オペレーションを呼び出し、レスポンスの EriQuantity パラメーターの値を確認します。値が 0 の場合は、そのインスタンス タイプの ECS インスタンスに ERI をバインドできません。 |
ネットワーク |
|
エンタープライズレベルの ECS インスタンスで eRDMA を構成する
ECS インスタンスの作成時に eRDMA を構成する
選択したオペレーティングシステム バージョンで [ eRDMA ドライバーの自動インストール ] オプションを選択できない場合、または eRDMA ドライバーが自動的にインストールされない場合は、インスタンスの作成後に手動またはスクリプトを使用してドライバーをインストールできます。詳細については、このトピックの「既存のインスタンスで eRDMA を構成する」セクションをご参照ください。
ECS インスタンスを起動した後、システムが eRDMA ドライバーをインストールするまでしばらくお待ちください。
ERI をサポートするエンタープライズレベルの ECS インスタンスを作成します。ECS インスタンスを作成する際は、次のパラメーターまたはオプションに注意してください。ECS インスタンス購入ページのその他のパラメーターについては、「[カスタム起動] タブでインスタンスを作成する」をご参照ください。
[インスタンスとイメージ] : eRDMA をサポートするインスタンス タイプを選択し、eRDMA ドライバーをインストールします。
[インスタンス] : 詳細については、このトピックの「制限事項」セクションをご参照ください。
[イメージ] : [パブリックイメージ] タブをクリックし、パブリックイメージを選択してから、[eRDMA ドライバーの自動インストール] を選択します。インスタンスが起動すると、システムは自動的に eRDMA ドライバーをインストールします。
[ENI] : [プライマリ ENI] の右側にある [ eRDMA インターフェース ] オプションを選択して、ERI を ECS インスタンスにバインドします。
説明エンタープライズレベル インスタンスを作成する場合、プライマリ Elastic Network Interface (ENI) に対してのみ ERI 機能を有効にできます。セカンダリ ENI の ERI 機能は、ECS コンソールまたは API オペレーションの呼び出しによって有効にできます。詳細については、「ERI」をご参照ください。
既存の ECS インスタンスで eRDMA を構成する
インスタンス タイプをeRDMA をサポートするインスタンス タイプのリストと照合します。
インスタンス タイプが eRDMA をサポートしていることを確認します。
インスタンスに対して eRDMA が想定どおりに構成されているかどうかを確認します。
インスタンスに対して eRDMA が想定どおりに構成されているかどうかを確認する方法については、「eRDMA を使用する」トピックの「eRDMA 構成の正確性を検証する」セクションをご参照ください。
インスタンスに対して eRDMA が想定どおりに構成されていない場合は、次の手順を実行して、eRDMA ドライバーをインストールし、ERI を ECS インスタンスにバインドできます。
インスタンスに eRDMA ドライバーをインストールします。
インスタンスの作成時に [ ERDMA ドライバーの自動インストール ] を選択しないと、eRDMA ドライバーはインスタンスに自動的にインストールされません。実際のシナリオに基づいて、手動またはスクリプトを使用して eRDMA ドライバーをインストールします。
スクリプトを使用して eRDMA ドライバーをインストールすると、最新の安定した eRDMA ドライバー バージョンのインストール パッケージが自動的にダウンロードされます。
eRDMA ドライバーを手動でインストールする場合は、特定の eRDMA ドライバー バージョンのパッケージをダウンロードできます。
スクリプトを実行して eRDMA ドライバーをインストールする
最新かつ安定した eRDMA ドライバー パッケージをダウンロードします。
curl -O http://mirrors.cloud.aliyuncs.com/erdma/env_setup.sh
eRDMA ドライバー パッケージをインストールします。
sudo /bin/bash env_setup.sh > /var/log/erdma_install.log 2>&1
スクリプトは、eRDMA ドライバーに必要な依存関係、次に eRDMA ドライバーを自動的にインストールします。スクリプトの実行が完了するまで待ちます。
説明スクリプトを使用して eRDMA ドライバーをインストールできない場合は、
/var/log/erdma_install.log
ファイルのログを確認してください。
eRDMA ドライバーを手動でインストールする
前提条件パッケージを更新します。
Alibaba Cloud Linux 3、CentOS、および Anolis OS の場合は、次のコマンドを実行します。
sudo yum update -y
Ubuntu の場合は、この手順をスキップします。
次のコマンドを順番に実行して、最新のカーネル パッケージ バージョンとオペレーティングシステム カーネル バージョンをクエリします。
rpm -qa | grep kernel // 最新のカーネル パッケージ バージョンをクエリします。 uname -r // オペレーティングシステム カーネル バージョンをクエリします。
次の図に示すコマンド出力は、カーネル パッケージ バージョンがオペレーティングシステム カーネル バージョンと同じであることを示しています。この場合、追加の操作を実行する必要はありません。バージョンが異なる場合は、ECS インスタンスを再起動してバージョンを同じにします。
依存関係パッケージをインストールします。
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 ドライバーを再インストールします。
ドライバー インストール パッケージをダウンロードします。
内部 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 ドライバーをインストールする」セクションをご参照ください。
インストール パッケージを解凍し、インストール パッケージが解凍されたディレクトリに移動します。
tar -xvf erdma_installer-latest.tar.gz && cd erdma_installer
次のいずれかの方法を使用して、eRDMA ドライバーをインストールします。
方法 1: eRDMA ドライバーをインストールします。インストール プロセス中に、関連するアンインストール手順と自動インストール手順を確認します。
sudo sh install.sh
方法 2: eRDMA ドライバーを自動的にインストールします。
sudo sh install.sh --batch
コマンド出力で、ドライバーがインストールされているかどうかを確認します。
次のコマンド出力は、eRDMA ドライバーがインストールされていることを示しています。
次のコマンド出力は、eRDMA ドライバーのインストールに失敗したことを示しています。プロンプトに従って操作を実行し、eRDMA ドライバーを再インストールします。
説明ECS インスタンスで CentOS 7 が実行されており、ドライバーの再インストール時にパッケージが見つからないというエラー メッセージが表示された場合は、
yum
コマンドを実行してもパッケージを取得できない可能性があります。この場合、パッケージを取得する前に、yum install -y epel-release
コマンドを実行して Extra Packages for Enterprise Linux (EPEL) リポジトリをインストールする必要がある場合があります。
ECS インスタンスに ERI をバインドします。
次のいずれかの方法を使用して、ECS インスタンスに ERI をバインドできます。
説明特定のインスタンス タイプの ECS インスタンスにバインドできる ERI の最大数をクエリするには、DescribeInstanceTypes オペレーションを呼び出し、レスポンスの EriQuantity パラメーターの値を確認します。値が 0 の場合は、そのインスタンス タイプの ECS インスタンスに ERI をバインドできません。
ECS インスタンスにバインドされている ENI の ERI 機能を有効にする
ENI の属性を変更することで、ECS インスタンスにバインドされている ENI の ERI 機能を有効にできます。詳細については、「ERI」トピックの「既存の ENI の ERI 機能のステータスを変更する」セクションをご参照ください。
ERI を作成し、ECS インスタンスにバインドする
ERI を作成する方法については、「ERI」トピックの「ERI を個別に作成する」セクションをご参照ください。
ERI を ECS インスタンスにバインドする方法については、「セカンダリ ENI をバインドする」をご参照ください。
API オペレーションを呼び出して ERI を作成し、ECS インスタンスにバインドする
次の手順を実行します。
API オペレーションを呼び出して ERI を作成します。
CreateNetworkInterface オペレーションを呼び出して ENI を作成し、NetworkInterfaceTrafficMode パラメーターを HighPerformance に設定して、ENI の ERI 機能を有効にします。
呼び出しが成功したら、
NetworkInterfaceId
パラメーターの戻り値を記録します。これは ERI ID です。NetworkInterfaceId パラメーターを前の手順で記録した戻り値に設定し、InstanceId パラメーターを ECS インスタンスの ID に設定して、AttachNetworkInterface オペレーションを呼び出して、ERI を ECS インスタンスにバインドします。
重要ECS インスタンスのインスタンス タイプがインスタンスごとに複数の ERI をサポートしている場合は、インスタンスに複数の ERI をバインドするときに、各 ERI の NetworkCardIndex パラメーターを異なる値に設定することをお勧めします。これにより、ERI が異なるチャネルにバインドされ、インスタンスの最大ネットワーク帯域幅が実現されます。詳細については、「ネットワーク カード インデックス」をご参照ください。
eRDMA 書き込みレイテンシをテストする
eRDMA が構成されている 2 つのエンタープライズレベル インスタンスに Perftest
をインストールし、ib_write_lat
を使用して書き込みレイテンシをテストできます。Perftest テストの詳細については、「eRDMA を使用する」トピックの「Perftest テスト セット」セクションをご参照ください。
環境を準備する
サーバーとクライアントとして機能する2 つのエンタープライズレベル ECS インスタンスを作成します。ECS インスタンスにeRDMA ソフトウェア スタックがインストールされ、インスタンスにERI がバインドされていることを確認します。
インスタンスに有効なネットワーク構成があり、内部ネットワーク経由で相互に通信できることを確認します。詳細については、「内部ネットワーク経由で ECS インスタンスを接続する」をご参照ください。
手順
2 つの ECS インスタンスに接続します。
詳細については、「Workbench を使用して SSH 経由で Linux インスタンスに接続する」をご参照ください。
両方のインスタンスの eRDMA 構成が正しいことを確認します。
詳細については、「eRDMA を使用する」トピックの「eRDMA 構成の正確性を検証する」をご参照ください。
各 ECS インスタンスに
Perftest
をインストールします。公式の perftest リポジトリから perftest パッケージをダウンロードして perftest をインストールするか、Yellowdog Updater, Modified (YUM) または Advanced Packaging Tool (APT) リポジトリを使用して perftest をインストールできます。
公式 perftest リポジトリ
perftest をインストールする ECS インスタンスのパブリック帯域幅を有効にします。詳細については、「パブリック帯域幅を有効にする」をご参照ください。
公式 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
eRDMA ネットワーク レイテンシが想定されるパフォーマンスを満たしているかどうかをテストします。
サーバー側インスタンスで、クライアントからの接続をリッスンするサーバーとして
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
パラメーターを構成して、既存の接続を無視し、新しい接続を確立します。
クライアント側インスタンスで、
ib_write_lat
を起動し、サーバーに接続します。ib_write_lat -R -a -F <server_ip>
<server_ip>
を、サーバー側 ECS インスタンスにバインドされている ERI のプライベート IP アドレスに置き換えます。IP アドレスをクエリする方法については、「IP アドレスを表示する」をご参照ください。テスト結果を確認します。
クライアントがテストされると、
ib_write_lat
はテスト構成情報、接続情報、およびパフォーマンステスト結果を出力します。統計には、最小、最大、および平均レイテンシが含まれます。