Mit Remote Direct Memory Access (oder RDMA) kann ein Netzwerkgerät Daten direkt an den und von dem Anwendungsspeicher eines anderen Systems übertragen. In manchen Netzwerkumgebungen lässt sich dadurch der Durchsatz erhöhen und die Latenz verringern.
Der Hauptunterschied liegt darin, dass RDMA von iWARP über TCP und von RoCEv2 über UDP verarbeitet wird.
Um Leistungsabfall durch Paketverlust zu vermeiden, aktivieren Sie Flusssteuerung auf Verbindungsebene oder prioritäre Flusssteuerung auf allen Netzwerkschnittstellen und Switches.
HINWEISE:
|
Diese grundlegende Linux-RDMA-Installationsanleitung gilt für folgende Geräte:
Informationen zur Installation und Konfiguration finden Sie in der README-Datei des Linux RDMA-Treibers in der Tarball-Datei des Treibers für Intel Ethernet-Geräte, die RDMA unterstützen.
Dieses Beispiel gilt für Red Hat* Enterprise Linux*. Die Details für Ihr Betriebssystem können unterschiedlich sein.
# tar zxf irdma-<x.x.x>.tar.gz
# cd irdma-<x.x.x>
# ./build.sh
# modprobe irdma
HINWEIS: Standardmäßig wird der irdma-Treiber im iWARP-Modus geladen. Er verwendet die DevLink-Schnittstelle zur Aktivierung von RoCEv2 pro Port. Zum Laden aller irdma-Ports im RoCEv2-Modus gehen Sie wie folgt vor:# 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
HINWEIS: Laden Sie die rdma-core-Version herunter, die mit der Version der libirdma-Patchdatei übereinstimmt, die im Treiber enthalten war. Beispielsweise benötigt libirdma-27.0.patch 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
RDMA-Treiber für FreeBSD sind für die folgende Gerätereihen verfügbar:
Gerät | Name des Basis-Treibers | Name des RDMA-Treibers | Unterstützte Protokolle |
Intel® Ethernet der 800er Reihe | ice | irdma | RoCEv21, iWARP |
Intel® Ethernet der X722er Reihe | ixl | iw_ixl | iWARP |
1Eingeschränkte Unterstützung; nur für Funktionstests. DCB und prioritäre Flusssteuerung (Priority Flow Control, PFC) werden derzeit nicht unterstützt.
Die folgenden Anweisungen beschreiben die grundlegende FreeBSD RDMA-Installation für jede Gerätereihe. Detaillierte Installations- und Konfigurationsinformationen finden Sie in der README-Datei in der Tarball-Datei des FreeBSD RDMA-Treibers.
Intel® Ethernet der 800er Reihe:
# tar -xf ice-<version>.tar.gz
# tar -xf irdma-<version>.tar.gz
# cd ice-<version>/ directory
# make
# make install
# cd irdma-<version>/src
# make clean
# make ICE_DIR=$PATH_TO_ICE/ice-<version>/
# make install
HINWEIS: Standardmäßig wird der irdma-Treiber im iWARP-Modus geladen. Zum Laden der irdma-Ports im RoCEv2-Modus fügen Sie folgende Zeile zu /boot/loader.conf hinzu (wo <port> die Schnittstelle ist, auf der der RoCEv2-Modus aktiviert wird und dann neu gestartet wird):dev.irdma<port>.roce_enable=1 Beispielsweise für die Aktivierung des RoCEv2-Modus auf ice1: dev.irdma1.roce_enable=1 |
# sysctl dev.ice.<interface_num>.fc=3
Intel® Ethernet der X722er Reihe:
# 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
Über Network Direct (ND) erhalten Benutzermodusanwendungen Zugriff auf RDMA-Funktionen.
HINWEIS: Benutzermodusanwendungen setzten möglicherweise Komponenten wie Microsoft* HPC Pack oder Intel MPI Library voraus. Weitere Einzelheiten finden Sie in der Dokumentation zu Ihrer Anwendung. |
Der Intel® Ethernet User Mode RDMA Provider wird auf Microsoft Windows Server 2012 R2 und höher unterstützt.
Zur Installation der Network Direct-Funktionen für den Benutzermodus gehen Sie wie folgt vor:
HINWEIS: Falls Windows*-Firewall deaktiviert ist oder Sie eine Firewall eines Drittanbieters verwenden, müssen Sie diese Regel manuell hinzufügen. |
Die RDMA Network Direct Kernel-(NDK-)Funktionalität ist in den Basisnetzwerktreibern von Intel enthalten. Es müssen zu diesem Zweck keine weiteren Funktionen installiert werden.
Wenn Sie die NDK RDMA-Funktionalität in Subnetzen freischalten möchten, müssen Sie bei der Installation der Basistreiber im Bildschirm „RDMA Configuration Options“ (RDMA Konfigurationsoptionen) die Option „Enable RDMA routing across IP Subnets“ (RDMA-Routing in IP-Subnetzen aktivieren) wählen.
Um Leistungsabfall durch Paketverlust zu vermeiden, aktivieren Sie die prioritäre Flusssteuerung (PFC) oder die Linklevel-Durchflusssteuerung auf allen Netzwerkschnittstellen und Switches.
HINWEIS: Wenn Sie bei Systemen, die unter einem Microsoft* Windows Server*-Betriebssystem ausgeführt werden, die *QoS/Priorität-Durchflusssteuerung aktivieren, wird die Linklevel-Durchflusssteuerung deaktiviert. |
Verwenden Sie die folgenden PowerShell*-Befehle, um PFC auf Microsoft Windows Server zu aktivieren:
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"
Mit dem folgenden Microsoft PowerShell-Befehl können Sie überprüfen, ob RDMA auf den Netzwerkschnittstellen aktiviert ist:
Get-NetAdapterRDMA
Mit dem folgenden PowerShell-Befehl können Sie überprüfen, ob die Netzwerkschnittstellen RDMA unterstützen und Multichannel aktiviert ist:
Get-SmbClientNetworkInterface
Mit dem folgenden PowerShell-Befehl können Sie überprüfen, ob Network Direct im Betriebssystem aktiviert ist:
Get-NetOffloadGlobalSetting | Select NetworkDirect
Mit netstat können Sie sicherstellen, dass jede RDMA-fähige Netzwerkschnittstelle an Port 445 einen Listener hat (Windows* Client-Betriebssysteme mit RDMA-Unterstützung posten unter Umständen keine Listener). Zum Beispiel:
netstat.exe -xan | ? {$_ -match "445"}
Um die RDMA-Funktionalität auf mit einem VMSwitch verbundenen virtuellen Adaptern zu aktivieren, müssen die erweiterten Eigenschaften SRIOV (Single Root IO Virtualization) und VMQ (Virtual Machine Queues) auf jedem Porttreiber aktiviert sein. Es kann vorkommen, dass diese Einstellungen standardmäßig deaktiviert sind. Diese Optionen können im Einstellungsbereich des Adapters von Intel(R) PROSet ACU oder in der Registerkarte „Erweitert“ der Adaptereigenschaften manuell konfiguriert werden. Alternativ können die folgenden PowerShell-Befehle verwendet werden:
Set-NetAdapterAdvancedProperty -Name <nic_name> -RegistryKeyword *SRIOV -RegistryValue 1
Set-NetAdapterAdvancedProperty -Name <nic_name> -RegistryKeyword *VMQ -RegistryValue 1
Im NDK-Modus 3 können Windows*-Komponenten im Kernelmodus auf RDMA-Funktionen in Hyper-V-Gastpartitionen zugreifen. So wird NDK-Modus 3 auf einem Intel Ethernetgerät aktiviert:
New-VMSwitch -Name <Switchname> -NetAdapterName <Gerätename>
-EnableIov $true
Set-NetAdapterAdvancedProperty -Name <Gerätename> -RegistryKeyword RdmaMaxVfsEnabled -RegistryValue <Value: 0 - 32>
Get-NetAdapterRdma | Disable-NetAdapter
Get-NetAdapterRdma | Enable-NetAdapter
Add-VMNetworkAdapter -VMName <VM-Name> -VMNetworkAdapterName <Gerätename> -SwitchName <Switchname>
Set-VMNetworkAdapterRdma -VMName <VM-Name> -VMNetworkAdapterName <Gerätename> -RdmaWeight 100
Set-VMNetworkAdapter -VMName <VM-Name> -VMNetworkAdapterName <Gerätename> -IovWeight 100
Set-NetAdapterAdvancedProperty -Name <Gerätename> -RegistryKeyword RdmaVfEnabled -RegistryValue 1
Get-NetAdapterRdma | Enable-NetAdapterRdma
NDK ermöglicht die Verwendung von RDMA-Funktionen (wie SMB Direct Storage) durch Windows* Komponenten.
In diesem Abschnitt wird die empfohlene Methode beschrieben, um die Funktionalität und Leistung von RDMA für Intel Ethernet auf Microsoft Windows-Betriebssystemen zu testen.
SMB Direct ist eine Speicherworkload. Daher kann es vorkommen, dass die Leistung der Benchmark auf die Geschwindigkeit des Speichergeräts anstatt der getesteten Netzwerkschnittstelle begrenzt ist. Intel empfiehlt die Verwendung des schnellstmöglichen Speichersystems, um die echte Leistungsfähigkeit der untersuchten Netzwerkgeräte zu testen.
Testanleitung:
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
Copyright (C) 2019 - 2021, Intel Corporation. Alle Rechte vorbehalten.
Intel Corporation übernimmt keine Verantwortung für Fehler oder Auslassungen in diesem Dokument. Außerdem macht Intel keinerlei Zusagen, dessen Inhalt zu aktualisieren.
Intel ist eine Marke der Intel Corporation in den USA und/oder anderen Ländern.
*Andere Marken oder Produktnamen sind Eigentum der jeweiligen Inhaber.
Diese Software wird unter Lizenz bereitgestellt und darf nur unter Beachtung der Bestimmungen dieser Lizenz genutzt oder kopiert werden. Die Informationen in diesem Dokument dienen nur der Information. Sie können ohne Vorankündigung geändert werden und sind nicht als Zusage oder verpflichtende Aussage seitens der Intel Corporation zu verstehen. Die Intel Corporation übernimmt keine Verantwortung oder Haftung für Fehler oder Ungenauigkeiten in diesem Dokument oder jeglicher Software, die in Zusammenhang mit diesem Dokument bereitgestellt wird. Sofern nicht durch eine solche Lizenz gestattet, darf kein Teil dieses Dokuments ohne ausdrückliche schriftliche Zustimmung der Intel Corporation reproduziert, in einem Datenabfragesystem gespeichert oder in beliebiger Form und auf beliebigem Weg übertragen werden.