Come posso confrontare il throughput di rete tra le istanze Linux di Amazon EC2 nello stesso VPC?

8 minuti di lettura
0

Desidero misurare la larghezza di banda di rete tra le istanze Linux di Amazon Elastic Compute Cloud (Amazon EC2) che si trovano nello stesso Amazon Virtual Private Cloud (Amazon VPC).

Risoluzione

Definire il tipo, la dimensione e la configurazione dell'istanza da utilizzare per testare il throughput di rete

Quando le istanze si trovano nello stesso VPC, diversi fattori possono causare differenze significative nelle prestazioni di rete tra i diversi ambienti cloud. Come best practice, valuta regolarmente e imposta come riferimento le prestazioni di rete dell'ambiente per migliorare le prestazioni delle applicazioni. I test delle prestazioni di rete forniscono informazioni preziose per determinare i tipi, le dimensioni e le configurazioni delle istanze EC2 migliori per le tue esigenze.

Modifica delle istanze per migliorare le prestazioni di rete

Mantenere le istanze vicine

Assicurati che le istanze siano vicine. Le istanze fisicamente più vicine offrono prestazioni migliori. Le istanze più distanti tra loro possono causare latenza di rete. Le istanze nella stessa zona di disponibilità o Regione AWS hanno un throughput di rete migliore rispetto alle istanze EC2 in zone di disponibilità o Regioni diverse. Nei seguenti scenari, le istanze sono progressivamente più distanti l'una dall'altra:

  • Istanze nella stessa zona di disponibilità nella stessa regione
  • Istanze in zone di disponibilità diverse nella stessa Regione
  • Istanze in Regioni diverse dello stesso continente
  • Istanze in Regioni diverse in continenti differenti

Incremento della MTU dell'istanza

Aumenta la MTU (Maximum Transmission Unit). Tutti i tipi di istanza EC2 supportano 1500 MTU. Tutte le istanze della generazione attuale e le istanze C3, G2, I2, M3 e R3 della generazione precedente supportano i frame jumbo. I frame jumbo consentono più di 1500 MTU. Tuttavia, le istanze che supportano i frame jumbo possono essere limitate a 1500 MTU in determinati scenari.

Aumento delle dimensioni dell'istanza

Aumenta le dimensioni dell'istanza. Dimensioni dell'istanza più grandi per un tipo di istanza offrono in genere prestazioni di rete migliori rispetto alle dimensioni dell'istanza più piccole dello stesso tipo.

Utilizzo del supporto di rete migliorato per Linux

Utilizza reti avanzate. Reti avanzate offrono prestazioni più elevate e una latenza minima costante tra le istanze. Tutte le istanze della generazioni attuale utilizzano i driver Elastic Network Adaptor (ENA) o ENA Express per attivare reti avanzate per impostazione predefinita.

I tipi di istanza della generazione precedente che supportano Reti avanzate potrebbero richiedere configurazioni aggiuntive per utilizzare reti avanzate.

Per ulteriori informazioni, consulta Come posso attivare e configurare una rete avanzata sulle mie istanze EC2?

Inserimento delle istanze in gruppi di posizionamento

Avvia le istanze interdipendenti in un gruppo di posizionamento per soddisfare le esigenze del carico di lavoro. HPC (High-performance computing) offre larghezza di banda bisezione completa e bassa latenza, inoltre supporta velocità di rete fino a 100 GB, a seconda del tipo di istanza.

Utilizzo di un meccanismo di credito I/O di rete per allocare la larghezza di banda della rete

Per verificare se il tipo di istanza può utilizzare un credito di rete I/O per superare la larghezza di banda di base, consulta Network specifications (Specifiche di rete).

Configurazione delle istanze di test

Completa i passaggi seguenti:

  1. Avvia due istanze Linux di test.
  2. Verifica che le istanze supportino reti avanzate su Linux e si trovino nello stesso VPC.
  3. (Facoltativo) Se esegui test di rete tra istanze che non supportano i frame jumbo, imposta l'MTU di rete sulla tua istanza.
  4. Utilizza SSH per connetterti alle istanze per verificare che sia possibile accedervi.

