Como faço para comparar o throughput de rede em uma instância Windows do Amazon EC2?

8 minuto de leitura
0

Preciso medir a largura de banda da rede entre as instâncias Windows do Amazon Elastic Compute Cloud (Amazon EC2). Como posso fazer isso?

Resolução

O teste de avaliação comparativa de desempenho de rede pode ajudar você a determinar os tipos, tamanhos e configurações de instâncias do Amazon EC2 que melhor atendem às suas necessidades. Para mais informações sobre o desempenho da rede de cada tipo de instância, consulte Tipos de instância do Amazon EC2.

Inicie e configure suas instâncias Windows do Amazon EC2

Antes de executar testes de avaliação comparativa, siga estas etapas:

1.    Inicie duas instâncias Windows do EC2 para executar testes de desempenho de rede.

2.    Confirme se as instâncias oferecem suporte à rede aprimorada do Windows.

3.    Para executar testes de rede entre instâncias que não estão localizadas no mesmo grupo de posicionamento ou que não tenham suporte para frames jumbo, verifique e defina a unidade máxima de transmissão (MTU).

4.    Verifique se você pode se conectar às instâncias.

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

Conecte-se a cada uma das duas instâncias do Windows e siga estas etapas:

1.    Baixe a versão mais recente da NTttcp da Microsoft no site do GitHub.

2.    Descompacte o conteúdo do arquivo em uma pasta.

3.    Abra um prompt de comando com privilégios de administrador e, em seguida, altere os diretórios para a pasta em que você descompactou a ferramenta de avaliação comparativa de rede NTttcp.

4.    Antes de executar a ferramenta NTttcp, altere os diretórios na pasta com o nome correspondente à arquitetura da sua instância Windows do EC2.

Teste o desempenho da rede TCP e UDP entre as instâncias

A ferramenta NTttcp se comunica pela porta 5001 por padrão ao testar o desempenho de TCP e UDP. No entanto, você pode configurar a porta usando a opção -p.

Importante:

  • os grupos de segurança devem ser configurados para permitir a comunicação pelas portas que a ferramenta NTttcp utiliza.
  • Adicione regras de entrada e saída do Firewall do Windows no receptor e no remetente que permitam conexões com NTttcp.exe.

Teste o desempenho da rede TCP

1.    Configure uma instância como receptor/servidor para inicializar os receptores, começando pela porta padrão 5001. Ou especifique uma porta de receptor inicial alternativa com a opção -p.

Por exemplo, o comando a seguir inicializa um receptor com dois threads que escuta nas portas 80-81 do endereço IP especificado. O primeiro thread é executado na CPU 0 e o segundo na CPU 1.

ntttcp -r -p 80 -a 6 -t 60 -cd 5 -wu 5 -v -xml c:\bench.xml -m 1,0,192.168.1.4 1,1,192.168.1.4

