Ir para o conteúdo

Como faço para comparar o throughput de rede entre instâncias Linux do Amazon EC2 na mesma VPC?

8 minuto de leitura
0

Quero medir a largura de banda da rede entre instâncias Linux do Amazon Elastic Compute Cloud (Amazon EC2) na mesma Amazon Virtual Private Cloud (Amazon VPC).

Resolução

Defina o tipo, o tamanho e a configuração da instância a serem usados para testar o throughput da rede

Quando as instâncias estão na mesma VPC, vários fatores podem causar diferenças significativas no desempenho da rede entre diferentes ambientes de nuvem. É uma prática recomendada avaliar e basear regularmente o desempenho da rede do seu ambiente para melhorar o desempenho das aplicações. Os testes de desempenho de rede fornecem informações valiosas para determinar os melhores tipos, tamanhos e configurações de instâncias do EC2 para suas necessidades.

Modifique suas instâncias para melhorar o desempenho da rede

Mantenha as instâncias próximas

Certifique-se de que suas instâncias estejam próximas. As instâncias fisicamente mais próximas oferecem melhor desempenho. Instâncias mais distantes umas das outras podem causar latência na rede. As instâncias na mesma zona de disponibilidade ou região AWS têm melhor throughput de rede do que as instâncias do EC2 em diferentes zonas de disponibilidade ou regiões. Nos cenários a seguir, as instâncias estão cada vez mais distantes umas das outras:

  • Instâncias na mesma zona de disponibilidade na mesma região
  • Instâncias em diferentes zonas de disponibilidade na mesma região
  • Instâncias em diferentes regiões no mesmo continente
  • Instâncias em diferentes regiões em diferentes continentes

Aumente a MTU da sua instância

Aumente sua unidade máxima de transmissão (MTU). Todos os tipos de instância do EC2 oferecem suporte a 1500 MTU. Todas as instâncias da geração atual e as instâncias C3, G2, I2, M3 e R3 da geração anterior oferecem suporte a jumbo frames. Os frames jumbo permitem mais de 1.500 MTU. No entanto, as instâncias que oferecem suporte a jumbo frames podem ser limitadas a 1.500 MTU em determinados cenários.

Aumente o tamanho da sua instância

Aumente o tamanho da sua instância. Tamanhos de instância maiores para um tipo de instância geralmente oferecem melhor desempenho de rede do que instâncias menores do mesmo tipo.

Use o suporte de rede aperfeiçoada para Linux

Use a rede aprimorada. A rede aprimorada oferece maior desempenho e latência consistentemente menor entre as instâncias. Todas as instâncias da geração atual usam drivers Elastic Network Adaptor (ENA) ou ENA Express para ativar redes aprimoradas por padrão.

Os tipos de instância de gerações anteriores que suportam redes aprimoradas podem exigir configurações adicionais para usar redes aprimoradas.

Para obter mais informações, consulte Como faço para ativar e configurar a rede aprimorada em minhas instâncias do EC2?

Coloque suas instâncias em grupos de posicionamento

Execute instâncias interdependentes em um grupo de posicionamento para atender às necessidades de seu workload. A computação de alto desempenho (HPC) fornece largura de banda de bisseção completa e baixa latência e suporta velocidades de rede de até 100 GB, dependendo do tipo de instância.

Use um mecanismo de crédito de E/S de rede para alocar a largura de banda da rede

Para verificar se seu tipo de instância pode usar um crédito de rede de E/S para ultrapassar a largura de banda básica, consulte Especificações de rede.

Configure suas instâncias de teste

Conclua as seguintes etapas:

  1. Execute duas instâncias de teste do Linux.
  2. Verifique se as instâncias oferecem suporte a redes aperfeiçoadas do Linux e se estão na mesma VPC.
  3. (Opcional) Se você realizar testes de rede entre instâncias que não suportam jumbo frames, defina a MTU de rede na sua instância.
  4. Use SSH para se conectar às instâncias para verificar se é possível acessá-las.

Instale a ferramenta de avaliação comparativa de rede iperf3 em ambas as instâncias

Em algumas distribuições, como o Amazon Linux, a ferramenta iperf3 faz parte do repositório Extra Packages for Enterprise Linux (EPEL). Para ativar o repositório EPEL, consulte Como faço para ativar o repositório EPEL para minha instância do Amazon EC2 que executa CentOS, RHEL ou Amazon Linux?

Para obter mais informações sobre a ferramenta iperf3, consulte iperf2/iperf3 no site da ESNet.

Use SSH para se conectar às suas instâncias Linux. Em seguida, execute um dos seguintes comandos para que seu sistema operacional (SO) instale o iperf3.

Red Hat Enterprise Linux (RHEL) 9:

$ sudo dnf -y install iperf3

Debian ou Ubuntu:

$ sudo apt-get install -y iperf3

CentOS 6/7:

$ sudo yum -y install epel-release && yum -y install iperf3

Amazon Linux 2023:

$ sudo yum -y install iperf3

