Mit jelent a load Linuxokon?

Linux 2 perc olvasás

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 top kimenetében a %Cpu(s) sor us és sy é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:

Az uptime, nproc és vmstat 1 5 kimenete terhelés alatt: a load average 3.03, a vCPU-k száma 2, a vmstat r oszlopában 3-6 futásra kész folyamat, a CPU-idő 85 százaléka us, 15 százaléka sy, az id 0

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.

Vissza: Linux leírások (62)