インテル® イーサネット用 RDMA (リモート・ダイレクト・メモリー・アクセス)

リモート・ダイレクト・メモリー・アクセス (RDMA) は、ネットワーク・デバイスが別のシステムのアプリケーション・メモリーと直接データを転送できるようにすることで、特定のネットワーク環境でスループットを向上させ、レイテンシーを短縮します。

パケットのドロップによるパフォーマンスの低下を防ぐには、すべてのネットワーク・インターフェイスおよびスイッチでリンクレベルのフロー制御または優先度のフロー制御を有効にします。

注:

Linux* での RDMA

  1. RDMAドライバーの tarball を展開します。例:
    # tar zxf i40iw-<x.x.x>.tar.gz
  2. i40iw PF ドライバーをインストールします。例:
    # cd i40iw-<x.x.x>
    # ./build.sh /opt/i40e-<x.x.x> k
  3. https://github.com/linux-rdma/rdma-core/releases から最新の rdma_core user-space パッケージをダウンロードして、そのインストール手順に従います。
  4. フロー制御を有効にします。
    # ethtool -A ethX rx <on> tx <on>
    注: このコマンドは、オートネゴシエーションが無効になっている場合にのみ、フロー制御を有効または無効にします。オートネゴシエーションが有効になっている場合、このコマンドは、リンクパートナーとのオートネゴシエーションに使用されるパラメーターを変更します。
  5. システムが接続されているスイッチでフロー制御を有効にします。詳細はスイッチのマニュアルでご覧ください。

FreeBSD* での RDMA

FreeBSD* RDMA の基本的なインストール手順:

  1. ベースドライバーと RDMA ドライバーを展開します。例:
    # tar -xf ixl-<version>.tar.gz
    # tar -xf iw_ixl-<version>.tar.gz
  2. ベースドライバーをインストールします。例:
    # cd ixl-<version>/src directory
    # make
    # make install
  3. RDMA ドライバーをインストールします。例:
    # cd iw_ixl-<version>/src
    # make clean
    # make IXL_DIR=$PATH_TO_IXL/ixl-<version>/src
    # make install
  4. フロー制御を有効にします。
    # sysctl dev.ice.<interface_num>.fc=3
  5. システムが接続されているスイッチでフロー制御を有効にします。詳細はスイッチのマニュアルでご覧ください。

FreeBSD RDMA インストールと設定情報は、RDMAをサポートするインテル® イーサネット・デバイス用ドライバー tarball のドライバー README ファイルに記載されています。

Microsoft Windows Network Direct (ND) 用 RDMA ユーザーモードのアプリケーション

Network Direct (ND) はユーザーモードのアプリケーションで RDMA 機能を使用可能にします。

注: ユーザーモードのアプリケーションは、Microsoft* HPC Pack またはインテル® MPI ライブラリーなどで前提条件をもつことがあります。詳細については、アプリケーションのドキュメンテーションを参照してください。

RDMA ユーザーモードのインストール

インテル® イーサネット・ユーザー・モード RDMA プロバイダーは、Microsoft* Windows Server* 2012 R2 以降でサポートされています。

ユーザーモードの Network Direct 機能をインストールするには、以下の手順に従います。

  1. インストール・メディアで Autorun.exe を実行してインストーラーを起動して、[ドライバーとソフトウェアをインストールする] を選択し、ソフトウェア使用許諾契約に同意します。
  2. セットアップ・オプション画面で [インテル® イーサネット・ユーザー・モード RDMA プロバイダー] を選択します。
  3. RDMA 設定オプション画面で、希望する場合は [IP サブネット全体で RDMA ルーティングを有効にする] を選択します。このオプションは、Network Direct Kernel 機能にも適用可能なため、ユーザーモード RDMA が選択されていない場合でも、ベースドライバーのインストール中にこのオプションが表示されることに注意してください。
  4. Windows* ファイアウォールがインストールされ、アクティブになっている場合は、[Windows ファイアウォールにインテル® RDMA Port Mapping Service の規則を作成する] を選択するとその規則を適用するネットワークを選択します。

    注: Windows* ファイアウォールが無効になっている場合またはサードパーティーのファイアウォールを使用している場合は、この規則を手動で追加する必要があります。

  5. ドライバーとソフトウェアのインストールに進みます。

RDMA Network Direct Kernel (NDK)

RDMA Network Direct Kernel (NDK) 機能は、インテルベースのネットワークドライバーに含まれており、追加機能をインストールする必要はありません。

IP サブネット全体に渡る RDMA ルーティング