Os parâmetros do receptor ntttcp.exe no exemplo anterior são descritos a seguir:

  • -r: receber.
  • -p 80: porta usada pelo primeiro thread para receber dados. O número da porta é incrementado para cada thread adicional do receptor.
  • -a 6: transferência assíncrona de dados que envia seis buffers sobrepostos por thread
  • -t 60: duração do teste em segundos.
  • -cd 5: tempo de esfriamento do teste de 5 segundos.
  • -wu 5: tempo de aquecimento do teste de 5 segundos.
  • -v: especificar a saída detalhada do teste.
  • -xml: salvar a saída do teste no arquivo especificado (o padrão é salvo em xml.txt).
  • -m: especificar três parâmetros de mapeamento por sessão (# threads, CPUID, endereço IP do receptor). Várias sessões são delimitadas por espaço.

2.    Configure a segunda instância como remetente/cliente e, em seguida, execute um teste no receptor com os parâmetros escolhidos.

Por exemplo, o comando a seguir inicializa um remetente TCP com dois threads nas portas 80-81 do endereço IP especificado. O primeiro thread é executado na CPU 0 e o segundo na CPU 1.

Observação: o comando a seguir tem o mesmo endereço IP do comando na etapa 1. Digite o endereço IP do receptor nos dois comandos.

ntttcp -s -p 80 -a -t 60 -cd 5 -wu 5 -m 1,0,192.168.1.4 1,1,192.168.1.4

Os parâmetros do remetente de ntttcp.exe no exemplo anterior são descritos a seguir:

  • -s: enviar.
  • -p 80: porta usada pelo primeiro thread para enviar dados. Esse número de porta é incrementado para cada thread de remetente adicional.
  • -a: o valor padrão de buffers sobrepostos de envio assíncrono por thread é 2. Especifique um valor não padrão, se necessário.
  • -t 60: duração do teste em segundos.
  • -cd 5: tempo de esfriamento do teste de 5 segundos.
  • -wu 5: tempo de aquecimento do teste de 5 segundos.
  • -m: especificar três parâmetros de mapeamento por sessão (# threads, CPUID, endereço IP do receptor). Várias sessões são delimitadas por espaço.

A saída XML gerada no receptor deve ser semelhante à seguinte. Nesse teste, a largura de banda total usada foi de cerca de 9,02 GBps.

<ntttcpr computername="Win_EC2_Recv" version="5.31">
  <parameters>
    <send_socket_buff>0</send_socket_buff>
    <recv_socket_buff>-1</recv_socket_buff>
    <port>82</port>
    <sync_port>False</sync_port>
    <async>True</async>
    <verbose>True</verbose>
    <wsa>False</wsa>
    <use_ipv6>False</use_ipv6>
    <udp>False</udp>
    <verify_data>False</verify_data>
    <wait_all>False</wait_all>
    <run_time>60000</run_time>
    <warmup_time>5000</warmup_time>
    <cooldown_time>5000</cooldown_time>
    <dash_n_timeout>10800000</dash_n_timeout>
    <bind_sender>False</bind_sender>
    <sender_name></sender_name>
    <max_active_threads>2</max_active_threads>
  </parameters>
  <thread index="0">
    <realtime metric="s">60.012</realtime>
    <throughput metric="KB/s">542199.263</throughput>
    <throughput metric="MB/s">529.491</throughput>
    <throughput metric="mbps">4441.696</throughput>
    <avg_bytes_per_compl metric="B">65091.350</avg_bytes_per_compl>
  </thread>
  <thread index="1">
    <realtime metric="s">60.012</realtime>
    <throughput metric="KB/s">559260.669</throughput>
    <throughput metric="MB/s">546.153</throughput>
    <throughput metric="mbps">4581.463</throughput>
    <avg_bytes_per_compl metric="B">65535.750</avg_bytes_per_compl>
  </thread>
  <total_bytes metric="MB">64550.500000</total_bytes>
  <realtime metric="s">60.011000</realtime>
  <avg_bytes_per_compl metric="B">65316.236</avg_bytes_per_compl>
  <threads_avg_bytes_per_compl metric="B">65313.550</threads_avg_bytes_per_compl>
  <avg_frame_size metric="B">8194.809</avg_frame_size>
  <throughput metric="MB/s">1075.644</throughput>
  <throughput metric="mbps">9023.160</throughput>
  <total_buffers>1032808.000</total_buffers>
  <throughput metric="buffers/s">17210.311</throughput>
  <avg_packets_per_interrupt metric="packets/interrupt">5.749
    </avg_packets_per_interrupt>
  <interrupts metric="count/sec">23942.694</interrupts>
  <dpcs metric="count/sec">9546.816</dpcs>
  <avg_packets_per_dpc metric="packets/dpc">14.417
    </avg_packets_per_dpc>
  <cycles metric="cycles/byte">2.826</cycles>
  <packets_sent>730596</packets_sent>
  <packets_received>8259632</packets_received>
  <packets_retransmitted>0</packets_retransmitted>
  <errors>0</errors>
  <cpu metric="%">7.813</cpu>
  <bufferCount>9223372036854775807</bufferCount>
  <bufferLen>65536</bufferLen>
  <io>6</io>
</ntttcpr>

Teste o desempenho da rede UDP

1.    Configure uma instância como receptor/servidor para inicializar os receptores, começando pela porta padrão 5001. Ou especifique uma porta de receptor inicial alternativa com a opção -p.

Por exemplo, o comando a seguir inicializa um receptor com dois threads que escuta nas portas 80-81 do endereço IP especificado. O primeiro thread é executado na CPU 0 e o segundo na CPU 1.

ntttcp –r –u -p 80 –t 60 –cd 5 –wu 5 –v –xml c:\\bench.xml –m 1,0,192.168.1.4 1,1,192.168.1.4

Os parâmetros do receptor ntttcp.exe no exemplo anterior são descritos a seguir:

  • -r: receber.
  • -u: testar o UDP.
  • -p 80: porta usada pelo primeiro thread para receber dados. O número da porta é incrementado para cada thread adicional do receptor.
  • -t 60: duração do teste em segundos.
  • -cd 5: tempo de esfriamento do teste de 5 segundos.
  • -wu 5: tempo de aquecimento do teste de 5 segundos.
  • -v: especificar a saída detalhada do teste.
  • -xml: salvar a saída do teste no arquivo especificado (o padrão é salvo em xml.txt).
  • -m: especificar três parâmetros de mapeamento por sessão (# threads, CPUID, endereço IP do receptor). Várias sessões são delimitadas por espaço.

2.    Configure uma segunda instância como remetente/cliente e, em seguida, execute um teste no receptor com os parâmetros desejados.

Por exemplo, o comando a seguir inicializa um remetente UDP com dois threads nas portas 80-81 do endereço IP especificado. O primeiro thread é executado na CPU 0 e o segundo na CPU 1.

Observação: o comando a seguir tem o mesmo endereço IP do comando na etapa 1. Digite o endereço IP do receptor nos dois comandos.

ntttcp -s –u -p 80 -t 60 -cd 5 -wu 5 -m 1,0,192.168.1.4 1,1,192.168.1.4

Os parâmetros do remetente de ntttcp.exe no exemplo anterior são descritos a seguir:

  • -s: enviar.
  • -u: testar o UDP (o padrão é testar o TCP).
  • -p 80: porta usada pelo primeiro thread para enviar dados. O número da porta é incrementado para cada thread de remetente adicional.
  • -t 60: duração do teste em segundos.
  • -cd 5: tempo de esfriamento do teste de 5 segundos.
  • -wu 5: tempo de aquecimento do teste de 5 segundos.
  • -m: especificar três parâmetros de mapeamento por sessão (# threads, CPUID, endereço IP do receptor). Várias sessões são delimitadas por espaço.

A saída XML gerada no receptor deve ser semelhante à seguinte:

<ntttcpr computername="Win_UDP_Test" version="5.31">
  <parameters>
    <send_socket_buff>8192</send_socket_buff>
    <recv_socket_buff>-1</recv_socket_buff>
    <port>82</port>
    <sync_port>False</sync_port>
    <async>False</async>
    <verbose>True</verbose>
    <wsa>False</wsa>
    <use_ipv6>False</use_ipv6>
    <udp>True</udp>
    <verify_data>False</verify_data>
    <wait_all>False</wait_all>
    <run_time>60000</run_time>
    <warmup_time>5000</warmup_time>
    <cooldown_time>5000</cooldown_time>
    <dash_n_timeout>10800000</dash_n_timeout>
    <bind_sender>False</bind_sender>
    <sender_name></sender_name>
    <max_active_threads>2</max_active_threads>
  </parameters>
  <thread index="0">
    <realtime metric="s">60.016</realtime>
    <throughput metric="KB/s">6463.886</throughput>
    <throughput metric="MB/s">6.312</throughput>
    <throughput metric="mbps">52.952</throughput>
    <avg_bytes_per_compl metric="B">128.000</avg_bytes_per_compl>
  </thread>
  <thread index="1">
    <realtime metric="s">60.016</realtime>
    <throughput metric="KB/s">7712.922</throughput>
    <throughput metric="MB/s">7.532</throughput>
    <throughput metric="mbps">63.184</throughput>
    <avg_bytes_per_compl metric="B">128.000</avg_bytes_per_compl>
  </thread>
  <total_bytes metric="MB">830.880005</total_bytes>
  <realtime metric="s">60.015000</realtime>
  <avg_bytes_per_compl metric="B">128.000</avg_bytes_per_compl>
  <threads_avg_bytes_per_compl metric="B">128.000<</threads_avg_bytes_per_compl>
  <avg_frame_size metric="B">127.780</avg_frame_size>
  <throughput metric="MB/s">13.845</throughput>
  <throughput metric="mbps">116.136</throughput>
  <total_buffers>6806569.000</total_buffers>
  <throughput metric="buffers/s">113414.463</throughput>
  <avg_packets_per_interrupt metric="packets/interrupt">1.968
  </avg_packets_per_interrupt>
  <interrupts metric="count/sec">57715.621</interrupts>
  <dpcs metric="count/sec">11576.306</dpcs>
  <avg_packets_per_dpc metric="packets/dpc">9.814</avg_packets_per_dpc>
  <cycles metric="cycles/byte">210.673</cycles>
  <packets_sent>2</packets_sent>
  <packets_received>6818294</packets_received>
  <packets_retransmitted>0</packets_retransmitted>
  <errors>1</errors>
  <cpu metric="%">44.976</cpu>
  <bufferCount>9223372036854775807</bufferCount>
  <bufferLen>128</bufferLen>
  <io>2</io>
</ntttcpr>

Opções da NTttcp (opcionais) Para visualizar todas as opções disponíveis para usar com a ferramenta NTttcp, abra um prompt de comando e execute o seguinte comando:

ntttcp

Informações relacionadas

Unidade de transmissão máxima de rede (MTU) para sua instância do EC2

Grupos de posicionamento

Como fazer uma avaliação comparativa do throughput de rede entre instâncias Linux do Amazon EC2 na mesma Amazon VPC?

AWS OFICIAL
AWS OFICIALAtualizada há 3 anos