A latência de rede é considerada um dos fatores para o sucesso do desempenho da sua aplicação, e no Azure existem algumas possibilidades para reduzi-la.
Latência de rede
Em resumo, é o tempo de resposta entre o momento em que você executa uma ação e o momento em que vê seu resultado
Como posso medir a latência da rede?
Eu utilizo o PsPing e para ambientes Linux você pode utilizar SocketPerf.
Em um cenário ideal, você deve ter acesso aos servidores que deseja testar, para poder realizar a conectividade cliente-servidor
Configurando o servidor
Abra o CMD ou o Powershell, navegue até a pasta onde você extraiu o PsPing e use o seguinte comando
psping -s 192.168.0.4:5000
Conectar do cliente ao servidor
Abra o CMD ou Powershell, navegue até a pasta onde você extraiu o PsPing e execute o seguinte comando
psping -l 8k -n 10000 -h 100 192.168.0.4:5000
Resposta no Cliente
Resposta no Servidor
Recursos do Azure
O Azure fornece alguns recursos para reduzir a latência para máquinas virtuais, conforme listado abaixo
- Accelerated networking
- Receive Side Scaling
- Proximity Placement Groups
Accelerated Networking
Utilizando Accelerated Networking a comunicação encaminhada para a VM vem diretamente da interface de rede da VM, e não passa mais pelo host e pelo switch virtual reduzindo a quantidade de saltos para chegar ao seu destino.
Cenários compatíveis
- Sistemas Operacionais
- Windows Server 2022
- Windows Server 2019 Standard/Datacenter
- Windows Server 2016 Standard/Datacenter
- Windows Server 2012 R2 Standard/Datacenter
- Ubuntu 14.04 com linux-azure kernel
- Ubuntu 16.04 ou posterior
- SLES12 SP3 ou posterior
- RHEL 7.4 ou posterior
- CentOS 7.4 ou posterior
- CoreOS Linux
- Debian “Stretch” com backports kernel
- Debian “Buster” ou posterior
- Oracle Linux 7.4 e posterior Red Hat Compatible Kernel (RHCK)
- Oracle Linux 7.5 e posterior com UEK version 5
- FreeBSD 10.4, 11.1 & 12.0 ou posterior
- Instâncias de VMs compatíveis
- A maioria dos tamanhos de instâncias de VMs de uso geral e otimizadas para computação com duas ou mais vCPUs dá suporte à Accelerated Networking
- Você pode consultar diretamente a lista de SKUs digitando o comando abaixo
az vm list-skus --location westus --all true --resource-type virtualMachines --query '[].{size:size, name:name, acceleratedNetworkingEnabled: capabilities[?name==`AcceleratedNetworkingEnabled`].value | [0]}' --output table
Habilitar Accelerated Networking
Habilitar Accelerated Networking com Powershell
$virtualMachine = "proximity-02"
$resourceGroup = "blog-vinicius-deschamps"
$nicName = "proximity-02521"
Stop-AzVM -ResourceGroup $resourceGroup -Name $virtualMachine
$nic = Get-AzNetworkInterface -ResourceGroup $resourceGroup -Name $nicName
$nic.EnableAcceleratedNetworking = $true
$nic | Set-AzNetworkInterface
Start-AzVM -ResourceGroup $resourceGroup -Name $virtualMachine
Receive side scaling
Se a sua máquina virtual não atender aos cenários compatíveis para habilitar a rede acelerada, você poderá habilitar o Receive Side Scaling e alcançar uma taxa de transferência máxima mais alta.
Porém, o cenário ideal seria ter esses dois recursos habilitados.
Cenários compatíveis
- Windows Server 2012 R2 ou posterior
- Linux kernels lançados a partir de Outubro de 2017
Verifique o receive side scaling na máquina virtual
Receive side scaling, pode ser desabilitado por padrão numa VM Windows no Azure, and sempre estará habilitado por padrão em uma VM Linux no Azure.
Para verificar na VM do Windows, vamos conectar-nos a ela e abrir o Powershell e digitar
Get-NetAdapterRss
Como você pode ver o RSS está definido como False no parâmetro Enabled, então para habilitá-lo digite o seguinte comando
IMPORTANTE: A Máquina Virtual perderá conectividade ao executar o comando abaixo
Get-NetAdapter | % {Enable-NetAdapterRss -Name $_.Name} # It will Enable the RSS
E esse comando não mostra nada na tela, então para verificar se funcionou ou não, use o Get-NetAdapterRss mais uma vez
Proximity Placement Groups
Quando você provisiona uma máquina virtual no Azure e escolhe uma região, a VM pode ser provisionada em qualquer datacenter dessa região e, se você precisar de baixa latência, poderá ter problemas.
O Proximity Placement Group permite que as máquinas virtuais sejam fisicamente localizadas entre si por meio de um agrupamento lógico que ajuda a reduzir a latência.
Ativar grupo de posicionamento por proximidade
No Azure Portal, utilize a busca e digite Proximity, então clique Proximity Placement Group
Now, click Add
Você precisa escolher Subscription, Resource Group, Region e Proximity Placement Group Name, então pressionar Review + create
Revise o resumo do Proximity Placement Group, e aperte Create
Uma vez que você receber Your deployment is complete, então você está pronto para alterar o Proximity Placement Group da sua máquina virtual
IMPORTANTE: Sua VM deve estar Stopped ou “Deallocated” para que você consiga alterar o Proximity Placement Group
Na sua Máquina Virtual, vá em Configuration, escolha o Proximity Placement Group e clique em Save
Testando
Eu tenho 3 máquinas virtuais, e 2 delas possuem Accelerated Networking, Receive Side Scaling e fazem parte do mesmo Proximity Placement Group.
Máquina Virtual | Accelerated Networking | Receive Side Scaling | Proximity Placement Group |
proximity-01 | Enabled | Enabled | proximity-eastus-group |
proximity-02 | Enabled | Enabled | proximity-eastus-group |
proximity-03 | Disabled | Disabled | – |
Segui as etapas mostradas anteriormente em “Como posso medir a latência de rede?” para realizar esses testes e a VM proximity-01 foi escolhida como nosso “servidor” e proximity-02 e proximity-03 como os clientes
proximity-02 para proximity-01
proximity-03 para proximity-01
A diferença de latência foi de 0.04 ms mas lembre-se que o pacote utilizado foi de 8192 bytes, o que significa que para um pacote maior você terá uma maior latência.
Se a sua aplicação tiver cargas de trabalho sensíveis à latência, você certamente deverá considerar habilitar e aplicar esses recursos às suas VMs.
Deixe um comentário