Load average

From ICO wiki

Järgnev tekst on mõeldud eelkõige inimesele kes on eelnevalt tuttav linuxiga ning teab lihtsamaid termineid ja mõisteid. Alljärgnev tekst selgitab lähemalt mis on load average, kuidas sellest tuleb aru saada, kust seda otsida ja kuidas tõlgendada. Üldjuhul võiks load average olla üks esimesi näitajaid mida kontrollitakse, kui tahetakse teada kas vaadeldav server on ülekoormatud või mitte.


Mis on load average

Nagu nimi juba viitab, siis load average näitab süsteemi koormust(load), täpsemalt CPU koormust. Mida kõrgem on load average väärtus, seda suurem on CPU koormus, ehk siis mida madalam on load average, seda parem. Kui administraator räägib süsteemi koormuse näitajast siis enamjaolt peetakse silmas just load average.

Iga administraator võiks süsteemi logimise järel käivitada käsu uptime , sellega näeb ära kui kaua on server järjest töötanud, mitu kasutajat on süsteemi logitud ja mis on load average näitaja.

$ uptime       
08:32:30 up 5 days, 15:29, 2 users, load average: 1.37, 10.15, 8.10

Näites on näha et load average väärtused on 1.37, 10.15, 8.10. Need väärtused näitavad keskmist koormust viimase minuti, 10 minuti ja 15 minuti jooksul. Kui see väärtus oleks 0 siis see tähendab et sinu süsteem on täielikult puhke seisundis. Kui kesmise koormuse näitaja on 1, siis see tähendab et CPU on niipalju hõivatud et üks protsess peab ootama CPU aega. Kui load average väärtuseks on 1 ,ning käivitada protsess mis kasutab CPUd siis oleks uus average load väärtus 2. Load average annab hea ülevaate kui koormatud on sinu süsteem keskmiselt viimase minuti, 10 minuti ja 15 minuti jooksul olnud.


Silmas tuleb pidada, et kui vaadata load average väärtust siis see ei ole vastavuses sinu süsteemi CPU-de arvuga. Kokkuvõtlikult tähendab see seda et ühe CPU-ga süsteemi average load 1 on sama mis 4 CPU-ga süsteemis average load 4. Kui nüüd seda silmas pidades vaadata näidet ja arvestada et sellel süsteemil on 1 CPU siis võib sealt välja lugeda, et 15 min tagasi(8.10) oli süsteemi koormus üsna kõrge, ning 5 min tagasi(10.15) oli koormus tõusnud veelgi, kuid viimase minuti jooksul(1.37) langes koormus tagasi oodatud piiridesse. Muretsema peaks hakkama siis kui koormus on püsivalt kõrge, hetkelised koormuse hüpped on üsna tavapärased.


Kui aga load average näitajad juhtuvad olema sellised: load average: 25.37, 11.15, 8.10, siis sellisel juhul võiks tekkida kahtlus et midagi on korrast ära ja peaks hakkama suure koormuse tagamaid selgitama. Samas peab silmas pidama et igale serverile tuleb läheneda individuaalselt ning võib olla et mõne serveriga ei juhtu sellise koormuse juures midagi ja samas mõni teine server ei saa sellise koormusega üldse hakkama. Siinkohal load average tõlgendamisel mängib väga suurt rolli kogemus ja vastava serveri iseärasused.


Piltlik näide mis aitab paremini aru saada load average väärtusest


Juhul kui ma ei ole veel load average näitaja suurust suutnud selgeks teha siis toon siinkohal ühe piltliku näite.

Oletame et üks CPU tähistab üherealist teed üle silla ja sina oled silla operaator ning tahad kuidagi sillale sõitvatele autodele teada anda kui koormatud sild on.

Siis load average loogikat kasutades:

  • 0.00 - see tähendab et mitte ühtegi autot ei ole sillal
  • 1.00 - tähendab et sild on autosid täpselt täis, ei ole järjekorda ja ei ole ka sillal rohkem ruumi
  • rohkem kui 1.00 tähendab et sild on autosid täis ja on ka tekkinud juba järjekord
Sild1.png = koormus on 1.00
Sild2.png = koormus on 0.50
Sild3.png = koormus on 1.70


Kui kõrge on kõrge

Nüüd kui teame mis load average endast kujutab tuleks vaadata lähemalt millised näitajad võib lugeda heaks ja millised halvaks. Sellele kahjuks aga ühest vastust ei ole, sest see sõltub kõik serverist ja sellest mille tagajärjel koormus tõuseb. Kui koormus serveris tõuseb siis peaks olema esimene küsimus, et mis tekitab sellist koormust. Üldiselt võib liigitada algpõhjuse kolmeks: CPU-ga seotud koormuse tõus, mäluga seotud probleemid ja I/O-ga seotud koormus. Probleemi täpsemaks välja selgitamiseks soovitan kasutada programmi top. See on laialt levinud ja peaks olema koheselt kättesaadav enamikes Linuxi süsteemides. Top programmi esimesed 5 rida annavad kokkuvõtlikult infot koormuste ja serveri resursi kasutamise osas. Esimene rida näitab sama infot mis näitab käsk uptime. Täpsemat infot top kohta leiab internetist, top on suureks abiks just koormuse probleemide leidmisel.

$ top

Top.png


Kindlasti ei tasuks sattuda paanikasse kui serveri viimase 15 minuti keskmine average load on näiteks 15, aga server ei ole aeglane ja ei tekita probleeme. Kuid sellisel juhul peaks vaikselt uurima mis selle average load näitaja kõrgeks ajab. Näiteks võib tulla välja et koormuse ajab kõrgeks HDD mis ei tule enam ReadWrite koormusega toime ja siis peaks mõtlema ketaste lisamise või vahetamise peale. Ketaste koormust saab kontrollida iostat programmiga. Kui mõni lugeja arvab et käsureaga ta suur sõber ei ole siis toon siinkohal välja kaks graafilist rakendust mis pakuvad sama infot desktoplt mida pakub https://scoutapp.com/: http://scoutapp.com/plugin_urls/4-server-load ja http://scoutapp.com/plugin_urls/151-load-per-processor


Kokkuvõte

Kui server muutub aeglaseks siis esmalt võiks vaadata uptime käsuga load average näitajat. Kui näitaja on viimase 15 minuti jooksul keskmiselt üle 'serveri tuumade arv' * 1,15(see ei ole rusikareegel, vaid mõeldud inimesele kes kuuleb load average-st esmakordselt ja kellel puudub varasem kogemus), siis tuleks hakata otsima täpset ülekoormuse põhjust. Koormuse kasv võib tuleneda väga erinevates põhjustest nii et igat juhtumit tuleks käsitleda vastavalt olemasolevale infole ja tuginedes enda kogemusele.


Load average võib kasutada analüüsiks, et teada saada kui koormatud on server või milline on serveri koormus erinevatel kellaaegadel. Selliseks perioodiliseks andmete analüüsks võib kirjutada skripti või kasutada mõnda valmisolevat lahendust. Seda infot saab kasutada, näiteks serveri ressursi nõudluse määramiseks.


Kasutatud kirjandus

Autor

Kaido Loonurm