サブネット全体に渡って NDK の RDMA 機能を許可したい場合は、ベースドライバーのインストール中に RDMA 設定オプション画面で [IP サブネット全体で RDMA ルーティングを有効にする] を選択する必要があります。

Microsoft* PowerShell* を使用した RDMA 操作の検証

次の Microsoft* PowerShell* コマンドを使用して、ネットワーク・インターフェイスで RDMA が有効になっているか確認できます:

Get-NetAdapterRDMA

次の PowerShell* コマンドを使用して、ネットワーク・インターフェイスが RDMA 対応でありマルチチャネルが有効になっているか確認できます:

Get-SmbClientNetworkInterface

次の PowerShell コマンドを使用して、オペレーティング・システムで Network Direct が有効になっているか確認できます:

Get-NetOffloadGlobalSetting | Select NetworkDirect

Netstat を使用して、各 RDMA 対応ネットワーク・インターフェイスのポート 445 にリスナーがあることを確認します (RDMA をサポートする Windows* クライアント OS はリスナーをポストできない場合があります)。例:

netstat.exe -xan | ? {$_ -match "445"}

仮想環境の RDMA

VMSwitch に接続されている仮想アダプターで RDMA 機能を有効にするには、各ポートで SRIOV (シングルルート IO 仮想化) および VMQ (仮想マシンキュー) の詳細プロパティーを有効にする必要があります。特定の状況の下では、これらの設定がデフォルトで無効になっていることがあります。これらのオプションは、アダプターの [プロパティ] ダイアログボックスの [詳細設定] タブで手動で設定するか、次の Powershell* コマンドを使用して設定できます:

Set-NetAdapterAdvancedProperty -Name <nic_name> -RegistryKeyword *SRIOV -RegistryValue 1

Set-NetAdapterAdvancedProperty -Name <nic_name> -RegistryKeyword *VMQ -RegistryValue 1

RDMA ゲストサポートの設定 (NDK モード 3)

NDK モード 3 はカーネルモード Windows* コンポーネントが Hyper-V* ゲスト・パーティション内で RDMA 機能を使用できるようにします。インテル® イーサネット・デバイスで NDK モード 3 を有効にするには、次の手順に従ってください:

  1. システムの BIOS または UEFI で SR-IOV を有効にします。
  2. デバイスで SR-IOV 詳細設定を有効にします。
  3. 同じデバイスのすべての物理関数に対して次の手順を実行して、デバイスにバインドされている VMSwitch で SR-IOV を有効にします。
    New-VMSwitch -Name <switch_name> -NetAdapterName <device_name>
    -EnableIov $true
  4. "RdmaMaxVfsEnabled" 詳細設定を設定することにより、デバイス上の RDMA 仮想関数 (VF) の数を設定します。すべての物理関数を同じ値に設定する必要があります。この値はデバイス全体で RDMA を一度に実行できる仮想関数 (VF) の最大数です。さらに多くの仮想関数 (VF) を有効にすると、物理関数 (PF) と他の VF から RDMA リソースが制限されます。
    Set-NetAdapterAdvancedProperty -Name <device_name> -RegistryKeyword RdmaMaxVfsEnabled -RegistryValue <Value: 0 – 32>
  5. ホストですべての物理関数 (PF) アダプターを無効にして、それらを再度有効にします。これはレジストリーのキーワード “RdmaMaxVfsEnabled” が変更されたとき、または VMSwitch を作成または破棄するときに必要です。
    Get-NetAdapterRdma | Disable-NetAdapter
    Get-NetAdapterRdma | Enable-NetAdapter
  6. RDMA VF サポートを必要とする仮想マシン用の VM ネットワーク・アダプターを作成します。
    Add-VMNetworkAdapter -VMName <vm_name> -VMNetworkAdapterName <device_name> -SwitchName <switch_name>
  7. ゲスト・パーティションで Microsoft* Windows* 10 Creators Update (RS2) 以降を使用する予定の場合は、ホストで次のコマンドを入力して、VM ネットワーク・アダプターに RDMA ウエイトを設定してください。
    Set-VMNetworkAdapterRdma -VMName <vm_name> -VMNetworkAdapterName <device_name> -RdmaWeight 100
  8. VM ネットワーク・アダプターで SR-IOV ウェイトを設定します (注:RDMA ウェイトを 0 に設定する前に SR-IOV ウェイトを 0 に設定する必要があります):
    Set-VMNetworkAdapter -VMName <vm_name> -VMNetworkAdapterName <device_name> -IovWeight 100
  9. VM の PROSET インストーラーを使用して VF ネットワーク・アダプターをインストールします。
  10. VM の PowerShell* を使用して、VF ドライバーと Hyper-V* ネットワークアダプターで RDMA を有効にします:
    Set-NetAdapterAdvancedProperty -Name <device_name> -RegistryKeyword RdmaVfEnabled -RegistryValue 1
    Get-NetAdapterRdma | Enable-NetAdapterRdma

