El Acceso directo remoto a la memoria, o RDMA por sus siglas en inglés, permite que un dispositivo de red transfiera datos directamente a y desde la memoria de aplicaciones en otro sistema, aumentando el rendimiento y disminuyendo la latencia en ciertos entornos de red.
La diferencia principal es que iWARP realiza RDMA a través de TCP, mientras que RoCEv2 utiliza UDP.
Para evitar la degradación de rendimiento de los paquetes descartados, habilite el control de flujo o el control de flujo de prioridad en todas las interfaces de red y conmutadores.
NOTAS:
|
Estas sencillas instrucciones de instalación de RDMA de Linux se aplican a los siguientes dispositivos:
Para obtener información detallada de instalación y configuración, vea el archivo README del controlador RDMA de Linux en el archivo .tar del controlador para los dispositivos Ethernet Intel® que admiten RDMA.
Este ejemplo es específico para Red Hat* Enterprise Linux*. Las especificaciones de su sistema operativo pueden ser diferentes.
# tar zxf irdma-<x.x.x>.tar.gz
# cd irdma-<x.x.x>
# ./build.sh
# modprobe irdma
NOTA: De forma predeterminada, el controlador irdma se carga en modo iWARP. Utiliza la interfaz de devlink para habilitar RoCEv2 por puerto. Para cargar todos los puertos irdma en modo RoCEv2, use lo siguiente:# 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: Descargue la versión de rdma-core que coincida con la versión del archivo de parche libirdma incluido con el controlador. Por ejemplo, libirdma-27.0.patch requiere rdma-core-27.0.tar.gz . |
# tar -xzvf rdma-core-<versión>.tar.gz
# cd rdma-core-<versión>
# patch -p2 <<ruta-a-la-compilación-del-componente>/libirdma-<versión>.patch
# cd ..
# chgrp -R root <ruta-a-rdma-core>/redhat
# tar -zcvf rdma-core-<versión>.tgz rdma-core-<versión>
# mkdir -p ~/rpmbuild/SOURCES
# mkdir -p ~/rpmbuild/SPECS
# cp rdma-core-<versión>.tgz ~/rpmbuild/SOURCES/
# cd ~/rpmbuild/SOURCES
# tar -xzvf rdma-core-<versión>.tgz
# cp ~/rpmbuild/SOURCES/rdma-core-<versión>/redhat/rdma-core.spec ~/rpmbuild/SPECS/
# cd ~/rpmbuild/SPECS/
# rpmbuild -ba rdma-core.spec
# cd ~/rpmbuild/RPMS/x86_64
# yum install *<versión>*.rpm
Los dispositivos basados en Ethernet Intel serie 800 son compatibles con RDMA en un Linux VF en hosts compatibles Windows o Linux. Consulte el archivo LÉAME dentro del paquete tarball del controlador RDMA de Linux para obtener más información sobre cómo cargar y configurar RDMA en un Linux VF.
Los controladores de RDMA FreeBSD están disponibles para la siguiente serie de dispositivos:
Dispositivo | Nombre del controlador base | Nombre del controlador de RDMA | Protocolos compatibles |
---|---|---|---|
Ethernet Intel® serie 800 | ice | irdma | RoCEv2, iWARP |
Ethernet Intel® serie X722 | ixl | iw_ixl | iWARP |
Las siguientes instrucciones describen la instalación básica de FreeBSD RDMA para cada serie de dispositivo. Para una información de instalación y configuración más detallada, vea el archivo README del tarball del controlador FreeBSD RDMA.
Ethernet Intel® serie 800:
# 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
NOTA: Por defecto, el controlador irdma carga en modo iWARP. Para cargar los puertos irdma en modo RoCEv2, añada la siguiente línea a /boot/loader.conf , donde <port> es la interfaz en la cual activar el modo RoCEv2, y después reinicie:dev.irdma<port>.roce_enable=1 Por ejemplo, para habilitar el modo RoCEv2 en ice1: dev.irdma1.roce_enable=1 |
# sysctl dev.ice.<interface_num>.fc=3
Ethernet Intel® serie X722:
# 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.<núm_interfaz>.fc=3
Network Direct (ND) permite que las aplicaciones de modo de usuario utilicen características de RDMA.
NOTA: Las aplicaciones en modo de usuario pueden tener requisitos previos, como Microsoft HPC Pack o Intel MPI Library; consulte la documentación de su aplicación para obtener más detalles. |
El proveedor de RDMA en modo de usuario Ethernet Intel® es compatible con Microsoft Windows Server 2012 R2 y posteriores.
Siga los pasos indicados más abajo para instalar las características en modo de usuario de Network Direct.
NOTA: Si el firewall de Windows está deshabilitado o utiliza un firewall de terceros, tendrá que añadir esta regla manualmente. |
La funcionalidad RDMA Network Direct Kernel (NDK) está incluida en los controladores de red base de Intel y no requiere la instalación de características adicionales.
Si desea habilitar la característica RDMA de NDK a través de subredes, tendrá que seleccionar "Habilitar enrutamiento de RDMA a través de subredes IP" en la pantalla Opciones de configuración de RDMA durante la instalación del controlador base.
Para evitar la degradación de rendimiento de los paquetes descartados, habilite el control de flujo de prioridad (PFC) o el control de flujo de nivel de enlace en todas las interfaces y conmutadores de red.
NOTA: en sistemas que ejecutan el sistema operativo Microsoft* Windows Server*, la habilitación de *QoS/control de flujo de prioridad deshabilitará el control de flujo a nivel de enlace. |
Utilice los siguientes comandos PowerShell* para habilitar PFC en 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"
Puede comprobar que RDMA esté habilitado en las interfaces de red mediante el siguiente comando de Microsoft PowerShell:
Get-NetAdapterRDMA
Use el siguiente comando de PowerShell para comprobar si las interfaces de red son compatibles con RDMA y si está habilitado el multicanal:
Get-SmbClientNetworkInterface
Use el siguiente comando de PowerShell para comprobar si Network Direct está habilitado en el sistema operativo:
Get-NetOffloadGlobalSetting | Seleccionar NetworkDirect
Use netstat para asegurarse de que cada interfaz de red compatible con RDMA tiene un receptor en el puerto 445 (los sistemas operativos cliente de Windows que admiten RDMA no pueden publicar escuchas). Por ejemplo:
netstat.exe -xan | ? {$_ -match "445"}
Para habilitar la funcionalidad de RDMA en adaptadores virtuales conectados a un VMSwitch, las propiedades avanzadas SRIOV (Virtualización de E/S de raíz única) y VMQ (Colas de máquina virtual) deben estar habilitadas en cada de puerto. En determinadas circunstancias, estas configuraciones pueden estar deshabilitadas de manera predeterminada. Estas opciones se pueden establecer manualmente en el panel de configuración de adaptador de Intel PROSet ACU, en la pestaña Avanzadas del cuadro de diálogo de propiedades del adaptador, o con los siguientes comandos PowerShell:
Set-NetAdapterAdvancedProperty -Name <nombre_nic> -RegistryKeyword *SRIOV -RegistryValue 1
Set-NetAdapterAdvancedProperty -Name <nombre_nic> -RegistryKeyword *VMQ -RegistryValue 1
El modo NDK 3 permite que los componentes de Windows en modo de kernel utilicen las características de RDMA dentro de las particiones de invitados de Hyper-V. Para habilitar el modo NDK 3 en un dispositivo Ethernet Intel, haga lo siguiente:
New-VMSwitch -Name <nombre_conmutador> -NetAdapterName <nombre_dispositivo>
-EnableIov $true
Set-NetAdapterAdvancedProperty -Name <device_name> -RegistryKeyword RdmaMaxVfsEnabled -RegistryValue <Value: 0 - 32>
Get-NetAdapterRdma | Disable-NetAdapter
Get-NetAdapterRdma | Enable-NetAdapter
Add-VMNetworkAdapter -VMName <nombre_vm> -VMNetworkAdapterName <nombre_dispositivo> -SwitchName <nombre_conmutador>
Set-VMNetworkAdapterRdma -VMName <nombre_vm> -VMNetworkAdapterName <nombre_dispositivo> -RdmaWeight 100
Set-VMNetworkAdapter -VMName <nombre_vm> -VMNetworkAdapterName <nombre_dispositivo> -IovWeight 100
Set-NetAdapterAdvancedProperty -Name <nombre_dispositivo> -RegistryKeyword RdmaVfEnabled -RegistryValue 1
Get-NetAdapterRdma | Enable-NetAdapterRdma
NDK permite que los componentes de Windows (como el almacenamiento SMB Direct) utilicen características de RDMA.
Esta sección describe una forma recomendada de probar RDMA para la funcionalidad y el rendimiento de Ethernet Intel en los sistemas operativos Microsoft Windows.
Tenga en cuenta que, dado que SMB Direct es una carga de trabajo de almacenamiento, el rendimiento de la prueba de referencia puede estar limitado a la velocidad del dispositivo de almacenamiento en lugar de a la interfaz de red que se está probando. Intel recomienda utilizar el almacenamiento más rápido posible para probar las prestaciones reales de los dispositivos de red sometidos a prueba.
Instrucciones de prueba:
New-SmbShare -Name <nombre_rec_compartido_SMB> -Path <ruta_archivo_rec_compartido_SMB> -FullAccess <nombre_dominio>\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 - 2022, Intel Corporation. Todos los derechos reservados.
Intel Corporation no asume ninguna responsabilidad por los errores y omisiones en esta guía. Del mismo modo, Intel no se compromete de ninguna forma a actualizar la información aquí contenida.
Intel es una marca comercial de Intel Corporation en los Estados Unidos y en otros países.
* Otros nombres y marcas pueden ser reclamados como propiedad de terceras partes.
Este software se proporciona bajo licencia y sólo se puede utilizar o copiar según los términos de la licencia. La información de este manual se ofrece sólo como referencia, está sujeta a cambios sin previo aviso y no debe interpretarse como un compromiso por parte de Intel Corporation. Intel Corporation no asumirá responsabilidad alguna por los errores o inexactitudes que aparezcan en este documento o en cualquier software que pueda proporcionarse en relación con este documento. Excepto tal y como lo permite dicha licencia, ninguna parte de este documento podrá ser reproducida, almacenada en un sistema de recuperación o transmitida en ningún formato o por ningún medio sin el consentimiento escrito expreso de Intel Corporation.