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 Intel® Ethernet che supportano RDMA.
Questo esempio si riferisce specificamente a Red Hat* Enterprise Linux*. 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
NOTA: per impostazione predefinita, il driver irdma è caricato in modalità iWARP. Usa l'interfaccia devlink per abilitare RoCEv2 per porta. Per caricare tutte le porte irdma in modalità RoCEv2, utilizzare le seguenti operazioni:# 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
NOTA: Scarica la versione rdma-core che corrisponde alla versione del file patch libirdma incluso nel driver. Per esempio, libirdma-27.0.patch richiede rdma-core-27.0.tar.gz . |
# tar -xzvf rdma-core-<versione>.tar.gz
# cd rdma-core-<versione>
# patch -p2 <<percorso_componente_build>/libirdma-<versione>.patch
# cd ..
# chgrp -R root <percorso_core_rdma>/redhat
# tar -zcvf rdma-core-<versione>.tgz rdma-core-<versione>
# mkdir -p ~/rpmbuild/SOURCES
# mkdir -p ~/rpmbuild/SPECS
# cp rdma-core-<versione>.tgz ~/rpmbuild/SOURCES/
# cd ~/rpmbuild/SOURCES
# tar -xzvf rdma-core-<versione>.tgz
# cp ~/rpmbuild/SOURCES/rdma-core-<versione>/redhat/rdma-core.spec ~/rpmbuild/SPECS/
# cd ~/rpmbuild/SPECS/
# rpmbuild -ba rdma-core.spec
# cd ~/rpmbuild/RPMS/x86_64
# yum install *<versione>*.rpm
I driver FreeBSD RDMA sono disponibili per le seguenti serie di dispositivi:
Dispositivo | Nome del driver di base | Nome del driver RDMA | Protocolli supportati |
Intel® Ethernet Controller serie 800 | ice | irdma | RoCEv21, iWARP |
Intel® Ethernet Controller serie X722 | ixl | iw_ixl | iWARP |
1Supporto limitato; esclusivamente per test funzionale. Il DCB e il controllo del flusso di priorità (PCF) non sono attualmente supportati.
Le seguenti istruzioni descrivono l'installazione del FreeBSD RDMA di base per ogni serie di dispositivi. Per informazioni dettagliate sull'installazione e la configurazione, consultare il file README nel tarball dei driver FreeBSD RDMA.
Intel® Ethernet Controller serie 800:
# tar -xf ice-<versione>.tar.gz
# tar -xf irdma-<versione>.tar.gz
# cd ice-<versione>/ directory
# make
# make install
# cd irdma-<versione>/src
# make clean
# make ICE_DIR=$PATH_TO_ICE/ice-<versione>/
# make install
NOTA: per impostazione predefinita, il driver irdma si carica in modalità iWARP. Per caricare le porte irdma in modalità RoCEv2, aggiungere la seguente riga a /boot/loader.conf , dove <porta> è l'interfaccia su cui abilitare la modalità RoCEv2, e quindi riavviare:dev.irdma<porta>.roce_enable=1 Ad esempio, per abilitare la modalità RoCEv2 su ice1: dev.irdma1.roce_enable=1 |
# sysctl dev.ice.<num_interfaccia>.fc=3
Intel® Ethernet Controller serie X722:
# tar -xf ixl-<version>.tar.gz
# tar -xf iw_ixl-<versione>.tar.gz
# cd ixl-<versione>/src directory
# make
# make install
# cd iw_ixl-<versione>/src
# make clean
# make IXL_DIR=$PATH_TO_IXL/ixl-<versione>/src
# make install
# sysctl dev.ixl.<num_interfaccia>.fc=3
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 <nome_nic> -RegistryKeyword *SRIOV -RegistryValue 1
Set-NetAdapterAdvancedProperty -Name <nome_nic> -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 Intel® Ethernet, procedere come indicato di seguito:
New-VMSwitch -Name <nome_switch> -NetAdapterName <nome_dispositivo>
-EnableIov $true
Set-NetAdapterAdvancedProperty -Name <nome_dispositivo> -RegistryKeyword RdmaMaxVfsEnabled -RegistryValue <valore: 0 - 32>
Get-NetAdapterRdma | Disable-NetAdapter
Get-NetAdapterRdma | Enable-NetAdapter
Add-VMNetworkAdapter -VMName <nome_vm> -VMNetworkAdapterName <nome_dispositivo> -SwitchName <nome_switch>
Set-VMNetworkAdapterRdma -VMName <nome_vm> -VMNetworkAdapterName <nome_dispositivo> -RdmaWeight 100
Set-VMNetworkAdapter -VMName <nome_vm> -VMNetworkAdapterName <nome_dispositivo> -IovWeight 100
Set-NetAdapterAdvancedProperty -Name <nome_dispositivo> -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 Intel® Ethernet 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:
New-SmbShare -Name <nome_condivisione_SMB> -Path <percorso_file_condivisione_SMB> -FullAccess <nome_dominio>\Administrator,Everyone
New-SmbShare -Name CondivisioneRAMDISK -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. 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.