O Acesso Remoto Direto à Memória (RDMA — Remote Direct Memory Access) permite que um dispositivo de rede transfira dados diretamente para e da memória de aplicativos existentes em outro sistema, aumentando a taxa de transferência e reduzindo a latência em determinados ambientes em rede.
A grande diferença é que o iWARP executa o RDMA via TCP, enquanto o RoCEv2 utiliza o UDP.
Para evitar degradação do desempenho por perda de pacotes, ative o controle de fluxo no nível do link ou o controle de fluxo prioritário em todas as interfaces e comutadores de rede.
NOTAS:
|
Estas instruções básicas para instalação de RDMA no Linux são aplicáveis para os seguintes dispositivos:
Para obter informações detalhadas sobre instalação e configuração, consulte o arquivo README (leiame) do driver do RDMA para Linux, no tarball do driver para dispositivos Intel® Ethernet compatíveis com RDMA.
Este exemplo é específico para o Red Hat* Enterprise Linux*. As especificações do sistema operacional podem ser diferentes.
# tar zxf irdma-<x.x.x>.tar.gz
# cd irdma-<x.x.x>
# ./build.sh
# modprobe irdma
NOTA: Por padrão, o driver irdma é carregado no modo iWARP. Ele utiliza a interface devlink para habilitar RoCEv2 por porta. Para carregar todas as portas do irdma no modo RoCEv2, utilize o seguinte:# 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: Baixe a versão do rdma-core que corresponde à versão do arquivo de patch da libirdma incluído com o driver. Por exemplo, libirdma-27.0.patch requer rdma-core-27.0.tar.gz . |
# tar -xzvf rdma-core-<version>.tar.gz
# cd rdma-core-<version>
# patch -p2 <<caminho até o build do componente>/libirdma-<version>.patch
# cd ..
# chgrp -R root <caminho até o 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
Os drivers RDMA para FreeBSD estão disponíveis para as seguintes séries de dispositivos:
Dispositivo | Nome do driver básico | Nome do driver RDMA | Protocolos suportados |
Série 800 do Intel® Ethernet Controller | ice | irdma | RoCEv21, iWARP |
Série X722 do Intel® Ethernet Controller | ixl | iw_ixl | iWARP |
1Suporte limitado; apenas para testes funcionais. A DCB e o Controle de fluxo prioritário (PFC) não são suportados atualmente.
As instruções a seguir descrevem a instalação básica do RDMA FreeBSD para cada série de dispositivos. Para informações detalhadas sobre instalação e configuração, consulte o arquivo README (leiame) no tarball do driver RDMA FreeBSD.
Controlador Intel® Ethernet série 800:
# tar -xf ice-<version>.tar.gz
# tar -xf irdma-<version>.tar.gz
diretório # cd ice-<version>/
# make
# make install
# cd irdma-<version>/src
# make clean
# make ICE_DIR=$PATH_TO_ICE/ice-<version>/
# make install
NOTA: Por padrão, o driver irdma é carregado no modo iWARP. Para carregar portas irdma no modo RoCEv2, adicione a seguinte linha a /boot/loader.conf , onde <port> é a interface na qual habilitar o modo RoCEv2 e depois reiniciar:dev.irdma<port>.roce_enable=1 Por exemplo, para habilitar o modo RoCEv2 em ice1: dev.irdma1.roce_enable=1 |
# sysctl dev.ice.<interface_num>.fc=3
Controlador Intel® Ethernet série 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.<interface_num>.fc=3
O Network Direct (ND) permite que aplicativos no Modo Usuário utilizem recursos de RDMA.
NOTA: os aplicativos no Modo Usuário podem ter pré-requisitos, como o Microsoft HPC Pack ou a Intel® MPI Library — consulte a documentação de seu aplicativo para obter mais detalhes. |
O recurso Provedor de RDMA em Modo de Usuário Ethernet Intel® é compatível com o Microsoft* Windows Server* 2012 R2 e posterior.
Para instalar os recursos do Network Direct (ND) do Modo Usuário, siga as etapas abaixo.
NOTA: se o Firewall do Windows estiver desabilitado ou se você estiver usando um firewall de terceiros, será necessário adicionar manualmente esta regra. |
A funcionalidade RDMA Network Direct Kernel (NDK) está incluída nos drivers de rede básicos da Intel e não exige instalação de quaisquer recursos adicionais.
Para permitir a funcionalidade RDMA do NDK através das sub-redes, selecione "Habilitar o roteamento do RDMA através das sub-redes de IP" na tela Opções de configuração do RDMA, durante a instalação do driver básico.
Para evitar a queda do desempenho com perda de pacotes, ative o controle de fluxo prioritário (PFC) ou o controle de fluxo no nível do link em todas as interfaces e comutadores de rede.
NOTA:em sistemas executando o sistema operacional Microsoft* Windows Server*, habilitar o *QoS/controle de fluxo de prioridade desabilitará o controle de fluxo no nível do link. |
Use os seguintes comandos do PowerShell para habilitar o PFC em um sistema operacional 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"
Para verificar se o RDMA está habilitado nas interfaces de rede, emita o seguinte comando do Microsoft PowerShell:
Get-NetAdapterRDMA
Para saber se as interfaces de rede indicam capacidade para RDMA e se o multicanal está habilitado, emita o seguinte comando do PowerShell:
Get-SmbClientNetworkInterface
Para verificar se o Network Direct (ND) está habilitado no sistema operacional, emita o seguinte comando do PowerShell:
Get-NetOffloadGlobalSetting | Selecione NetworkDirect
Use netstat para se certificar de que cada interface de rede com capacidade para o RDMA tem um ouvinte na porta 445 (os SOs Cliente Windows compatíveis com RDMA podem não postar ouvintes). Por exemplo:
netstat.exe -xan | ? {$_ -match "445"}
Para habilitar a funcionalidade RDMA em adaptador(es) virtual(is) conectado(s) a um VMSwitch (comutador de máquina virtual), as propriedades avançadas de SRIOV (Single Root IO Virtualization — Virtualização de E/S de raiz única) e de VMQ (Virtual Machine Queues - Filas de Máquina Virtual) devem estar habilitadas em cada porta. Em certas circunstâncias, essas configurações podem ser desabilitadas, como padrão. É possível definir essas opções manualmente na guia Avançado, da caixa de diálogo de Propriedades do adaptador, ou emitir os seguintes comandos do Powershell:
Set-NetAdapterAdvancedProperty -Name <nic_name> -RegistryKeyword *SRIOV -RegistryValue 1
Set-NetAdapterAdvancedProperty -Name <nic_name> -RegistryKeyword *VMQ -RegistryValue 1
O Modo NDK 3 permite que os componentes do Windows no modo kernel usem os recursos do RDMA dentro das partições convidadas do Hyper-V. Para habilitar o Modo NDK 3 em um dispositivo Intel Ethernet, faça o seguinte:
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
O NDK permite que componentes do Windows (como o armazenamento do SMB Direct) utilizem recursos do RDMA.
Esta seção descreve uma recomendação para testar a funcionalidade e o desempenho do RDMA para Intel® Ethernet nos sistemas operacionais Microsoft Windows.
Convém observar que, como o SMB Direct é uma carga de trabalho de armazenamento, o desempenho do parâmetro de comparação pode estar limitado à velocidade do dispositivo de armazenamento, em vez da interface de rede submetida ao teste. A Intel recomenda usar o armazenamento mais veloz possível para testar as reais capacidades do(s) dispositivo(s) de rede sob teste.
Instruções do teste:
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. Todos os direitos reservados.
A Intel Corporation não assume nenhuma responsabilidade por erros ou omissões neste documento. A Intel também não assume nenhum compromisso de atualizar as informações aqui contidas.
Intel é marca comercial da Intel Corporation nos EUA e/ou em outros países.
*Outras marcas e nomes podem ser propriedade de outras empresas.
Este software é fornecido sob licença e só pode ser usado ou copiado de acordo com os termos da licença. As informações contidas neste manual são fornecidas apenas para fins informativos, estão sujeitas a alterações sem aviso-prévio e não devem ser interpretadas como compromisso da Intel Corporation. A Intel Corporation não assume nenhuma responsabilidade por quaisquer erros ou imprecisões que possam aparecer neste documento ou em qualquer software que possa ser fornecido em associação com este documento. Exceto conforme permitido por tal licença, nenhuma parte deste documento pode ser reproduzida, armazenada em um sistema de recuperação nem transmitida por qualquer meio sem a permissão expressa por escrito da Intel Corporation.