远程直接内存访问(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 | iw_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
版权所有 (C) 2019 - 2022,英特尔公司。保留所有权利。
英特尔公司对本文档中的错误和遗漏不负责任。英特尔公司对更新本文档中的信息不作任何承诺。
英特尔是英特尔公司在美国和/或其它国家(地区)的商标。
*文中涉及的其它名称及商标属于各自所有者资产。
本软件根据许可提供,仅允许按照许可条款使用或复制。本手册中的信息仅供参考,可能随时变更而不另行通知,并且不得将其视为英特尔公司的承诺。对于本文或提供的与本文有关的任何软件中可能出现的任何错误或不准确之处,英特尔公司概不承担任何责任或义务。除非许可证允许,在未获得英特尔公司明确的书面同意前提下,不得以任何形式或任何手段复制或传输本文档的任何部分,也不得将其存储到检索系统中。