Netzwerk Perfomance

Aus Xinux Wiki
Zur Navigation springen Zur Suche springen

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