RDMA (Remote Direct Memory Access) consente a un dispositivo di rete di trasferire dati direttamente dalla memoria di un'applicazione di un altro sistema e viceversa, aumentando il throughput e riducendo la latenza in determinati ambienti di rete.
La differenza principale è che iWARP esegue RDMA su TCP, mentre RoCEv2 usa UDP.
Per evitare il degrado delle prestazioni causato dai pacchetti ignorati, abilitare il controllo del flusso a livello di collegamento o il controllo del flusso di priorità su tutti gli switch e le interfacce di rete.
NOTE:
|
Le seguenti istruzioni di installazione di Linux RDMA di base sono valide per i seguenti dispositivi:
Per informazioni di installazione e configurazione dettagliate, consultare il file README del driver Linux RDMA nel tarball dei driver per i dispositivi Ethernet Intel che supportano RDMA.
Questo esempio è specifico per RHEL. Le specifiche del sistema operativo potrebbero essere diverse.
# 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
Le seguenti istruzioni di installazione di FreeBSD RDMA di base sono valide per i seguenti dispositivi:
# 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
Per informazioni di installazione e configurazione dettagliate, consultare il file README del driver FreeBSD RDMA nel tarball dei driver per i dispositivi Ethernet Intel che supportano RDMA.
Network Direct (ND) consente alle applicazioni in modalità utente di utilizzare le funzioni di RDMA.
NOTA: le applicazioni in modalità utente potrebbero avere dei prerequisiti come il pacchetto Microsoft HPC o Intel MPI Library. Per ulteriori dettagli, fare riferimento alla documentazione dell'applicazione. |
Intel® Ethernet User Mode RDMA Provider è supportato su Microsoft* Windows Server* 2012 R2 o versione successiva.
Seguire questi passaggi per installare le funzioni di Network Direct in modalità utente.
NOTA: se Windows Firewall è disabilitato o si sta utilizzando un firewall di terze parti, la regola dovrà essere aggiunta manualmente. |
La funzionalità RDMA Network Direct Kernel (NDK) è inclusa nei driver di rete di base Intel e non richiede che siano installate funzioni aggiuntive.
Se si vuole che la funzionalità RDMA di NDK sia utilizzata in tutte le subnet, è necessario selezionare "Abilitare il routing RDMA su subnet IP" nella schermata Opzioni di configurazione RDMA durante l'installazione dei driver di base.
Per evitare il degrado delle prestazioni causato dai pacchetti ignorati, abilitare il il PFC (Priority Flow Control) o il controllo del flusso a livello di collegamento su tutti gli switch e le interfacce di rete.
NOTA: nei sistemi in cui gira il sistema operativo Microsoft Windows Server, l'abilitazione del controllo del flusso di priorità/*QoS disabilita il controllo del flusso di livello del collegamento. |
Utilizzare i seguenti comandi di PowerShell per abilitare il PFC su un sistema operativo Microsoft Windows Server:
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"
È possibile controllare che RDMA sia abilitato sulle interfacce di rete utilizzando il seguente comando Microsoft* PowerShell*:
Get-NetAdapterRDMA
Utilizzare il seguente comando PowerShell per controllare se le interfacce di rete sono compatibili con RDMA e se il multicanale è abilitato:
Get-SmbClientNetworkInterface
Utilizzare il seguente comando PowerShell per controllare se Network Direct è abilitato nel sistema operativo:
Get-NetOffloadGlobalSetting | Select NetworkDirect
Utilizzare netstat per accertarsi che ogni interfaccia di rete compatibile con RDMA abbia un ascoltatore alla porta 445 (i sistemi operativi dei client Windows che supportano RDMA potrebbero non pubblicare ascoltatori). Ad esempio:
netstat.exe -xan | ? {$_ -match "445"}
Per abilitare la funzionalità RDMA su schede di rete virtuali collegate a un VMSwitch, le proprietà avanzate SRIOV (Single Root IO Virtualization) e VMQ (Virtual Machine Queues) devono essere abilitate su ogni porta. In determinate circostanze, queste impostazioni potrebbero essere disabilitate per impostazione predefinita. Queste opzioni possono essere impostate manualmente nella scheda delle impostazioni avanzate della finestra di dialogo delle proprietà della scheda di rete oppure utilizzando i seguenti comandi Powershell:
Set-NetAdapterAdvancedProperty -Name <nic_name> -RegistryKeyword *SRIOV -RegistryValue 1
Set-NetAdapterAdvancedProperty -Name <nic_name> -RegistryKeyword *VMQ -RegistryValue 1
La modalità 3 di NDK consente ai componenti Windows in modalità kernel di utilizzare le funzioni RDMA all'interno delle partizioni guest Hyper-V. Per abilitare la modalità 3 di NDK su un dispositivo Ethernet Intel, procedere come indicato di seguito:
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 consente ai componenti Windows (come lo storage SMB Direct) di utilizzare le funzioni di RDMA.
Questa sezione descrive la procedura consigliata per testare il funzionamento e le prestazioni di RDMA per Ethernet Intel sui sistemi operativi Microsoft* Windows*.
Notare che, poiché SMB Direct è un carico di lavoro di storage, le prestazioni del benchmark potrebbero essere limitate dalla velocità del dispositivo di archiviazione piuttosto che dall'interfaccia di rete oggetto del test. Intel consiglia di utilizzare il dispositivo di archiviazione più veloce disponibile al fine di verificare le capacità effettive dei dispositivi di rete testati.
Istruzioni per il test:
Copyright (C) 2019 - 2020, Intel Corporation. Tutti i diritti riservati.
Intel Corporation non si assume alcuna responsabilità per eventuali errori o omissioni presenti in questo documento. Inoltre, Intel non si assume alcun impegno di aggiornare le informazioni ivi contenute.
Intel è un marchio di Intel Corporation negli Stati Uniti e in altri paesi.
*Altri marchi e altre denominazioni potrebbero essere rivendicati da terzi.
Il presente software viene fornito con una licenza e può soltanto essere utilizzato o copiato in base ai termini della licenza. Il contenuto di questo manuale viene fornito esclusivamente per uso informativo, è soggetto a cambiamenti senza preavviso e non va interpretato come impegno alcuno da parte di Intel Corporation. Intel Corporation non si assume alcuna responsabilità per eventuali errori o imprecisioni presenti in questo documento o nel software che potrebbe essere fornito insieme al documento. Fatta eccezione per quanto previsto da tale licenza, nessuna parte di questo documento può essere riprodotta, archiviata in un sistema di registrazione o trasmessa in alcuna forma o alcun mezzo senza il preventivo consenso scritto di Intel Corporation.