Installazione dello strumento di benchmark di rete iperf3 su entrambe le istanze

In alcune distribuzioni, come Amazon Linux, iperf3 fa parte dell'archivio Extra Packages for Enterprise Linux (EPEL). Per attivare il repository EPEL, consulta Come posso consentire l'accesso al repository EPEL per la mia istanza Amazon EC2 con CentOS, RHEL o Amazon Linux?

Per ulteriori informazioni sullo strumento iperf3, consulta iperf2/iperf3 sul sito web di ESnet.

Utilizza la modalità SSH per connetterti alle istanze Linux. Quindi, esegui uno dei seguenti comandi del sistema operativo per installare iperf3.

Red Hat Enterprise Linux (RHEL) 9:

$ sudo dnf -y install iperf3

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

Test delle prestazioni della rete TCP tra le istanze

Per impostazione predefinita, iperf3 comunica tramite la porta 5001 durante il test delle prestazioni TCP. Tuttavia, puoi utilizzare l'opzione -p per cambiare la porta. Assicurati di configurare i gruppi di sicurezza per consentire la comunicazione sulla porta utilizzata da iperf3.

Per configurare la prima istanza come server per l'ascolto su una porta TCP specifica, esegui il seguente comando:

$ sudo iperf3 -s -p 5001

Nota: se scegli di cambiare la porta, sostituisci 5001 con il numero di porta.

Configura la seconda istanza come un client, quindi esegui un test sul server con i parametri pertinenti. Ad esempio, il comando seguente avvia un test TCP sull'istanza del server con 40 connessioni parallele:

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

L'output mostra l'intervallo e i dati trasferiti in ciascun flusso client e la larghezza di banda utilizzata da ogni flusso client. Il seguente output iperf3 mostra i risultati dei test per due istanze EC2 Linux c5n.18xlarge lanciate in un gruppo di posizionamento del cluster. La larghezza di banda totale trasmessa su tutte le connessioni è di 97,6 Gbps.

Esempio di output:

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

Test delle prestazioni di rete UDP tra le istanze

Per impostazione predefinita, iperf3 comunica tramite la porta 5001 durante il test della prestazioni UDP. Tuttavia, puoi utilizzare l'opzione -p per cambiare la porta. Assicurati di configurare i gruppi di sicurezza per consentire la comunicazione sulla porta utilizzata da iperf3.

Nota: l'impostazione predefinita per UDP è 1 Mbps, a meno che non si specifichi una larghezza di banda diversa.

Per configurare la prima istanza come server per l'ascolto su una porta UDP specifica, esegui il seguente comando:

$ sudo iperf3 -s -u -p 5001

Nota: se scegli di cambiare la porta, sostituisci 5001 con il numero di porta.

Configura una seconda istanza come client, quindi esegui un test sul server con i parametri desiderati. L'esempio seguente esegue un test UDP rispetto all'istanza del server con il parametro -b impostato su 5g. Il parametro -b modifica la larghezza di banda in 5 Gbps rispetto all'impostazione predefinita UDP di 1 Mbps. 5 Gbps è la massima prestazione di rete che un'istanza c5n.18xlarge può fornire per un singolo flusso di traffico all'interno di un VPC:

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

Nota: UDP è privo di connessione e non dispone degli algoritmi di controllo dell'intasamento di TCP. Quando si esegue il test con iperf3, la larghezza di banda ottenuta da UDP potrebbe essere inferiore a quella ottenuta da TCP.

Esempio di output:

$ 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

L'output dell'esempio precedente mostra i seguenti valori:

  • Intervallo (tempo)
  • Quantità di dati trasferiti
  • Larghezza di banda raggiunta
  • Jitter (la deviazione nel tempo per l'arrivo periodico dei grammi di dati)
  • Perdita e totale dei datagrammi UDP

Informazioni correlate

Disk Testing using iperf3 sul sito web di ESnet

Network tuning sul sito web di ESnet

Throughput tool comparison sul sito web di ESnet

Iperf2 sul sito web di SourceForge

iperf3 FAQ sul sito web di ESnet

AWS UFFICIALE
AWS UFFICIALEAggiornata 3 mesi fa