Modo giusto per misurare le performance della networking overlay

Sto esaminando attualmente le performance (in particolare il throughput UDP) di diverse reti di overlay Docker. Lo faccio creando connessioni point-to-point tra due host collegati a una networking di overlay Docker e quindi eseguire iperf all'interno dei container Docker per esaminare il throughput. Ho notato che each volta che sto eseguendo iperf come client per submit dati all'altro contenitore che esegue iperf come server, l'utilizzo della CPU dell'host client raggiunge il 100%. Ho ottenuto questo risultato eseguendo il seguente command che ho trovato qui :

 top -bn1 | grep "Cpu(s)" | \ sed "s/.*, *\([0-9.]*\)%* id.*/\1/" | \ awk '{print 100 - $1"%"}' 

Quindi, a me sembra che il fattore limitante dei miei test di throughput sia la capacità del mio host, dato che funziona al 100% e non è in grado di generare più traffico per saturare la connessione di networking. Mi chiedo se questa è una questione specifica iperf , quindi ho voluto eseguire le stesse prove con uno strumento diverso, ma non so quale alternativa sarebbe meglio . Gli host sono in esecuzione Ubuntu. Per esempio, ho trovato qperf , uperf e netpipe .

Inoltre, più in generale, ho cominciato a chiedermi cosa normalmente è il collo di bottiglia per le performance di throughput. Non è sempre la capacità della CPU o la width di banda del collegamento? Quali sono fattori che non sono direttamente correlati alle reti di sovrapposizione.

Ciò significa che il throughput di un'applicazione (o di una networking di sovrapposizione) dipende solo da quanti loops di CPU ha bisogno per trasferire una certa quantità di dati e come comprimerlo per adattarlo alla networking (se questo sarebbe il collo di bottiglia).

  • Velocità di prova di stress su un gateway?
  • JMeter Stress test
  • Come provare le esecuzioni dei cavi cat5 / cat6 utilizzando solo software o semplici strumenti?
  • stress-ng: Simulare percentuali specifiche della CPU
  • Come posso sottolineare un switch gestito Ethernet?
  • Test di stress Windows Server 2k8 Box
  • Come sottolineare il test di un server Apache in esecuzione su una casella Linux
  • Cosa posso fare per "stress test" un ASA5505?
  • One Solution collect form web for “Modo giusto per misurare le performance della networking overlay”

    UDP è sia CPU che width di banda . Invia pacchetti senza garantire che siano inviati, trasmessi o ricevuti.

    • Se la CPU del mittente è troppo occupata, il pacchetto non viene mai inviato.
    • Se la width di banda non è in grado di tenere il passo, i pacchetti vengono lasciati in transito.
    • Se la CPU del ricevitore è troppo occupata o non è pronta per elaborare i dati di networking in ingresso, è persa.
    • Se l'applicazione non estrae i pacchetti dal sistema operativo (e li procede) abbastanza veloci, vengono persi.

    In generale, le performance UDP sono prive di significato. Nulla impedisce di provare a submit 1 pacchetto di bazillion al secondo. Che satura la CPU del mittente e la networking, mentre il ricevitore potrebbe non avere molto di niente.

    Se vuoi veramente provare UDP, questo è un argomento piuttosto lungo che è degno di un libro. Per avviatore, è necessario monitorare i tassi di errore e quali dati vengono effettivamente inviati / ricevuti.

    È necessario testare con TCP per misurare la width di banda disponibile tra gli host. iperf dovrebbe essere in grado di farlo bene.

    Suggerimenti per Linux e Windows Server, quali Ubuntu, Centos, Apache, Nginx, Debian e argomenti di rete.