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

10 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).

Breve descrição

Estes são alguns fatores que podem afetar o desempenho da rede do Amazon EC2 quando as instâncias estiverem na mesma Amazon VPC:

  • A proximidade física das instâncias do EC2: as instâncias na mesma zona de disponibilidade estarem geograficamente mais próximas umas das outras. Nos cenários a seguir, as instâncias estão cada vez mais distantes umas das outras:
    Instâncias em diferentes zonas de disponibilidade na mesma região da AWS
    Instâncias em diferentes regiões no mesmo continente
    Instâncias em diferentes regiões em diferentes continentes
  • A unidade máxima de transmissão (MTU) da instância do EC2. A MTU de uma conexão de rede é o maior tamanho de pacote permitido (em bytes) que sua conexão pode transmitir. Todos os tipos de instâncias do EC2 oferecem suporte a 1500 MTU. Todas as instâncias do Amazon EC2 da geração atual oferecem suporte a frames jumbo. Além disso, as instâncias da geração anterior, C3, G2, I2, M3 e R3, também usam frames jumbo. Os frames jumbo permitem mais de 1500 MTU. No entanto, há cenários em que sua instância é limitada a 1500 MTU, mesmo com frames jumbo. Para obter mais informações, consulte frames jumbo (9001 MTU).
  • O tamanho da sua instância do EC2: 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. Para obter mais informações, consulte Tipos de instância do Amazon EC2.
  • Suporte de rede aprimorado do Amazon EC2 para Linux: o suporte aprimorado de rede pode afetar o desempenho de instâncias diferentes dos tipos de instância T2 e M3. Para obter mais informações, consulte Rede aprimorada no Linux. Para obter informações sobre a rede aprimorada em sua instância, consulte Como habilitar e configurar a rede aprimorada em minhas instâncias do EC2?
  • Suporte à computação de alto desempenho (HPC) do Amazon EC2 que usa grupos de posicionamento: a HPC fornece largura de banda de bisseção total e baixa latência. O HPC permite suporte para velocidades de rede de até 100 gigabits, dependendo do tipo de instância. Para analisar o desempenho da rede para cada tipo de instância, consulte Matriz de tipos de instância da AMI do Amazon Linux. Para obter mais informações, consulte Executar instâncias em um grupo de posicionamento.
  • A instância usa um mecanismo de crédito de E/S de rede para alocar a largura de banda da rede: instâncias designadas com um símbolo na coluna Desempenho da rede em Instâncias de uso geral - Desempenho da rede podem atingir o desempenho máximo designado. No entanto, essas instâncias usam um mecanismo de crédito de E/S de rede para alocar largura de banda às instâncias com base na utilização média da largura de banda. Portanto, o desempenho da rede varia nessas instâncias.

Por causa desses fatores, você pode experimentar 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 dos aplicativos. O teste do desempenho da rede fornece informações valiosas para determinar os tipos, tamanhos e configurações de instâncias do EC2 que melhor atendem às suas necessidades. Você pode executar testes de desempenho de rede em qualquer combinação de instâncias que você escolher.

Para obter mais informações, abra um caso no AWS Support e solicite especificações adicionais do desempenho da rede para os tipos específicos de instância em que você tem interesse.

Resolução

Antes de iniciar os testes de avaliação comparativa, execute e configure suas instâncias Linux do EC2:

  1. Execute duas instâncias do Linux nas quais você pode executar testes de desempenho de rede.
  2. Verifique se as instâncias oferecem suporte a redes aprimoradas do Linux e se estão na mesma Amazon VPC.
  3. (Opcional) Se você estiver realizando testes de rede entre instâncias que não oferecem suporte a frames jumbo, siga as etapas em Unidade máxima de transmissão de rede (MTU) para sua instância do EC2 para verificar e definir a MTU em sua instância.
  4. Conecte-se às instâncias para verificar se você pode acessá-las.

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

Em algumas distribuições, como o Amazon Linux, a ferramenta iperf 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?

Observação: o comando iperf se refere à versão 2.x. O comando iperf3 se refere à versão 3.x. Use a versão 2.x ao fazer avaliações comparativas de instâncias do EC2 com alto throughput, pois a versão 2.x fornece suporte a vários threads. Embora a versão 3.x também ofereça suporte a fluxos paralelos com o sinalizador -P, a versão 3.x tem um único thread e é limitada por uma única CPU. Por isso, a versão 3.x requer vários processos em execução, em paralelo, para gerar o throughput necessário em instâncias maiores do EC2. Para obter mais informações, consulte iperf2/iperf3 no site da ESNet.

