In che modo è possibile confrontare la velocità di trasmissione effettiva di rete in un'istanza Amazon EC2 per Windows?

8 minuti di lettura
0

Devo misurare la larghezza di banda della rete tra le istanze Windows di Amazon Elastic Compute Cloud (Amazon EC2). In che modo posso farlo?

Soluzione

I test comparativi delle prestazioni di rete possono aiutarti a determinare i tipi, le dimensioni e la configurazione di istanze Amazon EC2 più adatti alle tue esigenze. Per ulteriori informazioni sulle prestazioni di rete per ogni tipo di istanza, consultare Tipi di istanza di Amazon EC2.

Avvia e configura le tue istanze Amazon EC2 per Windows

Prima di eseguire i test di benchmark, segui questi passaggi:

1.    Avvia due istanze EC2 Windows per eseguire test delle prestazioni di rete.

2.    Verifica che le istanze supportino larete avanzata per Windows.

3.    Per eseguire test di rete tra istanze che non si trovano nello stesso gruppo di posizionamento o che non supportano i jumbo frame, controllare e impostare l'unità di trasmissione massima (MTU).

4.    Verifica di poterti connettere alle istanze.

Installa lo strumento di benchmark di rete NTttcp su entrambe le istanze

Connettiti a ciascuna delle due istanze di Windows, quindi esegui questi passaggi:

1.    Scarica l'ultima versione di NTttcp di Microsoft dal sito Web di GitHub.

2.    Decomprimi il contenuto del file in una cartella.

3.    Apri un prompt dei comandi con privilegi di amministratore, quindi modifica le directory nella cartella in cui hai decompresso lo strumento di benchmark di rete NTttcp.

4.    Prima di eseguire NTttcp, modifica le directory nella cartella con il nome che corrisponde all'architettura dell'istanza EC2 per Windows.

Verifica le prestazioni di rete TCP e UDP tra le istanze

Per impostazione predefinita, NTttcp comunica tramite la porta 5001 durante il test delle prestazioni TCP e UDP. Tuttavia, è possibile configurare la porta utilizzando lo switch -p.

Importante:

  • i gruppi di sicurezza devono essere configurati per consentire la comunicazione tramite le porte utilizzate da NttTCP.
  • Aggiungi regole Windows Firewall in entrata e in uscita sia sul destinatario che sul mittente che consentono le connessioni a NTttcp.exe.

Verifica delle prestazioni della rete TCP

1.    Configura un'istanza come ricevitore/server per inizializzare gli ascoltatori a partire dalla porta predefinita 5001. In alternativa, specificare una porta ascoltatore iniziale alternativa con lo switch -p.

Ad esempio, il comando seguente inizializza un ricevitore a due thread in ascolto sulle porte 80—81 dell'indirizzo IP specificato. Il primo thread viene eseguito sulla CPU 0 e il secondo sulla 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

