リモート・ダイレクト・メモリー・アクセス (RDMA) は、ネットワーク・デバイスが別のシステムのアプリケーション・メモリーと直接データを転送できるようにすることで、特定のネットワーク環境でスループットを向上させ、レイテンシーを短縮します。
主な違いは、iWARP は TCP で RDMA を実行し、RoCEv2 は UDP を使用することです。
パケットのドロップによるパフォーマンスの低下を防ぐには、すべてのネットワーク・インターフェイスおよびスイッチでリンクレベルのフロー制御または優先度のフロー制御を有効にします。
注:
|
これらの基本的な Linux* RDMA インストール手順は、次のデバイスに適用されます。
インストールと設定の詳細は、RDMA 対応のインテル® イーサネット・デバイス用ドライバー tarball の Linux* RDMA ドライバー README ファイルに記載されています。
この例は、Red Hat* Enterprise Linux* 特有のものです。ご利用のオペレーティング・システムによっては細部が異なる可能性があります。
# tar zxf irdma-<x.x.x>.tar.gz
# cd irdma-<x.x.x>
# ./build.sh
# modprobe irdma
注: デフォルトでは、irdma ドライバーは iWARP モードでロードされます。devlink インターフェイスを使用して、ポートごとに RoCEv2 を有効にします。RoCEv2 モードですべての irdma ポートをロードするには、次のようにしてください。# modprobe irdma roce_ena=1 |
# yum erase rdma-core
# wget https://github.com/linux-rdma/rdma-core/releases/download/v27.0/rdma-core-27.0.tar.gz
注: ドライバーに付属する libirdma パッチファイルのバージョンに一致する rdma-core バージョンをダウンロードします。例えば、libirdma-27.0.patch には rdma-core-27.0.tar.gz ?????? が必要です。 |
# tar -xzvf rdma-core-<version>.tar.gz
# cd rdma-core-<version>
# patch -p2 <<path-to-component-build>/libirdma-<version>.patch
# cd ..
# chgrp -R root <path-to-rdma-core>/redhat
# tar -zcvf rdma-core-<version>.tgz rdma-core-<version>
# mkdir -p ~/rpmbuild/SOURCES
# mkdir -p ~/rpmbuild/SPECS
# cp rdma-core-<version>.tgz ~/rpmbuild/SOURCES/
# cd ~/rpmbuild/SOURCES
# tar -xzvf rdma-core-<version>.tgz
# cp ~/rpmbuild/SOURCES/rdma-core-<version>/redhat/rdma-core.spec ~/rpmbuild/SPECS/
# cd ~/rpmbuild/SPECS/
# rpmbuild -ba rdma-core.spec
# cd ~/rpmbuild/RPMS/x86_64
# yum install *<version>*.rpm
FreeBSD* RDMA ドライバーは、次のデバイスシリーズで利用できます。
デバイス | ベースドライバー名 | RDMA ドライバー名 | サポートされているプロトコル |
インテル® イーサネット 800 シリーズ | ice | irdma | RoCEv21、iWARP |
インテル® イーサネット X722 シリーズ | ixl | iw_ixl | iWARP |
1限定的なサポート。機能テストのみ。DCB と優先フロー制御 (PFC) は現在のところサポートされていません。
次の手順では、各デバイスシリーズにおける FreeBSD* RDMA インストールについて説明します。インストールと設定の詳細については、FreeBSD* RDMA ドライバー tarball の README ファイルを参照してください。
インテル® イーサネット 800 シリーズ:
# tar -xf ice-<version>.tar.gz
# tar -xf irdma-<version>.tar.gz
# cd ice-<version>/ directory
# make
# make install
# cd irdma-<version>/src
# make clean
# make ICE_DIR=$PATH_TO_ICE/ice-<version>/
# make install
注: デフォルトでは、irdma ドライバーは iWARP モードでロードされます。RoCEv2 モードで irdma ポートをロードするには、/boot/loader.conf に次の行を追加します。ここで <port> は、 RoCEv2 モードを有効にするインターフェイスであり、その後再起動します。dev.irdma<port>.roce_enable=1 例えば、ice1 で RoCEv2 モードを有効にする場合: dev.irdma1.roce_enable=1 |
# sysctl dev.ice.<interface_num>.fc=3
インテル® イーサネット X722 シリーズ:
# tar -xf ixl-<version>.tar.gz
# tar -xf iw_ixl-<version>.tar.gz
# cd ixl-<version>/src directory
# make
# make install
# cd iw_ixl-<version>/src
# make clean
# make IXL_DIR=$PATH_TO_IXL/ixl-<version>/src
# make install
# sysctl dev.ixl.<interface_num>.fc=3
Network Direct (ND) はユーザーモードのアプリケーションで RDMA 機能を使用可能にします。
注: ユーザーモードのアプリケーションは、Microsoft* HPC Pack またはインテル® MPI ライブラリーなどで前提条件をもつことがあります。詳細については、アプリケーションのドキュメンテーションを参照してください。 |
インテル® イーサネット・ユーザー・モード RDMA プロバイダーは、Microsoft* Windows Server* 2012 R2 以降でサポートされています。
ユーザーモードの Network Direct 機能をインストールするには、以下の手順に従います。
注: Windows* ファイアウォールが無効になっている場合またはサードパーティーのファイアウォールを使用している場合は、この規則を手動で追加する必要があります。 |
RDMA Network Direct Kernel (NDK) 機能は、インテルベースのネットワーク・ドライバーに含まれており、追加機能をインストールする必要はありません。
サブネット全体に渡って NDK の RDMA 機能を許可したい場合は、ベースドライバーのインストール中に RDMA 設定オプション画面で [IP サブネット全体で RDMA ルーティングを有効にする] を選択する必要があります。
パケットのドロップによるパフォーマンスの低下を防ぐには、すべてのネットワーク・インターフェイスおよびスイッチで優先フロー制御 (PFC) またはリンクレベルのフロー制御を有効にします。
注: Microsoft* Windows Server* オペレーティング・システムを実行しているシステムでは、*QoS / 優先度のフロー制御を有効にすると、リンクレベルのフロー制御が無効になります。 |
次の PowerShell* コマンドを使用して、Microsoft* Windows Server* の PFC を有効にします。
Install-WindowsFeature -Name Data-Center-Bridging -IncludeManagementTools
New-NetQoSPolicy "SMB" -NetDirectPortMatchCondition 445 -PriorityValue8021Action 3
Enable-NetQosFlowControl -Priority 3
Disable-NetQosFlowControl -Priority 0,1,2,4,5,6,7
New-NetQosTrafficClass -Name "SMB" -Priority 3 -BandwidthPercentage 60 -Algorithm ETS
Set-NetQosDcbxSetting -Willing $FALSE
Enable-NetAdapterQos -Name "Slot1 4 2 Port 1"
次の 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"}
VMSwitch に接続されている仮想アダプターで RDMA 機能を有効にするには、各ポートで SRIOV (シングルルート IO 仮想化) および VMQ (仮想マシンキュー) の詳細プロパティーを有効にする必要があります。特定の状況の下では、これらの設定がデフォルトで無効になっていることがあります。これらのオプションは、アダプターのプロパティー・ダイアログ・ボックスの [詳細設定] タブ内にあるインテル® PROSet ACU の [アダプターの設定] パネル、または次の PowerShell* コマンドを使用して手動で設定できます。
Set-NetAdapterAdvancedProperty -Name <nic_name> -RegistryKeyword *SRIOV -RegistryValue 1
Set-NetAdapterAdvancedProperty -Name <nic_name> -RegistryKeyword *VMQ -RegistryValue 1
NDK モード 3 はカーネルモード Windows* コンポーネントが Hyper-V* ゲスト・パーティション内で RDMA 機能を使用できるようにします。インテル® イーサネット・デバイスで NDK モード 3 を有効にするには、次の手順に従ってください:
New-VMSwitch -Name <switch_name> -NetAdapterName <device_name>
-EnableIov $true
Set-NetAdapterAdvancedProperty -Name <device_name> -RegistryKeyword RdmaMaxVfsEnabled -RegistryValue <Value: 0 - 32>
Get-NetAdapterRdma | Disable-NetAdapter
Get-NetAdapterRdma | Enable-NetAdapter
Add-VMNetworkAdapter -VMName <vm_name> -VMNetworkAdapterName <device_name> -SwitchName <switch_name>
Set-VMNetworkAdapterRdma -VMName <vm_name> -VMNetworkAdapterName <device_name> -RdmaWeight 100
Set-VMNetworkAdapter -VMName <vm_name> -VMNetworkAdapterName <device_name> -IovWeight 100
Set-NetAdapterAdvancedProperty -Name <device_name> -RegistryKeyword RdmaVfEnabled -RegistryValue 1
Get-NetAdapterRdma | Enable-NetAdapterRdma
NDK は、Windows* コンポーネント (SMB ダイレクト・ストレージなど) が RDMA 機能を使用できるようにします。
このセクションでは、インテルのイーサネット機能と、Microsoft* Windows* オペレーティング・システムでのパフォーマンスを調べるために推奨される RDMA のテスト方法を説明します。
SMB ダイレクトはストレージ・ワークロードなので、ベンチマークのパフォーマンスは、テストされるネットワーク・インターフェイスではなく、ストレージデバイスの速度に制限される可能性があります。テスト中のネットワーク・デバイスの真の性能をテストするために、インテルは可能な限り最速のストレージを使用することを推奨します。
テストの手順:
New-SmbShare -Name <SMBsharename> -Path <SMBsharefilepath> -FullAccess <domainname>\Administrator,Everyone
New-SmbShare -Name RAMDISKShare -Path R:\RAMDISK -FullAccess group\Administrator,Everyone
.\diskspd.exe -b4K -d60 -h -L -o16 -t16 -r -w0 -c10G \\<SMBserverTestIP>\<SMBsharename>\test.dat
(C) 2019 - 2021, Intel Corporation.無断での引用、転載を禁じます。
インテルは、本書の記載内容の誤りや記入漏れについて、いっさい責任を負いません。また、本書の記載内容を更新する義務も一切負いません。
Intel、インテルは、アメリカ合衆国および / またはその他の国における Intel Corporation の商標です。
* その他の社名、製品名などは、一般に各社の表示、商標または登録商標です。
本ソフトウェアはライセンスに基づいて提供されるものであり、そのライセンスの許諾範囲内でのみ使用または複製できます。本マニュアル内での情報は、あくまでも情報として提供するもので、予告なしに変更されることもあり、また、内容についても、インテルが責任を負うものではありません。本書の内容および本書の内容に関連して掲載されているソフトウェア製品の誤りに関して、インテルは一切の責任や義務を負いません。ライセンス契約で許可されている場合を除き、インテルからの書面での承諾なく、本書のいかなる部分も複製したり、検索システムに保持したり、ほかの形式や媒体によって転送したりすることは禁じられています。