远程直接内存访问(RDMA)允许网络设备与另一台系统的应用程序内存之间直接传送数据,并在某些网络环境中增加吞吐量和降低延迟。
主要的区别是 iWARP 通过 TCP 执行 RDMA,而 RoCEv2 则使用 UDP。
在配备 RDMA 功能的设备上,以下操作系统上支持 RDMA:
为了避免因丢弃的数据包导致的性能下降,在所有网络接口和交换机上启用链路级流量控制或优先级流量控制。
![]() |
注意:
|
对于支持 Linux 或 FreeBSD 上 RDMA 的英特尔以太网设备,请使用下表中显示的驱动程序。
设备 | Linux | FreeBSD | 支持的协议 | ||
---|---|---|---|---|---|
基础驱动程序 | RDMA 驱动程序 | 基础驱动程序 | RDMA 驱动程序 | ||
英特尔® 以太网 800 系列 | ice | irdma | ice | irdma | RoCEv2, iWARP |
英特尔® 以太网 X722 系列 | i40e | irdma | ixl | 不支持 | iWARP |
对于较高级别,安装和配置 Linux 或 FreeBSD 上的 RDMA 包含以下步骤:请参阅相应 RDMA 驱动程序压缩包内的自述文件,了解完整详细信息。
基于英特尔以太网 800 系列的设备,在受支持的 Windows 或 Linux 主机上支持 Linux VF 下的 RDMA。有关如何在 Linux VF 中加载和配置 RDMA 的更多信息,请参阅 Linux RDMA 驱动程序压缩包中的自述文件。
网络直接 (ND) 允许用户模式应用程序使用 RDMA 功能。
![]() |
注:用户模式应用程序可能具有诸如 Microsoft HPC 包或英特尔 MPI 库之类的先决条件,请参阅应用程序文档以了解详细信息。 |
英特尔® 以太网用户模式 RDMA 提供程序受 Microsoft Windows Server 2012 R2 及更高版本的支持。
按照以下步骤安装用户模式网络直接功能。
![]() | 注:如果 Windows 防火墙被禁用,或者您使用的是第三方防火墙,您将需要手动添加此规则。 |
RDMA 网络直接内核(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 兼容,以及多通道是否已启用:
et-SmbClientNetworkInterface
使用以下命令 PowerShell 命令检查网络直接是否已在操作系统中启用:
Get-NetOffloadGlobalSetting | 选择 NetworkDirect
使用 netstat 以确保每个具备 RDMA 功能的网络接口在端口 445 上有一个侦听器。(支持 RDMA 的 Windows 客户端操作系统可能不标明侦听器)。例如:
netstat.exe -xan | ? {$_ -match "445"}
要在连接到 VMSwitch 的虚拟适配器上启用 RDMA 功能,必须:
在某些情况下,可能会默认为禁用这些设置。您可以在英特尔 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 功能。要在英特尔以太网设备上启用 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
您可以使用 perfmon 或其他性能监控工具来监控和显示 RDMA 计数器和统计信息。参考 Microsoft 文档以了解更多细节。Register-IntelEthernetRDMACounterSet cmdlet 用于将特定设备的 RDMA 统计计数器注册到 perfmon。有关安装和使用英特尔以太网 cmdlet 的方法,请参阅使用 Windows PowerShell 进行配置。您可以使用以下 PowerShell 命令,为所有支持的设备注册 RDMA 统计信息:
Register-IntelEthernetRDMACounterSet
您可以使用以下 PowerShell cmdlet 注销 RDMA 统计信息:
Unregister-IntelEthernetRDMACounterSet
版权所有 (C) 2019 - 2023,英特尔公司。保留所有权利。
本软件和相关文档是英特尔的版权材料,您对这些材料的使用受到为您提供这些材料所基于的明确许可证(“许可证”)的控制。除非许可证另有规定,否则未经英特尔事先书面许可,不得使用、修改、复制、发布、分发、披露或传播本软件或相关文档。
本软件和相关文档按原样提供,没有任何明示或暗示的保证,许可证中明确声明的保证除外。
英特尔技术可能需要支持的硬件、软件或服务激活。
没有任何产品或组件是绝对安全的。
成本和结果可能会有所不同。
英特尔、英特尔标志和其他英特尔标识是英特尔公司或其子公司的商标。
*文中涉及的其它名称及商标属于各自所有者资产。