Mõistke Linuxi koormuse keskmisi ja jälgige Linuxi jõudlust


Selles artiklis selgitame ühte kriitilist Linuxi süsteemihalduse ülesannet - jõudluse jälgimist süsteemi/protsessori koormuse ja koormuse keskmistega seoses.

Enne kui edasi liigume, mõistkem neid kahte olulist fraasi kõigis Unixi-laadsetes süsteemides:

  • süsteemi koormus/protsessori koormus - protsessori üle- või alakasutuse mõõtmine Linuxi süsteemis; protsessori käivitatavate või ooteseisundis olevate protsesside arv.
  • Koormuse keskmine - on süsteemi keskmine koormus, mis on arvutatud ajavahemikul 1, 5 ja 15 minutit.

Tehnoloogiliselt arvatakse, et Linuxis on laadimiskeskmine selle (kerneli) täitmisjärjekorras töötavate või katkematutena märgitud protsesside jooksev keskmine.

Pange tähele, et:

  • Kõik, kui mitte enamik Linuxi või muude Unixi-laadsete süsteemidega töötavaid süsteeme, näitavad kasutaja keskmist koormuse keskmist väärtust.
  • Otse tühikäigul töötava Linuxi süsteemi koormuse keskmine võib olla null, välja arvatud tühikäigu protsess.
  • Peaaegu kõik Unixi-laadsed süsteemid loevad ainult töötavaid või ootel olevaid protsesse. Kuid Linuxi puhul see nii ei ole, see hõlmab katkematu unerežiimi protsesse; need, kes ootavad muid süsteemiressursse, nagu ketta sisend/väljund jne.

Kuidas jälgida Linuxi süsteemi keskmist koormust

Süsteemi keskmise koormuse jälgimiseks on palju võimalusi, sealhulgas tööaeg, mis näitab süsteemi töötamise aega, kasutajate arvu koos koormuse keskmistega:

$ uptime

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

Numbreid loetakse vasakult paremale ja ülaltoodud väljund tähendab, et:

  • koormuse keskmine viimase 1 minuti jooksul on 1,98
  • koormuse keskmine viimase 5 minuti jooksul on 2,15
  • koormuse keskmine viimase 15 minuti jooksul on 2,21

Suure koormuse keskmised tähendavad süsteemi ülekoormust; paljud protsessid ootavad protsessori aega.

Selle avastame järgmises osas seoses protsessori südamike arvuga. Lisaks saame kasutada ka teisi tuntud tööriistu, nagu pilgud, mis kuvavad töötava Linuxi süsteemi reaalajas olekut, ja paljusid muid tööriistu:

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

Nende tööriistade kuvatud keskmised koormus on fail read/proc/loadavg, mida saate vaadata kassi käsu abil järgmiselt:

$ cat /proc/loadavg

2.48 1.69 1.42 5/889 10570

Graafivormingus keskmiste koormuste jälgimiseks vaadake: ttyload - näitab terminalis Linuxi keskmist koormuse keskmist värvilist graafikut

Lauaarvutites on graafiliste kasutajaliideste tööriistad, mida saame kasutada süsteemi koormuse keskmiste vaatamiseks.

Süsteemi keskmise koormuse mõistmine protsessorite suhtarvus

Me ei saa süsteemi koormust ega süsteemi jõudlust kuidagi lahti seletada, ilma et valgustaksime protsessori südamike arvu mõju jõudlusele.

  • Mitmeprotsessoriline protsess - kaks või enam füüsilist protsessorit on integreeritud ühte arvutisüsteemi.
  • Mitmetuumaline protsessor - on üks füüsiline protsessor, millel on vähemalt kaks või enam eraldi paralleelselt töötavat südamikku (või mida võime nimetada ka töötlusüksusteks). See tähendab, et kahetuumalises on kaks kahte töötlusüksust, neljatuumalises on 4 töötlemisüksust ja nii edasi.

Lisaks on olemas ka protsessoritehnoloogia, mille Intel võttis esmakordselt kasutusele paralleelarvutuste täiustamiseks, mida nimetatakse hüperniitimiseks.

Hüperniidi all kuvatakse üks füüsiline protsessori tuum operatsioonisüsteemi kahe loogilise protsessori tuumana (kuid tegelikult on olemas üks füüsiline riistvarakomponent).

Pange tähele, et üks protsessori tuum saab korraga täita ainult ühte ülesannet, seega elustati selliseid tehnoloogiaid nagu mitu protsessorit/protsessorit, mitme tuumaga protsessorit ja hüperniitimist.

Rohkem kui ühe protsessori korral saab korraga käivitada mitu programmi. Tänapäeva Inteli protsessorid kasutavad nii mitme südamiku kui ka hüperniitimise tehnoloogia kombinatsiooni.

Süsteemis saadaolevate töötlusüksuste arvu leidmiseks võime kasutada käske nproc või lscpu järgmiselt:

$ nproc
4

OR
lscpu

Teine viis töötlusüksuste arvu leidmiseks grep-käsu abil, nagu näidatud.

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

4

Nüüd, et süsteemi koormust paremini mõista, võtame mõned eeldused. Oletame, et meil on allpool toodud koormuse keskmised:

23:16:49 up  10:49,  5 user,  load average: 1.00, 0.40, 3.35

  • Keskprotsessorit kasutati täielikult (100%); CPU-s (1.00) käis viimase 1 minuti jooksul 1 protsess.
  • CPU oli jõude keskmiselt 60%; ükski protsess ei oodanud protsessori aega (0,40) viimase 5 minuti jooksul.
  • CPU oli keskmiselt ülekoormatud 235%; 2.35 protsessi ootasid protsessori aega (3.35) viimase 15 minuti jooksul.

  • Üks protsessor oli keskmiselt 100% tühikäigul, kasutusel oli üks protsessor; ükski protsess ei oodanud protsessori aega (1.00) viimase 1 minuti jooksul.
  • Keskprotsessorid olid jõude keskmiselt 160%; ükski protsess ei oodanud protsessori aega. (0,40) viimase 5 minuti jooksul.
  • protsessorid olid keskmiselt üle koormatud 135%; Protsessori aega ootasid 1,35 protsessi. (3.35) viimase 15 minuti jooksul.

Võite ka meeldida:

  1. 20 käsurea tööriista Linuxi jõudluse jälgimiseks - 1. osa
  2. 13 Linuxi jõudluse jälgimise tööriista - 2. osa
  3. Perf- Linuxi toimivuse jälgimise ja analüüsi tööriist
  4. Nmon: analüüsige ja jälgige Linuxi süsteemi jõudlust

Kokkuvõtteks võib öelda, et kui olete süsteemiadministraator, siis on suurte koormuste keskmised murettekitavad. Kui need on suured, ületavad protsessori tuumade arvu, tähendab see suurt nõudlust protsessorite järele ja madalad keskmised koormuse keskmised protsessori südamike arvust allpool näitavad meile, et protsessorid on alakasutatud.