Teste o desempenho da rede TCP entre as instâncias

Por padrão, o iperf3 se comunica pela porta 5001 ao testar o desempenho do TCP. No entanto, é possível usar o switch -p para alterar a porta. Certifique-se de configurar seus grupos de segurança para permitir comunicação na porta que o iperf3 usa.

Para configurar a primeira instância como um servidor para escutar em uma porta TCP específica, execute o seguinte comando:

$ sudo iperf3 -s -p 5001

Observação: Se você optar por alterar a porta, substitua 5001 pelo número da porta.

Configure a segunda instância como cliente e, em seguida, execute um teste no servidor com os parâmetros relevantes. Por exemplo, o comando a seguir inicia um teste TCP na instância do servidor com 40 conexões paralelas:

$ sudo iperf3 -c 172.31.30.41 --parallel 40 -i 1 -t 2

A saída mostra o intervalo e os dados que são transferidos em cada stream do cliente e a largura de banda que cada stream do cliente usa. A saída iperf3 a seguir mostra os resultados do teste para duas instâncias Linux c5n.18xlarge do EC2 que são executadas em um grupo de posicionamento de cluster. A largura de banda total transmitida em todas as conexões é de 97,6 Gbps.

Exemplo de saída:

------------------------------------------------------------------------------------Client connecting to 172.31.30.41, TCP port 5001
TCP window size:  975 KByte (default)
------------------------------------------------------------------------------------
[  8] local 172.31.20.27 port 49498 connected with 172.31.30.41 port 5001
[ 38] local 172.31.20.27 port 49560 connected with 172.31.30.41 port 5001
[ 33] local 172.31.20.27 port 49548 connected with 172.31.30.41 port 5001
[ 40] local 172.31.20.27 port 49558 connected with 172.31.30.41 port 5001
[ 36] local 172.31.20.27 port 49554 connected with 172.31.30.41 port 5001
[ 39] local 172.31.20.27 port 49562 connected with 172.31.30.41 port 5001
...
[SUM]  0.0- 2.0 sec  22.8 GBytes  97.6 Gbits/sec

Teste o desempenho da rede UDP entre as instâncias

Por padrão, o iperf3 se comunica pela porta 5001 ao testar o desempenho do UDP. No entanto, é possível usar o switch -p para alterar a porta. Certifique-se de configurar seus grupos de segurança para permitir comunicação na porta que o iperf3 usa.

Observação: o padrão para UDP é 1 Mbps, a menos que você especifique uma largura de banda diferente.

Para configurar a primeira instância como um servidor para escutar em uma porta UDP específica, execute o seguinte comando:

$ sudo iperf3 -s -u -p 5001

Observação: Se você optar por alterar a porta, substitua 5001 pelo número da porta.

Configure uma segunda instância como cliente e, em seguida, execute um teste no servidor com os parâmetros desejados. O exemplo a seguir inicia um teste UDP em uma instância do servidor com o parâmetro -b definido como 5g. O parâmetro -b altera a largura de banda do padrão UDP de 1 Mbps para 5 Gbps. 5 Gbps é o desempenho máximo de rede que uma instância c5n.18xlarge pode fornecer para um único fluxo de tráfego em uma VPC:

$ sudo iperf3 -c 172.31.1.152 -u -b 5g

Observação: o UDP não tem conexão e não tem os algoritmos de controle de congestionamento que o TCP tem. Quando você testa com o iperf3, a largura de banda obtida do UDP pode ser menor do que a largura de banda obtida do TCP.

Exemplo de saída:

$ sudo iperf3 -c 172.31.30.41 -u -b 5g
------------------------------------------------------------------------------------
Client connecting to 172.31.30.41, UDP port 5001
Sending 1470 byte datagrams, IPG target: 2.35 us (kalman adjust)
UDP buffer size:  208 KByte (default)
------------------------------------------------------------------------------------
[  3] local 172.31.20.27 port 39022 connected with 172.31.30.41 port 5001
[ ID] Interval       Transfer     Bandwidth
[  3] 0.0-10.0 sec  5.82 GBytes  5.00 Gbits/sec
[  3] Sent 4251700 datagrams
[  3] Server Report:
[  3] 0.0-10.0 sec  5.82 GBytes  5.00 Gbits/sec   0.003 ms 1911/4251700 (0.045%)
[  3] 0.00-10.00 sec  1 datagrams received out-of-order

O exemplo de saída anterior mostra os seguintes valores:

  • Intervalo (tempo)
  • Quantidade de dados transferidos
  • Largura de banda alcançada
  • Jitter (o desvio no tempo para a chegada periódica dos gramas de dados)
  • Perda e total de datagramas UDP

Informações relacionadas

Teste de disco usando iperf3 no site da ESnet

Ajuste de rede no site da ESNet

Comparação de ferramentas de throughput no site da ESNet

Iperf2 no site do SourceForge

Perguntas frequentes sobre o iperf3 no site da ESnet

AWS OFICIALAtualizada há um ano