远程直接内存访问(RDMA)允许网络设备与另一台系统的应用程序内存之间直接传送数据,并在某些网络环境中增加吞吐量和降低延迟。
主要的区别是 iWARP 通过 TCP 执行 RDMA,而 RoCEv2 则使用 UDP。
为了避免因丢弃的数据包导致的性能下降,在所有网络接口和交换机上启用链路级流量控制或优先级流量控制。
注意:
|
这些基本 Linux RDMA 安装说明适用于以下设备:
有关详细的安装和配置信息,请参阅支持 RDMA 的英特尔以太网设备的驱动程序压缩包内的 Linux RDMA 驱动程序 README 文件。
此示例特定于 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 的英特尔以太网设备的驱动程序压缩包内的 FreeBSD RDMA 驱动程序 README 文件。
网络直接 (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 兼容,以及多通道是否已启用:
Get-SmbClientNetworkInterface
使用以下命令 PowerShell 命令检查网络直接是否已在操作系统中启用:
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 功能。要在英特尔以太网设备上启用 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 直接是存储工作负载,因此基准测试的性能可能仅限于存储设备的速度,而不是被测试的网络接口。英特尔建议尽可能使用最快的存储,以对所测试的网络设备的真实功能进行测试。
测试说明:
版权所有 © 2019 - 2020 英特尔公司。保留所有权利。
英特尔公司对本文档中的错误和遗漏不负责任。英特尔公司对更新本文档中的信息不作任何承诺。
英特尔是英特尔公司在美国和/或其它国家(地区)的商标。
*文中涉及的其它名称及商标属于各自所有者资产。
本软件根据许可提供,仅允许按照许可条款使用或复制。本手册中的信息仅供参考,可能随时变更而不另行通知,并且不得将其视为英特尔公司的承诺。对于本文或提供的与本文有关的任何软件中可能出现的任何错误或不准确之处,英特尔公司概不承担任何责任或义务。除非许可证允许,在未获得英特尔公司明确的书面同意前提下,不得以任何形式或任何手段复制或传输本文档的任何部分,也不得将其存储到检索系统中。