Hermoraun.io

Load average on huono numero

Atk · Unix

Aikoinaan, kun 90-luvun lopulla aloin tutustua Linuxiin, kirjastosta lainattu kirja opetti käsitteen “load average”. Asia vaikutti hankalalta, enkä ole vieläkään oikein oppinut sitä käyttämään.

Kaikissa Unix-tyyppisissä käyttöjärjestelmissä on käsite “load average”, jonka saa näkyviin esimerkiksi komennoilla uptime ja top. Se on yksikötön lukuarvo, joka tarkoittaa perinteisesti suunnilleen “kuinka moni prosessi odotti tai käytti suoritinaikaa n minuutin aikana”. Lukema näytetään yhden, viiden ja viidentoista minuutin keskiarvona. Kuormattomana tyhjäkäyvällä tietokoneella load on nolla.

Kirjoittaessani tätä tekstiä oman läppärini uptime-tuloste näyttää tältä:

13:07:30 up  3:41,  1 user,  load average: 1.42, 1.65, 1.63

Minusta load average ei varsinkaan nykyään ja varsinkaan Linuxissa ole mielekäs tai helppokäyttöinen käsite. Load ei sellaisenaan anna helposti käsitettävää kuvaa tietokoneen kuormatilanteesta, jos ei tunne tietokoneen rakenteesta yksityiskohtia, kuten vähintäänkin suoritinytimien lukumäärän.

Useimmat Unixit laskevat mukaan vain prosessit running- tai runnable-tiloissa, mutta Linux ottaa huomioon myös uninterruptible sleep -tilaiset prosessit, jotka käytännössä yleensä odottavat I/O:ta kuten massamuistia. Näin ollen Linuxin load-lukemat voivat olla rajusti erilaiset kuin muiden Unixien. Linuxin loadia saattaa siis nostaa ihan muualla oleva kuormitus, esimerkiksi NFS-levyjaon hidastuminen verkkohäiriöiden vuoksi.

Load average on varmasti ollut helppokäyttöinen ja yhdellä silmäyksellä ymmärrettävä käsite 80-luvulla, kun se on tarkoittanut yksiselitteisesti suoritinkuormitusta ja suorittimia on tyypillisesti ollut vain yksi per tietokone. Nykyisin kun kaikissa tietokoneissa on vähän eri määrät fyysisiä ja loogisia suoritinytimiä ja loadin käsite on paljon laajempi Linuxissa – joka on ylivoimaisesti suosituin Unix-tyyppinen käyttöjärjestelmä – load ei enää tarkoita oikein mitään.

Itse tykkään mieluummin katsella erikseen levy-I/O:ta (iotop, iostat), verkkoliikenteen määriä (iftop, nethogs) ja prosessorikuormitusta (htop), sillä ne harvoin liittyvät kovin kiinteästi toisiinsa, enkä juuri koskaan kaipaa mitään kaiken kokoavaa järjestelmäkuormituksen mittaria.