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ää:

  1. 20 komentorivityökalua Linuxin suorituskyvyn seurantaan – Osa 1
  2. 13 Linuxin suorituskyvyn valvontatyökalut – Osa 2
  3. Perf - Suorituskyvyn seuranta- ja analyysityökalu Linuxille
  4. 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ä.