「遠端直接記憶體存取」,簡稱 RDMA,可以讓網路裝置在另外一個系統上的應用程式記憶體中直接傳輸資料、增加輸出量、並且在特定網路環境中減少延遲性。
最主要的不同點是 iWARP 能透過 TCP 執行 RDMA,而 RoCEv2 則是使用 UDP 來執行。
為了避免遺失封包造成的效能降低,可以在所有的網路介面和交換器上啟用連結層的流量控制或優先順序流量控制。
注意:
|
這些基本的 Linux RDMA 安裝說明適用於下列裝置:
如需詳細安裝與設定資訊,請在支援 RDMA 的 Intel 乙太網路裝置驅動程式 tarball 中,參閱 Linux RDMA 驅動程式讀我檔案。
此範例是專為 RHEL。您的作業系統具體資訊可能有所不同。
# tar zxf irdma-<x.x.x>.tar.gz
# cd irdma-<x.x.x>
# ./build.sh
# modprobe irdma
NOTE: By default, the irdma driver is loaded in iWARP mode. It uses the devlink interface to enable RoCEv2 per port. To load all irdma ports in RoCEv2 mode, use the following:# 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
NOTE: Download the rdma-core version that matches the version of the libirdma patch file included with the driver. For example, libirdma-27.0.patch requires 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 安裝說明適用於下列裝置:
# 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
如需詳細安裝與設定資訊,請在支援 RDMA 的 Intel 乙太網路裝置驅動程式 tarball 中,參閱 FreeBSD RDMA 驅動程式讀我檔案。
使用 Network Direct (ND),使用者模式應用程式就可以使用 RDMA 功能。
注意:使用者模式應用程式可能有預先安裝的要求條件,例如 Microsoft HPC Pack 或 Intel MPI Library,請參考您的應用程式說明文件來了解詳細資料。 |
「Intel® 乙太網路使用者模式 RDMA 供應商」受到 Microsoft* Windows Server* 2012 R2 或更新版本的支援。
請遵照下面的步驟來安裝使用者模式的 Network Direct (ND) 功能。
注意:如果「Windows 防火牆」已停用或者您使用的是第三方的防火牆,就需要以手動方式來新增這條規則。 |
RDMA Network Direct Kernel (NDK) 功能已經包括在 Intel 基礎網路驅動程式,而且不需安裝其它功能。
如果您要讓所有的子網路都能使用 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 用戶端作業系統可能不會公布接聽程式)。例如:
netstat.exe -xan | ? {$_ -match "445"}
如果您想在連接至 VMSwitch 的虛擬介面卡上啟用 RDMA 功能,一定要在每個連接埠程式啟用 SRIOV(單一根目錄 IO 虛擬化)和 VMQ(虛擬機器佇列)進階屬性。在特定的情況下,這些設定的預設是停用。您可以在介面卡內容對話方塊的進階標籤手動設定這些選項,或者使用下面的 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 功能。若要在 Intel 乙太網路裝置上啟用 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 功能。
這個區段介紹了適用於測試 Intel 乙太網路功能性的 RDMA 和 Microsoft* Windows* 作業系統效能的建議方法。
請注意,因為「SMB 直接傳輸」是一種儲存負載,其效能指標可能會受到儲存裝置的限制,而不是受限於被測試的網路介面。Intel 建議使用最快的儲存,這樣可測試出受測之網路裝置的真實功能。
測試說明:
著作權 (C) 2019 - 2020,Intel 公司。版權所有。
Intel 公司不對本文件中的錯誤或疏失負責。Intel 亦不對此處包含的資訊做任何更新承諾。
Intel 是 Intel 公司在美國及其他國家的商標。
* 其他的名稱和品牌可能業經宣告為其他所有者之財產。
本軟體係根據授權提供,且只得根據本授權的條款進行使用或複製。本手冊中的資訊僅以資訊使用目的提供、可能在不另行通知的情況下修改、並且不應被讀解為 Intel 公司的承諾。對於本文件或與本文件相關而提供之任何軟體中若有任何錯誤或不正確之處,Intel 公司不承擔任何責任或義務。除了此授權許可的部份外,事先未經 Intel 公司的明確書面同意,不得以任何格式或方法對本文件的任何部份進行複製、儲存在可擷取的系統中、或傳輸。