I parametri del ricevitore ntttcp.exe nell'esempio precedente sono descritti come segue:

  • -r: ricevi.
  • -p 80: porta utilizzata dal primo thread per ricevere dati. Il numero di porta viene incrementato per ogni thread aggiuntivo del ricevitore.
  • -a 6: il trasferimento asincrono di dati che prevede sei messaggi riceve buffer sovrapposti per thread
  • -t 60: durata del test in secondi.
  • -cd 5: tempo di recupero del test di 5 secondi.
  • -wu 5: test del tempo di warmup di 5 secondi.
  • -v: specifica l'output del test dettagliato.
  • -xml: salva l'output del test nel file specificato (il salvataggio predefinito è xml.txt).
  • -m: specifica tre parametri di mappatura per sessione (# thread, CPUID, indirizzo IP del ricevitore). Le sessioni multiple sono delimitate da spazi.

2.    Configura la seconda istanza come mittente/client, quindi esegui un test sul destinatario con i parametri scelti.

Ad esempio, il comando seguente inizializza un mittente TCP a due thread sulle porte 80-81 dell'indirizzo IP specificato. Il primo thread viene eseguito sulla CPU 0 e il secondo sulla CPU 1.

Nota: il comando seguente ha lo stesso indirizzo IP del comando del passaggio 1. Immetti l'indirizzo IP del ricevitore su entrambi i comandi.

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

I parametri del mittente ntttcp.exe nell'esempio precedente sono descritti come segue:

  • -s: invia.
  • -p 80: porta utilizzata dal primo thread per inviare dati. Questo numero di porta viene incrementato per ogni thread di mittente aggiuntivo.
  • -a: il valore predefinito dei buffer sovrapposti di invio asincrono per thread è 2. Specifica un valore non predefinito, se necessario.
  • -t 60: durata del test in secondi.
  • -cd 5: tempo di recupero del test di 5 secondi.
  • -wu 5: test del tempo di warmup di 5 secondi.
  • -m: specifica tre parametri di mappatura per sessione (# thread, CPUID, indirizzo IP del ricevitore). Le sessioni multiple sono delimitate da spazi.

L'output XML generato sul ricevitore dovrebbe essere simile al seguente. In questo test, la larghezza di banda totale utilizzata era di circa 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>

Verifica delle prestazioni della rete UDP

1.    Configura un'istanza come ricevitore/server per inizializzare gli ascoltatori a partire dalla porta predefinita 5001. In alternativa, specificare una porta ascoltatore iniziale alternativa con lo switch -p.

Ad esempio, il comando seguente inizializza un ricevitore a due thread in ascolto sulle porte 80—81 dell'indirizzo IP specificato. Il primo thread viene eseguito sulla CPU 0 e il secondo sulla 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

I parametri del ricevitore ntttcp.exe nell'esempio precedente sono descritti come segue:

  • -r: ricevi.
  • -u: test UDP.
  • -p 80: porta utilizzata dal primo thread per ricevere dati. Il numero di porta viene incrementato per ogni thread aggiuntivo del ricevitore.
  • -t 60: durata del test in secondi.
  • -cd 5: tempo di recupero del test di 5 secondi.
  • -wu 5: test del tempo di warmup di 5 secondi.
  • -v: specifica l'output del test dettagliato.
  • -xml: salva l'output del test nel file specificato (il salvataggio predefinito è xml.txt).
  • -m: specifica tre parametri di mappatura per sessione (# thread, CPUID, indirizzo IP del ricevitore). Le sessioni multiple sono delimitate da spazi.

2.    Configura una seconda istanza come mittente/client, quindi esegui un test sul destinatario con i parametri desiderati.

Ad esempio, il comando seguente inizializza un mittente UDP a due thread sulle porte 80-81 dell'indirizzo IP specificato. Il primo thread viene eseguito sulla CPU 0 e il secondo sulla CPU 1.

Nota: il comando seguente ha lo stesso indirizzo IP del comando del passaggio 1. Immetti l'indirizzo IP del ricevitore su entrambi i comandi.

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

I parametri del mittente ntttcp.exe nell'esempio precedente sono descritti come segue:

  • -s: invia.
  • -u: verifica UDP (l'impostazione predefinita è testare TCP).
  • -p 80: porta utilizzata dal primo thread per inviare dati. Il numero di porta viene incrementato per ogni thread del mittente aggiuntivo.
  • -t 60: durata del test in secondi.
  • -cd 5: tempo di recupero del test di 5 secondi.
  • -wu 5: test del tempo di warmup di 5 secondi.
  • -m: specifica tre parametri di mappatura per sessione (# thread, CPUID, indirizzo IP del ricevitore). Le sessioni multiple sono delimitate da spazi.

L'output XML generato sul ricevitore dovrebbe essere simile al seguente:

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

Switch NTttcp (facoltativo) Per visualizzare tutti gli switch disponibili per l'uso con NTttcp, apri un prompt dei comandi, quindi esegui il comando seguente:

ntttcp

Informazioni correlate

Unità di trasmissione massima di rete (MTU) per la tua istanza EC2

Gruppi di posizionamento

Come posso confrontare la velocità di trasmissione effettiva di rete tra le istanze Linux di Amazon EC2 nello stesso Amazon VPC?

AWS UFFICIALE
AWS UFFICIALEAggiornata 3 anni fa