Netzwerk Perfomance: Unterschied zwischen den Versionen

Aus Xinux Wiki
Zur Navigation springen Zur Suche springen
Zeile 37: Zeile 37:
 
*Kernel Buffer
 
*Kernel Buffer
 
*Netwerkschicht (IP,TCP,UDP)
 
*Netwerkschicht (IP,TCP,UDP)
 +
=Erster Perfomance Test mit Iperf3=
 +
==Server==
 +
*iperf3 -s -p 1234
 +
<pre>
 +
-----------------------------------------------------------
 +
Server listening on 1234
 +
-----------------------------------------------------------
 +
Accepted connection from 10.81.4.8, port 43630
 +
[  5] local 10.81.1.79 port 1234 connected to 10.81.4.8 port 43632
 +
[ ID] Interval          Transfer    Bandwidth
 +
[  5]  0.00-1.00  sec  2.35 GBytes  20.2 Gbits/sec                 
 +
[  5]  1.00-2.00  sec  2.86 GBytes  24.6 Gbits/sec                 
 +
[  5]  2.00-3.00  sec  2.83 GBytes  24.3 Gbits/sec                 
 +
[  5]  3.00-4.00  sec  2.80 GBytes  24.0 Gbits/sec                 
 +
[  5]  4.00-5.00  sec  2.86 GBytes  24.6 Gbits/sec                 
 +
[  5]  5.00-6.00  sec  2.79 GBytes  24.0 Gbits/sec                 
 +
[  5]  6.00-7.00  sec  2.88 GBytes  24.8 Gbits/sec                 
 +
[  5]  7.00-8.00  sec  2.87 GBytes  24.6 Gbits/sec                 
 +
[  5]  8.00-9.00  sec  2.72 GBytes  23.4 Gbits/sec                 
 +
[  5]  9.00-10.00  sec  2.84 GBytes  24.4 Gbits/sec                 
 +
[  5]  10.00-10.04  sec  106 MBytes  22.7 Gbits/sec                 
 +
- - - - - - - - - - - - - - - - - - - - - - - - -
 +
[ ID] Interval          Transfer    Bandwidth
 +
[  5]  0.00-10.04  sec  0.00 Bytes  0.00 bits/sec                  sender
 +
[  5]  0.00-10.04  sec  27.9 GBytes  23.9 Gbits/sec                  receiver
 +
-----------------------------------------------------------
 +
Server listening on 1234
 +
-----------------------------------------------------------
 +
</pre>
 +
==Client==
 +
*iperf3 -c 10.81.1.79 -p 1234
 +
<pre>
 +
Connecting to host 10.81.1.79, port 1234
 +
[  4] local 10.81.4.8 port 43632 connected to 10.81.1.79 port 1234
 +
[ ID] Interval          Transfer    Bandwidth      Retr  Cwnd
 +
[  4]  0.00-1.00  sec  2.47 GBytes  21.2 Gbits/sec    0  3.11 MBytes     
 +
[  4]  1.00-2.00  sec  2.87 GBytes  24.6 Gbits/sec    0  3.11 MBytes     
 +
[  4]  2.00-3.00  sec  2.82 GBytes  24.2 Gbits/sec    0  3.11 MBytes     
 +
[  4]  3.00-4.00  sec  2.80 GBytes  24.0 Gbits/sec    0  3.11 MBytes     
 +
[  4]  4.00-5.00  sec  2.87 GBytes  24.7 Gbits/sec    0  3.11 MBytes     
 +
[  4]  5.00-6.00  sec  2.78 GBytes  23.9 Gbits/sec    0  3.11 MBytes     
 +
[  4]  6.00-7.00  sec  2.90 GBytes  24.9 Gbits/sec    0  3.11 MBytes     
 +
[  4]  7.00-8.00  sec  2.85 GBytes  24.5 Gbits/sec    0  3.11 MBytes     
 +
[  4]  8.00-9.00  sec  2.72 GBytes  23.4 Gbits/sec    0  3.11 MBytes     
 +
[  4]  9.00-10.00  sec  2.84 GBytes  24.4 Gbits/sec    0  3.11 MBytes     
 +
- - - - - - - - - - - - - - - - - - - - - - - - -
 +
[ ID] Interval          Transfer    Bandwidth      Retr
 +
[  4]  0.00-10.00  sec  27.9 GBytes  24.0 Gbits/sec    0            sender
 +
[  4]  0.00-10.00  sec  27.9 GBytes  24.0 Gbits/sec                  receiver
 +
 +
iperf Done.
 +
</pre>
  
 
=Quelle=
 
=Quelle=
 
*https://i0.wp.com/opensourceforu.com/wp-content/uploads/2016/08/Figure-1-Data-receiving-
 
*https://i0.wp.com/opensourceforu.com/wp-content/uploads/2016/08/Figure-1-Data-receiving-
 
process.jpg
 
process.jpg

Version vom 16. November 2019, 15:43 Uhr

Intention

  • Router, Switche, Kabel wurden verbessert
  • Microprozessoren hinken hinten dran
  • Letztendlich muss das Betriebssystem die Daten verarbeiten
  • Darum ist ein präzises Anpassen des Betriebssystem wichtig

Wie verarbeitet das Betriebssystem die Daten