SMB ダイレクト (サーバー・メッセージ・ブロック) など NDK 機能用の RDMA

NDK は、Windows* コンポーネント (SMB ダイレクト・ストレージなど) が RDMA 機能を使用できるようにします。

DiskSPD を使用して NDK:Microsoft* Windows* SMB ダイレクトをテストする

このセクションでは、インテルのイーサネット機能と、Microsoft* Windows* オペレーティング・システムでのパフォーマンスを調べるために推奨される RDMA のテスト方法を説明します。

SMB ダイレクトはストレージ・ワークロードなので、ベンチマークのパフォーマンスは、テストされるネットワーク・インターフェイスではなく、ストレージデバイスの速度に制限される可能性があります。テスト中のネットワーク・デバイスの真の性能をテストするために、インテルは可能な限り最速のストレージを使用することを推奨します。

テストの手順:

  1. サポートされている Microsoft* Windows Server* オペレーティング・システムを実行している少なくとも 2 台のサーバーをセットアップして、接続します。各サーバーに少なくとも 1 つの RDM 対応インテル® イーサネット・デバイスが必要です。
  2. SMB サーバーとして指定したシステムで、SMB 共有を設定します。ベンチマークのパフォーマンスは、テストされるネットワーク・インターフェイスではなく、ストレージデバイスの速度に制限される可能性があることに注意してください。ストレージのセットアップについては、本書では取り扱いませんん。次の PowerShell* コマンドを使用できます:
    New-SmbShare -Name <SMBsharename> -Path <SMBsharefilepath> -FullAccess <domainname>\Administrator,Everyone

    例:
    New-SmbShare -Name RAMDISKShare -Path R:\RAMDISK -FullAccess group\Administrator,Everyone

  3. 次のサイトから Microsoft* ユーティリティー Diskspd をダウンロードしてインストールします:https://gallery.technet.microsoft.com/DiskSpd-a-robust-storage-6cd2f223
  4. CMD または Powershell* を利用して DiskSpd フォルダーに cd を実行し、テストを実行します。(パラメーターの詳細については、Diskspd のドキュメンテーションを参照してください)

    例:ブロックのサイズを 4K に設定してテストを 60 秒間実行、すべてのハードウェアとソフトウェアのキャッシュを無効にし、レイテンシーの統計を測定・表示、ターゲット当たり 16 の重複した IO と 16 スレッド、ランダムな 0% 書き込みおよび 100% 読み取りを活用して 10GB テストファイルを “\\<SMBserverX722IP>\、<SMBsharename>\test.dat” に作成します:
    .\diskspd.exe –b4K -d60 -h -L –o16 -t16 –r –w0 -c10G \\<SMBserverX722IP>\<SMBsharename>\test.dat

  5. “RDMA Activity” や “SMB ダイレクト接続” などの perfmon カウンターを使用して RDMA トラフィックが実行されていることを検証します。詳細については、Microsoft* のドキュメンテーションを参照してください。

カスタマーサポート

法務情報 / 免責情報

(C) 2019 Intel Corporation.無断での引用、転載を禁じます。

Intel Corporation は本書に記載されている内容の誤りまたは記載漏れについて、一切責任を負いません。また、本書の記載内容を更新する義務も一切負いません。

Intel、インテルは、アメリカ合衆国および / またはその他の国における Intel Corporation の商標です。

* その他の社名、製品名などは、一般に各社の表示、商標または登録商標です。

本ソフトウェアはライセンスに基づいて提供されるものであり、そのライセンスの許諾範囲内でのみ使用または複製できます。本マニュアル内での情報は、あくまでも情報として提供するもので、予告なしに変更されることもあり、また、内容についても、インテルが責任を負うものではありません。本書の内容および本書の内容に関連して掲載されているソフトウェア製品の誤りに関して、インテルは一切の責任や義務を負いません。ライセンス契約で許可されている場合を除き、インテルからの書面での承諾なく、本書のいかなる部分も複製したり、検索システムに保持したり、他の形式や媒体によって転送したりすることは禁じられています。