Zoeken op website

Begrijp de Linux-belastingsgemiddelden en bewaak de prestaties van Linux


In dit artikel leggen we een van de cruciale Linux-systeembeheertaken uit: prestatiemonitoring met betrekking tot systeem-/CPU-belasting en belastinggemiddelden.

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

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

In Linux wordt technisch gezien aangenomen dat het belastingsgemiddelde een lopend gemiddelde is van processen in de (kernel) uitvoeringswachtrij die zijn getagd als actief of niet-onderbreekbaar.

Merk op dat:

  • Al zullen de, zo niet de meeste, door Linux of andere Unix-achtige systemen aangedreven systemen mogelijk ergens de gemiddelde belastingswaarden voor een gebruiker weergeven.
  • Een ronduit inactief Linux-systeem kan een gemiddelde belasting van nul hebben, het inactieve proces niet meegerekend.
  • Bijna alle Unix-achtige systemen tellen alleen processen in de actieve of wachtende status. Maar dit is niet het geval bij Linux; het omvat processen in ononderbroken slaaptoestanden; degenen die wachten op andere systeembronnen zoals schijf-I/O enz.

Hoe u de gemiddelde systeembelasting van Linux kunt monitoren

Er zijn talloze manieren om het gemiddelde van de systeembelasting te controleren, inclusief de uptime die laat zien hoe lang het systeem actief is, het aantal gebruikers en de gemiddelde belasting:

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:

  • Het laadgemiddelde over de afgelopen 1 minuut is 1,98
  • Het laadgemiddelde over de afgelopen 5 minuten is 2,15
  • Het laadgemiddelde over de afgelopen 15 minuten is 2,21

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

We zullen dit in de volgende sectie ontdekken met betrekking tot het aantal CPU-kernen. Daarnaast kunnen we net zo goed andere bekende tools gebruiken, zoals top en blikken die de realtime status van een draaiend Linux-systeem weergeven, plus vele andere tools:

Topcommando

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

Gereedschap voor blikken

glances
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 laadgemiddelden die door deze tools worden weergegeven, zijn het leesbestand /proc/loadavg, dat u kunt bekijken met de cat-opdracht, zoals hieronder:

cat /proc/loadavg

2.48 1.69 1.42 5/889 10570

Om de laadgemiddelden in grafiekformaat te monitoren, ga naar: ttyload – Toont een kleurgecodeerde grafiek van Linux Load Average in Terminal

Op desktopmachines zijn er grafische gebruikersinterfacetools die we kunnen gebruiken om de gemiddelden van de systeembelasting te bekijken.

Inzicht in de gemiddelde systeembelasting in relatie tot het aantal CPU's

We kunnen onmogelijk de systeembelasting of systeemprestaties verklaren zonder licht te werpen op de impact van het aantal CPU-kernen op de prestaties.

Multiprocessor versus multi-core

  • Multiprocessor – hier zijn twee of meer fysieke CPU's geïntegreerd in één computersysteem.
  • Multi-core processor – is een enkele fysieke CPU die ten minste twee of meer afzonderlijke kernen heeft (of wat we ook wel verwerkingseenheden kunnen noemen) die parallel werken. Dit betekent dat een dual-core twee verwerkingseenheden heeft, een quad-core vier verwerkingseenheden, enzovoort.

Verder is er ook een processortechnologie die voor het eerst door Intel werd geïntroduceerd om parallel computergebruik te verbeteren, ook wel hyperthreading genoemd.

Bij hyperthreading verschijnt een enkele fysieke CPU-kern als twee logische CPU's die de kern vormen van een besturingssysteem (maar in werkelijkheid is er één fysieke hardwarecomponent).

Merk op dat een enkele CPU-kern slechts één taak tegelijk kan uitvoeren, waardoor technologieën zoals meerdere CPU's/processors, multi-core CPU's en hyper-threading tot leven werden gebracht.

Met meer dan één CPU kunnen meerdere programma's tegelijkertijd worden uitgevoerd. De huidige Intel CPU's gebruiken een combinatie van zowel meerdere cores als hyperthreading-technologie.

Om het aantal beschikbare verwerkingseenheden op een systeem te vinden, kunnen we de opdrachten nproc of lscpu als volgt gebruiken:

nproc
4

OR
lscpu

Een andere manier om het aantal verwerkingseenheden te vinden met behulp van de grep-opdracht, zoals weergegeven.

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

4

Om de systeembelasting verder te begrijpen, zullen we een paar aannames doen. Laten we zeggen dat we hieronder belastinggemiddelden hebben:

23:16:49 up  10:49,  5 user,  load average: 1.00, 0.40, 3.35
Op een single core-systeem zou dit betekenen:
  • De CPU werd gemiddeld volledig (100%) benut; Er zijn de afgelopen minuut 1 processen op de CPU uitgevoerd (1,00).
  • De CPU was gemiddeld 60% inactief; er hebben de afgelopen 5 minuten geen processen gewacht op CPU-tijd (0,40).
  • De CPU werd gemiddeld met 235% overbelast; De afgelopen 15 minuten wachtten 2,35 processen op CPU-tijd (3,35).
Op een dual-core systeem zou dit betekenen:
  • De ene CPU was gemiddeld 100% inactief, er werd één CPU gebruikt; er hebben de afgelopen 1 minuut geen processen gewacht op CPU-tijd (1,00).
  • De CPU's waren gemiddeld 160% inactief; er wachtten geen processen op CPU-tijd. (0.40) over de afgelopen 5 minuten.
  • De CPU's werden gemiddeld met 135% overbelast; 1,35 processen wachtten op CPU-tijd. (3.35) over de laatste 15 minuten.

Misschien vind je dit ook leuk:

  1. 20 opdrachtregelprogramma's om de prestaties van Linux te monitoren - Deel 1
  2. 13 Linux-tools voor prestatiebewaking – Deel 2
  3. Perf- Een prestatiebewakings- en analysetool voor Linux
  4. Nmon: Analyseer en bewaak de prestaties van Linux-systemen

Concluderend: als u een systeembeheerder bent, zijn hoge belastinggemiddelden een reële reden om u zorgen over te maken. Als ze hoog zijn, boven het aantal CPU-cores, betekent dit een grote vraag naar de CPU's, en lage belastinggemiddelden onder het aantal CPU-cores vertellen ons dat CPU's onderbenut zijn.