Netzwerk-perfomance-1.jpg

  • Daten werden von der Netzwerkkarte aufgenommen
  • Danach werden sie im Ring Buffer für den Empfang (RX) gespeichert
  • Es gibt auch einen Ring Buffer für das Senden (TX)
  • Wenn der Kernel auf das Paket zugreifen kann löst der Treiber einen Software IRQ aus
  • Dieser veranlasst einen Datenzugriff (DMA)
  • Der Kernel bekommt die Daten in Datenstruktur sk_buff um das Paket bis zur MTU zu halten.
  • Wenn die Kernel Buffer gefüllt sind gehen die Daten an die IP/TCP oder UDP Schicht.
  • Früher löste ein Hard Interupt das Senden aus.
  • Dies wurde durch den Soft Interrupt ersetzt.
  • Dieser wird verwaltet von der New API.

Tools zum Monitoring und Diagnose des Systems

  • ip
  • netstat
  • ss
  • ethtool

Benchmarkprogramme vor dem Tunen

  • netperf
  • iperf
  • iperf3

Grundlegendes vor Tunning

  • Jedes System ist unterschiedlich (CPU,MEM,NIC,OS)
  • Es gibt keine Universallösung
  • Man braucht gute Kenntnisse des Systems
  • Man muss den Flaschenhals finden

Pakete werden verworfen

Das Problem kann an folgenden Punkten liegen:

  • NIC
  • SOFT IRQ
  • Kernel Buffer
  • Netwerkschicht (IP,TCP,UDP)

Erster Perfomance Test mit Iperf3

Server

  • iperf3 -s -p 1234
-----------------------------------------------------------
Server listening on 1234
-----------------------------------------------------------
Accepted connection from 10.81.4.8, port 43630
[  5] local 10.81.1.79 port 1234 connected to 10.81.4.8 port 43632
[ ID] Interval           Transfer     Bandwidth
[  5]   0.00-1.00   sec  2.35 GBytes  20.2 Gbits/sec                  
[  5]   1.00-2.00   sec  2.86 GBytes  24.6 Gbits/sec                  
[  5]   2.00-3.00   sec  2.83 GBytes  24.3 Gbits/sec                  
[  5]   3.00-4.00   sec  2.80 GBytes  24.0 Gbits/sec                  
[  5]   4.00-5.00   sec  2.86 GBytes  24.6 Gbits/sec                  
[  5]   5.00-6.00   sec  2.79 GBytes  24.0 Gbits/sec                  
[  5]   6.00-7.00   sec  2.88 GBytes  24.8 Gbits/sec                  
[  5]   7.00-8.00   sec  2.87 GBytes  24.6 Gbits/sec                  
[  5]   8.00-9.00   sec  2.72 GBytes  23.4 Gbits/sec                  
[  5]   9.00-10.00  sec  2.84 GBytes  24.4 Gbits/sec                  
[  5]  10.00-10.04  sec   106 MBytes  22.7 Gbits/sec                  
- - - - - - - - - - - - - - - - - - - - - - - - -
[ ID] Interval           Transfer     Bandwidth
[  5]   0.00-10.04  sec  0.00 Bytes  0.00 bits/sec                  sender
[  5]   0.00-10.04  sec  27.9 GBytes  23.9 Gbits/sec                  receiver
-----------------------------------------------------------
Server listening on 1234
-----------------------------------------------------------

Client

  • iperf3 -c 10.81.1.79 -p 1234
Connecting to host 10.81.1.79, port 1234
[  4] local 10.81.4.8 port 43632 connected to 10.81.1.79 port 1234
[ ID] Interval           Transfer     Bandwidth       Retr  Cwnd
[  4]   0.00-1.00   sec  2.47 GBytes  21.2 Gbits/sec    0   3.11 MBytes       
[  4]   1.00-2.00   sec  2.87 GBytes  24.6 Gbits/sec    0   3.11 MBytes       
[  4]   2.00-3.00   sec  2.82 GBytes  24.2 Gbits/sec    0   3.11 MBytes       
[  4]   3.00-4.00   sec  2.80 GBytes  24.0 Gbits/sec    0   3.11 MBytes       
[  4]   4.00-5.00   sec  2.87 GBytes  24.7 Gbits/sec    0   3.11 MBytes       
[  4]   5.00-6.00   sec  2.78 GBytes  23.9 Gbits/sec    0   3.11 MBytes       
[  4]   6.00-7.00   sec  2.90 GBytes  24.9 Gbits/sec    0   3.11 MBytes       
[  4]   7.00-8.00   sec  2.85 GBytes  24.5 Gbits/sec    0   3.11 MBytes       
[  4]   8.00-9.00   sec  2.72 GBytes  23.4 Gbits/sec    0   3.11 MBytes       
[  4]   9.00-10.00  sec  2.84 GBytes  24.4 Gbits/sec    0   3.11 MBytes       
- - - - - - - - - - - - - - - - - - - - - - - - -
[ ID] Interval           Transfer     Bandwidth       Retr
[  4]   0.00-10.00  sec  27.9 GBytes  24.0 Gbits/sec    0             sender
[  4]   0.00-10.00  sec  27.9 GBytes  24.0 Gbits/sec                  receiver

iperf Done.

Quelle

process.jpg