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

Elastic Compute Service:eRDMA ベースの SMC-R と Redis のデプロイ

最終更新日:May 13, 2025

Elastic Remote Direct Memory Access(eRDMA)はリクエストの処理を高速化し、超低レイテンシを実現します。このトピックでは、eRDMA ベースの共有メモリ通信(SMC)と Redis をデプロイし、SMC を使用して Redis のリクエスト処理能力をテストする方法について説明します。

背景情報

  • SMC は、カーネル空間で動作する高パフォーマンス プロトコルスタック で、共有メモリ技術を使用し、ソケットレイヤーと互換性があります。共有メモリ技術に基づいて、内部共有メモリ(ISM)技術を使用する Shared Memory Communications - Direct Memory Access(SMC-D)と、RDMA 技術を使用する Shared Memory Communications over Remote Direct Memory Access(SMC-R)の 2 つのバリエーションに分類されます。詳細については、「SMC の適用性」をご参照ください。

  • Alibaba Cloud Linux 3 は、eRDMA に基づく SMC-R アクセラレーション機能を提供します。Alibaba Cloud で SMC-R を使用するには、eRDMA 対応 ECS インスタンスを作成する必要があります。

準備

eRDMA 対応インスタンスを 2 つ作成し、前提条件[カスタム起動] タブでインスタンスを作成する オプションを選択し、プライマリ Elastic Network Interface(ENI)の eRDMA インターフェース(ERI)機能を有効にします。詳細については、「」をご参照ください。

ECS インスタンスは、以下の構成のサーバーとクライアントとして機能します。

  • インスタンスタイプ: ecs.g8i.8xlarge

  • イメージ: Alibaba Cloud Linux 3.2104 LTS 64 ビット

  • ネットワーク: ECS インスタンスは同じ セキュリティグループ に属し、内部ネットワークを介して相互に通信できます。

  • プライマリ ENI のプライマリ プライベート IP アドレス: サーバーとして使用するインスタンスの場合は 192.168.0.25、クライアントとして使用するインスタンスの場合は 192.168.0.24。必要に応じて IP アドレスを置き換えます。

    説明
    • このトピックのテストでは、プライマリ ENI の ERI 機能が有効になっている ECS インスタンスを使用します。サーバーとして使用される ECS インスタンスのプライマリ ENI のプライマリ プライベート IP アドレス は 192.168.0.25 です。

    • セカンダリ ENI の ERI 機能が有効になっている ECS インスタンスをテストに使用する場合は、上記の IP アドレスをセカンダリ ENI のプライマリ プライベート IP アドレス に置き換えます。詳細については、「ステップ 3: ERI を ECS インスタンスにバインドする」をご参照ください。

ECS インスタンスの作成中に特定のパラメーターを構成する方法の例

ECS インスタンスを作成する際は、以下のパラメーターまたはオプションに注意してください。ECS インスタンス購入ページのその他のパラメーターについては、「カスタム起動タブでインスタンスを作成する」をご参照ください。

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

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

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

      eRDMA

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

    image

    説明

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

説明

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

ステップ 1: SMC をデプロイする

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

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

  2. ECS インスタンスで次のコマンドを実行して、SMC-R モジュールをデプロイします。

    modprobe smc && modinfo smc
  3. ECS インスタンスで次のコマンドを実行して IPv6 を無効にし、ERI で eRDMA 接続を確立できるようにします。

    重要
    • Alibaba Cloud eRDMA デバイスと SMC は IPv6 アドレスをサポートしていません。アプリケーションが IPv6 を使用する場合、SMC は TCP にフォールバックします。詳細については、「IPv6 アドレスが使用されている場合、SMC は TCP にフォールバックする」をご参照ください。

    • カーネルバージョン ANCK 5.10.134-17.3 以降、SMC は IPv4-mapped IPv6 アドレスをサポートしています。

    sysctl net.ipv6.conf.all.disable_ipv6=1
  4. ECS インスタンスで次のコマンドを実行して、トラフィックが優先的に eRDMA 経由で送信されるように SMC eRDMA 機能を有効にします。

    net 名前空間 に対して透過的なソケット変換が有効になると、net 名前空間 内の以降の新しい TCP ソケットは SMC ソケットに変換され、既存の TCP ソケットは影響を受けません。

    sysctl net.smc.tcp2smc=1
  5. ECS インスタンスで次のコマンドを実行して、smc-tools をインストールします。

    smc-tools は IBM のツールキットで、SMC-R をさまざまな側面から監視および診断できます。これは、以下のモジュールで構成されています。

    • smcr: SMC-R リソースの統計を表示します。

    • smcss: SMC ソケットに関する情報を表示します。

    yum install -y smc-tools

    smc-tools をインストールした後、smcss -a コマンドを実行して現在のトラフィックパスをクエリします。smcss查看

ステップ 2: Redis をデプロイする

ECS インスタンスに Redis をデプロイします。

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

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

  2. ECS インスタンスで次のコマンドを実行して、Redis をインストールします。

    sudo yum install -y redis
  3. サーバーとして使用する ECS インスタンスで次のコマンドを実行して、Redis サーバーを起動します。

    redis-server --bind 192.168.0.25 --port 6379 --protected-mode no --save
    説明

    192.168.0.25 は、サーバーとして使用されるインスタンス上のプライマリ ENI のプライマリ プライベート IP アドレスであり、6379 は Redis がリッスンするポート番号です。プライマリ プライベート IP アドレスとポート番号を実際の値に置き換えてください。

    image

  4. クライアントとして使用する ECS インスタンスに接続し、ストレステストを実行します。

    • 次のコマンドを実行して、Redis サーバーに接続します。

      redis-cli -h 192.168.0.25 -p 6379
    • redis-benchmark を使用してストレステストを実行します。

      次のコマンドを実行して、100 クライアントがサーバーに 1,000,000 個の SET コマンドを送信するのをシミュレートします。

      redis-benchmark -h 192.168.0.25 -p 6379 -n 1000000 -t set -c 100

SMC-R を有効にした後、複数のストレステストプロセスを起動して複合テストを実行することもできます。上記の手順を繰り返して別の Redis クライアントをデプロイし、2 つの Redis クライアントで複数のストレステストプロセスを起動し、Redis サーバーの 1 秒あたりの操作数(OPS)を表示します。

  • SET コマンドの 8 つのストレステストプロセスを開始するためのサンプルコマンド:

    redis-benchmark -h 192.168.0.25 -p 6379 -n 100000000 -t set --threads 8 -c 100
  • GET コマンドの 8 つのストレステストプロセスを開始するためのサンプルコマンド:

    redis-benchmark -h 192.168.0.25 -p 6379 -n 1000000 -t get --threads 8 -c 100
  • Redis サーバーの OPS 数を表示するためのサンプルコマンド:

    redis-cli -h 192.168.0.25 -p 6379 info | grep instantaneous_ops_per_sec
    説明

    新しい接続ウィンドウを開き、上記のコマンドを入力します。