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:
- 20 käsurea tööriista Linuxi jõudluse jälgimiseks - 1. osa
- 13 Linuxi jõudluse jälgimise tööriista - 2. osa
- Perf- Linuxi toimivuse jälgimise ja analüüsi tööriist
- 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.