Conecte-se às suas instâncias do Linux e execute os seguintes comandos para instalar o iperf.

Para instalar o iperf em hosts Linux RHEL 6, execute o seguinte comando:

# yum -y install  https://dl.fedoraproject.org/pub/archive/epel/6/x86_64/epel-release-6-8.noarch.rpm  && yum -y install iperf

Para instalar o iperf em hosts Linux RHEL 7, execute o seguinte comando:

# yum -y install  https://dl.fedoraproject.org/pub/epel/epel-release-latest-7.noarch.rpm  && yum -y install iperf

Para instalar o iperf nos hosts Debian/Ubuntu, execute o seguinte comando:

# apt-get install -y iperf

Para instalar o iperf nos hosts CentOS 6/7, execute o seguinte comando:

# yum -y install epel-release && yum -y install iperf

Amazon Linux 2023

Como o Amazon Linux 2023 (AL2023) não oferece suporte ao EPEL, você não pode baixar o utilitário iperf por meio do repositório EPEL. Para obter mais informações, consulte Pacotes extras para Enterprise Linux (EPEL).

No entanto, você pode baixar e instalar o iperf para AL2023 manualmente:

  1. Instale ferramentas de desenvolvimento e git:

    sudo yum groupinstall "Development Tools"sudo yum install git
  2. Clone o código iperf:

    cd /usr/local/sudo git clone https://git.code.sf.net/p/iperf2/code iperf2-code
  3. Crie e instale o pacote:

    cd /usr/local/iperf2-codesudo ./configure
    sudo make
    sudo make install

Teste o desempenho da rede TCP entre as instâncias

Por padrão, o iperf se comunica pela porta 5001 ao testar o desempenho do TCP. No entanto, você pode configurar essa porta com a opção -p. Certifique-se de configurar seus grupos de segurança para permitir comunicação na porta que o iperf usa.

  1. Configure uma instância como servidor para escutar na porta padrão ou especifique uma porta de receptor alternativa com a opção -p. Substitua 5001 pela sua porta, se for diferente:

    $ sudo iperf -s \[-p 5001\]
  2. Configure uma segunda instância como cliente e execute um teste no servidor com os parâmetros desejados. Por exemplo, o comando a seguir inicia um teste TCP na instância do servidor especificada com 40 conexões paralelas:

    $ iperf -c 172.31.30.41 --parallel 40 -i 1 -t 2

    Observação: para um teste bidirecional com iperf (versão 2), use a opção -r no lado do cliente.

A saída usa esses parâmetros para mostrar o intervalo por fluxo de cliente, os dados transferidos por fluxo de cliente e a largura de banda que cada fluxo de cliente usa. A saída iperf a seguir mostra os resultados do teste para duas instâncias Linux c5n.18xlarge do EC2 que são lançadas em um grupo de posicionamento de cluster. A largura de banda total transmitida em todas as conexões é de 97,6 Gbits/segundo:

------------------------------------------------------------------------------------
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 iperf se comunica pela porta 5001 ao testar o desempenho do UDP. No entanto, você pode usar a opção o -p para configurar sua porta. Certifique-se de configurar seus grupos de segurança para permitir comunicação na porta que o iperf usa.

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

  1. Configure uma instância como servidor para escutar na porta UDP padrão ou especifique uma porta do receptor alternativa com a opção -p. Substitua 5001 pela sua porta, se for diferente:

    $ sudo iperf -s -u \[-p 5001\]
  2. 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 na instância do servidor especificada com o parâmetro -b definido como 5g. O parâmetro -b altera a largura de banda para 5g do UDP padrão de 1 Mbit por segundo. 5g é o desempenho máximo de rede que uma instância c5n18xlarge pode fornecer para um único fluxo de tráfego em uma VPC:
    Observação: o UDP não tem conexão e não tem os algoritmos de controle de congestionamento que o TCP tem. Ao testar com iperf, a largura de banda obtida com o UDP pode ser menor do que a largura de banda obtida com TCIP.

    \# iperf -c 172.31.1.152 -u -b 5g

Aqui está um exemplo de saída do teste UDP:

$ iperf -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

Essa saída 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

AWS OFICIAL
AWS OFICIALAtualizada há 2 anos