A load (terhelés, angolul load average) a Linux rendszerek egyik leggyakrabban figyelt mutatója. Azt mutatja meg, átlagosan hány folyamat akart egyszerre dolgozni: hány futott éppen a processzoron vagy várt a sorára (futtatható állapot), és hány várakozott megszakíthatatlan állapotban, jellemzően lemez- vagy hálózati I/O-ra (az ún. D állapot). A load tehát nem százalék, és nem közvetlenül a CPU-használatot méri, hanem a rendszer iránti „keresletet”.
A három szám
A load értékét három szám írja le, például:
load average: 1.20, 0.85, 0.60
Ezek az utolsó 1, 5 és 15 perc exponenciálisan simított átlagai. Az összevetésükből kiderül a tendencia: ha az első szám a legnagyobb, a terhelés éppen nő; ha a legkisebb, egy korábbi csúcs már lecsengőben van.
Hogyan kérdezhető le?
uptime
cat /proc/loadavg
nproc
Az uptime és a top első sora is kiírja a három értéket. A nproc a processzormagok (VPS-en a vCPU-k) számát adja meg, amely nélkül a load nem értelmezhető. A top és a htop használatáról a folyamatok figyeléséről szóló cikkünk szól.
Mikor magas a load?
A loadot mindig a magok számához viszonyítsa:
- Egy 4 vCPU-s szerveren a 4-es load nagyjából teljes kihasználtságot jelent: minden magon fut valami, de senki nem vár sokat.
- Ha a load tartósan a magok számánál magasabb, a folyamatok sorban állnak, a szerver lassabban válaszol.
- Egy rövid, egyperces kiugrás (például egy cron-feladat vagy mentés idején) önmagában nem baj; a 15 perces érték a mérvadóbb.
Mi okozhat magas loadot?
Mivel a load az I/O-ra várakozó folyamatokat is számolja, magas load mellett a CPU akár szinte tétlen is lehet. Ezért mindig nézze meg, mi áll a háttérben:
- CPU-terhelés: a
topkimenetében a%Cpu(s)soruséssyértéke magas, egy vagy több folyamat sok CPU-t használ (például egy elszabadult PHP-szkript vagy egy robotforgalom által terhelt weboldal). - Lemezre várakozás: magas a
wa(iowait) érték, a lemez a szűk keresztmetszet. Okozhatja egy nagy mentés, egy rosszul indexelt adatbázis-lekérdezés, vagy az, hogy a memória elfogyott, és a rendszer a swapot használja. - Virtualizált környezet: VPS-en a
st(steal) érték azt mutatja, mennyi időt várt a virtuális gép a fizikai processzorra.
A vmstat 1 parancs másodpercenként kiírja a futó (r) és a blokkolt (b) folyamatok számát, valamint a CPU-idő megoszlását, ami segít eldönteni, melyik eset áll fenn. Egy 2 vCPU-s AlmaLinux 10-es tesztgépen, három processzort terhelő folyamattal és egy folyamatos lemezírással:
A 3,03-as load 2 magon azt jelenti, hogy átlagosan egy folyamat mindig várakozott. Az r oszlopban 3–6 folyamat állt sorban a 2 magra, a tétlen idő (id) 0 volt: ez CPU-szűk keresztmetszet. A vmstat első sora a rendszerindítás óta vett átlagot mutatja (itt még 95% tétlen időt), a valós képet a második sortól kapja.
Mit tegyen, ha tartósan magas?
Először keresse meg és optimalizálja a terhelést okozó folyamatot: gyorsítótárazással, az adatbázis-lekérdezések javításával vagy a felesleges cron-feladatok ritkításával. Ha a terhelés a forgalommal arányos, és a szerver egyszerűen kicsi a feladatra, a KVM VPS-csomagok között nagyobb, több vCPU-s változatot is választhat.
