Begrijp Linux Load Averages en Monitor Prestaties van Linux

In dit artikel zullen we een van de kritieke taken van Linux systeembeheer uitleggen – prestatiebewaking met betrekking tot systeem/CPU-belasting en belastingsgemiddelden.

Voordat we verder gaan, laten we deze twee belangrijke termen begrijpen in alle Unix-achtige systemen:

  • Systeembelasting/CPU-belasting – is een meting van CPU-over- of onderbenutting in een Linux-systeem; het aantal processen dat door de CPU wordt uitgevoerd of in de wachtstand staat.
  • Belastingsgemiddelde – is het gemiddelde systeembelasting berekend over een bepaalde periode van 1, 5 en 15 minuten.

In Linux wordt de belastingsgemiddelde technisch gezien beschouwd als een lopend gemiddelde van processen in de (kernel) uitvoeringswachtrij die worden aangeduid als actief of niet-onderbreekbaar.

Merk op dat:

  • Alle, zo niet de meeste systemen aangedreven door Linux of andere Unix-achtige systemen zullen mogelijk de belastingsgemiddelde waarden ergens tonen voor een gebruiker.
  • A downright idle Linux system may have a load average of zero, excluding the idle process.
  • Bijna alle Unix-achtige systemen tellen alleen processen in de actieve of wachtende toestanden. Maar dit is niet het geval bij Linux, het omvat processen in niet-onderbreekbare slaaptoestanden; die wachten op andere systeembronnen zoals schijf-I/O enz.

Hoe Linux Systeembelastingsgemiddelde te bewaken

Er zijn talloze manieren om het systeembelastingsgemiddelde te bewaken, waaronder uptime die laat zien hoelang het systeem al draait, aantal gebruikers samen met belastingsgemiddelden:

$ uptime

07:13:53 up 8 days, 19 min,  1 user,  load average: 1.98, 2.15, 2.21

De cijfers worden van links naar rechts gelezen, en de bovenstaande uitvoer betekent dat:

  • belastingsgemiddelde over de laatste 1 minuut is 1.98
  • De gemiddelde belasting over de laatste 5 minuten is 2.15
  • De gemiddelde belasting over de laatste 15 minuten is 2.21

Hoge belastinggemiddelden geven aan dat een systeem overbelast is; veel processen wachten op CPU-tijd.

We zullen dit onthullen in de volgende sectie met betrekking tot het aantal CPU-cores. Daarnaast kunnen we ook andere bekende tools gebruiken zoals top en glances die een realtime status van een draaiend Linux-systeem weergeven, plus vele andere tools:

Top Command

$ top
Display Running Linux Processes
top - 12:51:42 up  2:11,  1 user,  load average: 1.22, 1.12, 1.26
Tasks: 243 total,   1 running, 242 sleeping,   0 stopped,   0 zombie
%Cpu(s): 17.4 us,  2.9 sy,  0.3 ni, 74.8 id,  4.6 wa,  0.0 hi,  0.0 si,  0.0 st
KiB Mem :  8069036 total,   388060 free,  4381184 used,  3299792 buff/cache
KiB Swap:  3906556 total,  3901876 free,     4680 used.  2807464 avail Mem 

  PID USER      PR  NI    VIRT    RES    SHR S  %CPU %MEM     TIME+ COMMAND                                                                                                                                        
 6265 tecmint   20   0 1244348 170680  83616 S  13.3  2.1   6:47.72 Headset                                                                                                                                        
 2301 tecmint    9 -11  640332  13344   9932 S   6.7  0.2   2:18.96 pulseaudio                                                                                                                                     
 2459 tecmint   20   0 1707692 315628  62992 S   6.7  3.9   6:55.45 cinnamon                                                                                                                                       
 2957 tecmint   20   0 2644644 1.035g 137968 S   6.7 13.5  50:11.13 firefox                                                                                                                                        
 3208 tecmint   20   0  507060  52136  33152 S   6.7  0.6   0:04.34 gnome-terminal-                                                                                                                                
 3272 tecmint   20   0 1521380 391324 178348 S   6.7  4.8   6:21.01 chrome                                                                                                                                         
 6220 tecmint   20   0 1595392 106964  76836 S   6.7  1.3   3:31.94 Headset                                                                                                                                        
    1 root      20   0  120056   6204   3964 S   0.0  0.1   0:01.83 systemd                                                                                                                                        
    2 root      20   0       0      0      0 S   0.0  0.0   0:00.00 kthreadd                                                                                                                                       
    3 root      20   0       0      0      0 S   0.0  0.0   0:00.10 ksoftirqd/0                                                                                                                                    
    5 root       0 -20       0      0      0 S   0.0  0.0   0:00.00 kworker/0:0H   
