Ymmärrä Linuxin kuormituskeskiarvot ja seuraa Linuxin suorituskykyä
Tässä artikkelissa selitämme yhden kriittisistä Linux-järjestelmän hallintatehtävistä – suorituskyvyn seurannan järjestelmän/suorittimen kuormituksen ja kuormituksen keskiarvojen osalta.
Ennen kuin siirrymme pidemmälle, ymmärretään nämä kaksi tärkeää lausetta kaikissa Unix-tyyppisissä järjestelmissä:
- Järjestelmän kuormitus/CPU-kuormitus – mittaa suorittimen yli- tai alikäyttöä Linux-järjestelmässä. CPU:n suorittamien tai odotustilassa olevien prosessien lukumäärä.
- Keskimääräinen kuormitus – on järjestelmän keskimääräinen kuormitus, joka on laskettu tietylle 1, 5 ja 15 minuutin ajanjaksolle.
Linuxissa kuormituksen keskiarvon uskotaan teknisesti olevan sen (ytimen) suoritusjonossa olevien prosessien juokseva keskiarvo, joka on merkitty käynnissä tai keskeytymättömäksi.
Huomaa:
- Kaikki, elleivät useimmat Linuxilla tai muilla Unix-tyyppisillä järjestelmillä toimivat järjestelmät saattavat näyttää jossain käyttäjän kuormituksen keskiarvot.
- Suorastaan käyttämättömän Linux-järjestelmän kuormituksen keskiarvo voi olla nolla, pois lukien käyttämättömät prosessit.
- Lähes kaikki Unix-tyyppiset järjestelmät laskevat vain käynnissä- tai odotustilassa olevat prosessit. Mutta näin ei ole Linuxin tapauksessa, se sisältää prosesseja keskeytymättömässä lepotilassa; jotka odottavat muita järjestelmäresursseja, kuten levyn I/O jne.
Kuinka seurata Linux-järjestelmän kuormitusta
On olemassa lukuisia tapoja seurata järjestelmän kuormituksen keskiarvoa, mukaan lukien käyttöaika, joka näyttää kuinka kauan järjestelmä on ollut käynnissä, käyttäjien määrä sekä kuormituksen keskiarvot:
uptime
07:13:53 up 8 days, 19 min, 1 user, load average: 1.98, 2.15, 2.21
Numerot luetaan vasemmalta oikealle, ja yllä oleva tulos tarkoittaa, että:
- kuormituksen keskiarvo viimeisen 1 minuutin aikana on 1,98
- kuormituksen keskiarvo viimeisen 5 minuutin aikana on 2,15
- kuormituksen keskiarvo viimeisten 15 minuutin aikana on 2,21
Korkeat kuormituksen keskiarvot viittaavat siihen, että järjestelmä on ylikuormitettu; monet prosessit odottavat suorittimen aikaa.
Paljastamme tämän seuraavassa osiossa suhteessa CPU-ytimien määrään. Lisäksi voimme käyttää myös muita tunnettuja työkaluja, kuten top ja glances, jotka näyttävät käynnissä olevan Linux-järjestelmän reaaliaikaisen tilan, sekä monia muita työkaluja:
Yläkomento
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
....
Katseet työkalu
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
...
Näiden työkalujen näyttämät kuormituksen keskiarvot luetaan /proc/loadavg-tiedostoon, jota voit tarkastella cat-komennolla seuraavasti:
cat /proc/loadavg
2.48 1.69 1.42 5/889 10570
Voit seurata kuormituksen keskiarvoja kaaviomuodossa katsomalla: ttyload – Näyttää värikoodatun kaavion Linuxin kuormituksen keskiarvosta päätteessä
Pöytäkoneissa on graafisia käyttöliittymätyökaluja, joiden avulla voimme tarkastella järjestelmän kuormituksen keskiarvoja.
Järjestelmän keskimääräisen kuormituksen ymmärtäminen suhteessa suorittimien lukumäärään
Emme voi mitenkään selittää järjestelmän kuormitusta tai suorituskykyä paljastamatta prosessoriytimien määrän vaikutusta suorituskykyyn.
Moniprosessori vs moniytiminen
- Moni prosessori – jossa kaksi tai useampi fyysinen suoritin on integroitu yhdeksi tietokonejärjestelmäksi.
- Moniydinprosessori – on yksi fyysinen prosessori, jossa on vähintään kaksi erillistä ydintä (tai mitä voimme kutsua myös prosessointiyksiköiksi), jotka toimivat rinnakkain. Tämä tarkoittaa, että kaksiytimisessä on 2 kaksi prosessointiyksikköä, neliytimisessä 4 prosessointiyksikköä ja niin edelleen.
Lisäksi on olemassa myös prosessoritekniikka, jonka Intel esitteli ensimmäisenä parantaakseen rinnakkaislaskentaa, jota kutsutaan hyperketjuksi.
Hyperketjutuksessa yksi fyysinen CPU-ydin näkyy käyttöjärjestelmässä kahden loogisen suorittimen ytimenä (mutta todellisuudessa on yksi fyysinen laitteistokomponentti).
Huomaa, että yksi CPU-ydin voi suorittaa vain yhden tehtävän kerrallaan, joten tekniikat, kuten useat prosessorit/prosessorit, moniytimisprosessorit ja hypersäikeistys, herätettiin henkiin.
Useamman kuin yhden CPU:n avulla voidaan suorittaa useita ohjelmia samanaikaisesti. Nykypäivän Intel-suorittimet käyttävät sekä useiden ytimien että hypersäikeistysteknologian yhdistelmää.
Järjestelmässä käytettävissä olevien prosessointiyksiköiden määrän selvittämiseksi voimme käyttää nproc- tai lscpu-komentoja seuraavasti:
nproc
4
OR
lscpu
Toinen tapa löytää prosessointiyksiköiden määrä käyttämällä grep-komentoa kuvan mukaisesti.
grep 'model name' /proc/cpuinfo | wc -l
4
Jotta ymmärrämme paremmin järjestelmän kuormitusta, otamme nyt muutamia oletuksia. Oletetaan, että meillä on alla kuormituskeskiarvot:
23:16:49 up 10:49, 5 user, load average: 1.00, 0.40, 3.35
Yhdellä ydinjärjestelmällä tämä tarkoittaisi:
- Suoritin oli keskimäärin täysin (100 %) käytössä; 1 prosessia oli käynnissä CPU:ssa (1.00) viimeisen 1 minuutin aikana.
- CPU oli käyttämättömänä keskimäärin 60 %; mikään prosessi ei odottanut suorittimen aikaa (0,40) viimeisen 5 minuutin aikana.
- Suoritin oli ylikuormitettu keskimäärin 235 %; 2,35 prosessia odotti CPU-aikaa (3,35) viimeisen 15 minuutin aikana.
Kaksiytimisessä järjestelmässä tämä tarkoittaisi:
- Yksi CPU oli keskimäärin 100 % tyhjäkäynnillä, yksi suoritin oli käytössä; mikään prosessi ei odottanut CPU-aikaa (1.00) viimeisen 1 minuutin aikana.
- CPU:t olivat käyttämättömänä keskimäärin 160 %; mikään prosessi ei odottanut suorittimen aikaa. (0,40) viimeisen 5 minuutin aikana.
- Prosessorit olivat ylikuormitettuja keskimäärin 135 %; 1,35 prosessia odottivat suorittimen aikaa. (3.35) viimeisen 15 minuutin aikana.
Saatat myös pitää:
- 20 komentorivityökalua Linuxin suorituskyvyn seurantaan – Osa 1
- 13 Linuxin suorituskyvyn valvontatyökalut – Osa 2
- Perf - Suorituskyvyn seuranta- ja analyysityökalu Linuxille
- Nmon: Analysoi ja valvo Linux-järjestelmän suorituskykyä
Yhteenvetona voidaan todeta, että jos olet järjestelmänvalvoja, korkeat kuormituksen keskiarvot ovat todella huolestuttavia. Kun ne ovat korkeat, prosessoriytimien lukumäärän yläpuolella, se tarkoittaa prosessorien suurta kysyntää, ja alhaiset kuormituksen keskiarvot alle CPU-ytimien määrän kertovat, että prosessorit ovat vajaakäytössä.