遠端直接記憶體存取(簡稱 RDMA)可以讓網路裝置在另外一個系統上的應用程式記憶體中直接傳輸資料、增加輸出量、並且在特定網路環境中減少延遲性。
最主要的不同點是 iWARP 能透過 TCP 執行 RDMA,而 RoCEv2 則是使用 UDP 來執行。
在具有 RDMA 功能的裝置上,下列作業系統可支援 RDMA:
為了避免遺失封包造成的效能降低,可以在所有的網路介面和交換器上啟用連結層的流量控制或優先順序流量控制。
![]() |
注意:
|
對於在 Linux 或 FreeBSD 上支援 RDMA 的 Intel 乙太網路裝置,請使用下表所列的驅動程式。
裝置 | Linux | FreeBSD | 支援的通訊協定 | ||
---|---|---|---|---|---|
基礎驅動程式 | RDMA 驅動程式 | 基礎驅動程式 | RDMA 驅動程式 | ||
Intel® 乙太網路 800 系列 | ice | irdma | ice | irdma | RoCEv2、iWARP |
Intel® 乙太網路 X722 系列 | i40e | irdma | ixl | 不支援 | iWARP |
概括地說,在 Linux 或 FreeBSD 上安裝和配置 RDMA 包括以下步驟。完整詳細資訊請參閱適當的 RDMA 驅動程式 tarball 中的讀我檔案。
搭載 Intel 乙太網路 800 系列的裝置,於支援之 Windows 或 Linux 主機上,支援 Linux VF 內的 RDMA。如需如何在 Linux VF 載入及設定 RDMA 的詳細資訊,請參考 Linux RDMA 驅動程式 tarball 內的讀我檔案。
使用 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 | 選取 NetworkDirect
請使用 netstat 來檢查每個具備 RDMA 功能的網路介面在第 445 連接埠有一個接聽程式(支援 RDMA 的 Windows 用戶端作業系統可能不會公布接聽程式)。例如:
netstat.exe -xan | ? {$_ -match "445"}
若要在連接至 VMSwitch 的虛擬介面卡上啟用 RDMA 功能,您必須:
在特定情況下,您可以預設停用這些設定。您可以在 Intel PROSet ACU 的「介面卡設定」面板內,其介面卡屬性對話框「進階」分頁中,或以下列 PowerShell 指令,手動設定這些選項:
Set-NetAdapterAdvancedProperty -Name <nic_name> -RegistryKeyword *SRIOV -RegistryValue 1
Set-NetAdapterAdvancedProperty -Name <nic_name> -RegistryKeyword *VMQ -RegistryValue 1
Set-NetAdapterAdvancedProperty -Name <nic_name> -RegistryKeyword RdmaMaxVfsEnabled -RegistryValue <1-32>
「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 建議使用最快的儲存,這樣可測試出受測之網路裝置的真實功能。
測試說明:
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
您可以使用 perfmon 或其他效能監控工具來監控及顯示 RDMA 計數器和統計資料。請參考 Microsoft 說明文件以了解更多詳細資料。使用 Register-IntelEthernetRDMACounterSet cmdlet 向 perfmon 註冊特定裝置的 RDMA 統計資料計數器。請參閱透過 Windows PowerShell 進行設定,進一步瞭解如何安裝及使用 Intel Ethernet cmdlet。您可以使用以下 PowerShell 命令為所有支援的裝置註冊 RDMA 統計資料:
Register-IntelEthernetRDMACounterSet
您可以使用以下 PowerShell cmdlet 取消註冊 RDMA 統計資料:
Unregister-IntelEthernetRDMACounterSet
版權所有 (C) 2019 - 2023,Intel 公司。保留一切權利。
此軟體與相關文件為 Intel 版權材料,而您的用途會受其提供予您的明確授權(「授權」)所規範。除非授權另有規定,否則若無 Intel 事先書面許可,您不得使用、修改、複製、發布、散發、揭露或傳輸此軟體或相關文件。
此軟體與相關文件均按原樣提供,除授權中明確載明外,不含任何明示或暗示的擔保。
Intel 技術可能需要搭配支援的硬體、特定軟體或啟動服務才能使用。
沒有產品或元件能提供絕對的安全性。
您的成本和結果可能會有所差異。
Intel、Intel 圖誌和其它 Intel 標誌是 Intel 公司或其子公司的商標。
*其他名稱與品牌可能業經宣告為他人之財產。