....

Glances Tool

$ glances
Glances – Linux System Monitoring Tool
TecMint (LinuxMint 18 64bit / Linux 4.4.0-21-generic)                                                                                                                                               Uptime: 2:16:06

CPU      16.4%  nice:     0.1%                                        LOAD    4-core                                        MEM     60.5%  active:    4.90G                                        SWAP      0.1%
user:    10.2%  irq:      0.0%                                        1 min:    1.20                                        total:  7.70G  inactive:  2.07G                                        total:   3.73G
system:   3.4%  iowait:   2.7%                                        5 min:    1.16                                        used:   4.66G  buffers:    242M                                        used:    4.57M
idle:    83.6%  steal:    0.0%                                        15 min:   1.24                                        free:   3.04G  cached:    2.58G                                        free:    3.72G

NETWORK     Rx/s   Tx/s   TASKS 253 (883 thr), 1 run, 252 slp, 0 oth sorted automatically by cpu_percent, flat view
enp1s0     525Kb   31Kb
lo           2Kb    2Kb     CPU%  MEM%  VIRT   RES   PID USER        NI S    TIME+ IOR/s IOW/s Command 
wlp2s0        0b     0b     14.6  13.3 2.53G 1.03G  2957 tecmint      0 S 51:49.10     0   40K /usr/lib/firefox/firefox 
                             7.4   2.2 1.16G  176M  6265 tecmint      0 S  7:08.18     0     0 /usr/lib/Headset/Headset --type=renderer --no-sandbox --primordial-pipe-token=879B36514C6BEDB183D3E4142774D1DF --lan
DISK I/O     R/s    W/s      4.9   3.9 1.63G  310M  2459 tecmint      0 R  7:12.18     0     0 cinnamon --replace
ram0           0      0      4.2   0.2  625M 13.0M  2301 tecmint    -11 S  2:29.72     0     0 /usr/bin/pulseaudio --start --log-target=syslog
ram1           0      0      4.2   1.3 1.52G  105M  6220 tecmint      0 S  3:42.64     0     0 /usr/lib/Headset/Headset 
ram10          0      0      2.9   0.8  409M 66.7M  6240 tecmint      0 S  2:40.44     0     0 /usr/lib/Headset/Headset --type=gpu-process --no-sandbox --supports-dual-gpus=false --gpu-driver-bug-workarounds=7,2
ram11          0      0      2.9   1.8  531M  142M  1690 root         0 S  6:03.79     0     0 /usr/lib/xorg/Xorg :0 -audit 0 -auth /var/lib/mdm/:0.Xauth -nolisten tcp vt8
ram12          0      0      2.6   0.3 79.3M 23.8M  9651 tecmint      0 R  0:00.71     0     0 /usr/bin/python3 /usr/bin/glances
ram13          0      0      1.6   4.8 1.45G  382M  3272 tecmint      0 S  6:25.30     0    4K /opt/google/chrome/chrome 
...

De belastinggemiddelden die door deze tools worden weergegeven, worden gelezen uit het /proc/loadavg-bestand, dat u kunt bekijken met het cat commando zoals hieronder:

$ cat /proc/loadavg

2.48 1.69 1.42 5/889 10570

Om belastinggemiddelden in grafiekformaat te monitoren, bekijk: ttyload – Toont een Kleurgecodeerde Grafiek van Linux Belastinggemiddelde in Terminal

Op desktopmachines zijn er grafische gebruikersinterface-tools die we kunnen gebruiken om systeembelastinggemiddelden te bekijken.

Begrip van Gemiddelde Systeembelasting in Relatie tot Aantal CPU’s

We kunnen het systeemgebruik of de systeemprestaties niet uitleggen zonder in te gaan op de invloed van het aantal CPU-cores op de prestaties.

Multi-processor Vs Multi-core

  • Multi-processor – is waar twee of meer fysieke CPU’s zijn geïntegreerd in een enkel computersysteem.
  • Multi-core processor – is een enkele fysieke CPU die minstens twee of meer afzonderlijke cores heeft (of wat we ook kunnen aanduiden als verwerkingsunits) die parallel werken. Dit betekent dat een dual-core 2 verwerkingsunits heeft, een quad-core 4 verwerkingsunits enzovoort.

Bovendien is er ook een processortechnologie die door Intel is geïntroduceerd om parallelle berekeningen te verbeteren, bekend als hyperthreading.

Onder hyperthreading lijkt een enkele fysieke CPU-kern als twee logische CPU-kernen voor een besturingssysteem (maar in werkelijkheid is er één fysiek hardwareonderdeel).

Merk op dat een enkele CPU-kern slechts één taak tegelijk kan uitvoeren, dus technologieën zoals meerdere CPU’s/processoren, multi-core CPU’s en hyperthreading werden tot leven gebracht.

Met meer dan één CPU kunnen verschillende programma’s tegelijk worden uitgevoerd. Huidige Intel CPU’s gebruiken een combinatie van zowel meerdere cores als hyperthreading-technologie.

Om het aantal beschikbare verwerkingsunits op een systeem te vinden, kunnen we de nproc of lscpu commando’s als volgt gebruiken:

$ nproc
4

OR
lscpu

Een andere manier om het aantal verwerkingsunits te vinden met behulp van het grep-commando zoals getoond.

$ grep 'model name' /proc/cpuinfo | wc -l

4

Nu, om de systeembelasting verder te begrijpen, zullen we een paar aannames doen. Laten we zeggen dat we belastingsgemiddelden hebben onder:

23:16:49 up  10:49,  5 user,  load average: 1.00, 0.40, 3.35
Op een systeem met één kern zou dit betekenen:
  • De CPU werd gemiddeld volledig (100%) gebruikt; 1 proces draaide op de CPU (1,00) gedurende de laatste 1 minuut.
  • De CPU was gemiddeld 60% inactief; er waren geen processen die wachtten op CPU-tijd (0,40) gedurende de laatste 5 minuten.
  • De CPU was gemiddeld overbelast met 235%; 2,35 processen wachtten op CPU-tijd (3,35) gedurende de laatste 15 minuten.
Op een systeem met twee kernen zou dit betekenen:
  • De ene CPU was gemiddeld 100% inactief, de andere CPU werd gebruikt; er waren geen processen die wachtten op CPU-tijd (1,00) gedurende de laatste 1 minuut.
  • De CPU’s waren gemiddeld 160% inactief; er waren geen processen die wachtten op CPU-tijd (0,40) gedurende de laatste 5 minuten.
  • De CPU’s waren gemiddeld overbelast met 135%; 1,35 processen wachtten op CPU-tijd (3,35) gedurende de laatste 15 minuten.

Je zou ook leuk vinden:

  1. 20 Command Line Tools om Linux-prestaties te monitoren – Deel 1
  2. 13 Linux Prestatiemonitoringtools – Deel 2
  3. Perf- Een prestatiebewakings- en analysesysteem voor Linux
  4. Nmon: Analyseer en bewaak de prestaties van het Linux-systeem

Concluderend, als u een systeembeheerder bent, zijn hoge belastinggemiddelden echt iets om u zorgen over te maken. Wanneer ze hoog zijn, boven het aantal CPU-cores, duidt dit op een hoge vraag naar de CPU’s, en lage belastinggemiddelden onder het aantal CPU-cores vertellen ons dat de CPU’s onderbenut zijn.

Source:
https://www.tecmint.com/understand-linux-load-averages-and-monitor-performance/