A terhelési átlag megértése Linuxon

Understanding Load Average Linux



A terhelési átlag a rendszerprocesszoron rendelkezésre álló munka mennyiségének és szabad CPU -ciklusainak mértéke. Ebben a cikkben definiálom a kifejezést, bemutatom, hogyan számítja ki a Linux ezt az értéket, majd betekintést nyújtok a rendszerterhelés értelmezésébe.

Mielőtt belemerülnénk a Linux terhelési átlagába, meg kell vizsgálnunk a terhelés kiszámításának különböző módjait, és foglalkoznunk kell a CPU terhelésének leggyakoribb mérésével - százalékkal.







A Windows másképpen számítja a terhelést, mint a Linux, és mivel a Windows történelmileg népszerűbb az asztalon, a Windows terhelési definícióját általában érti a legtöbb számítógép -felhasználó. A legtöbb Windows -felhasználó látta, hogy a feladatkezelőben a rendszer terhelése 0% és 100% közötti százalékban jelenik meg.



A Windows rendszerben ez annak megállapításából származik, hogy mennyire elfoglalt Rendszer tétlen folyamat is és az inverz segítségével ábrázolja a rendszer terhelését. Például, ha az üresjárati szál az idő 99% -át hajtja végre, akkor a Windows CPU -terhelése 1% lesz. Ez az érték könnyen érthető, de kevesebb átfogó információt nyújt a rendszer valódi állapotáról.



Linux alatt a terhelési átlagot ehelyett egy tizedes szám jelenti, amely 0,00 -tól kezdődik. Az érték nagyjából úgy határozható meg, mint azoknak a folyamatoknak a száma az elmúlt percben, amelyeknek meg kellett várniuk a sorukat a végrehajtásra. A Windows rendszerrel ellentétben a Linux terhelési átlaga nem azonnali mérés. A terhelést három értékben kell megadni - az egy perces, az öt perces átlag és a tizenöt perces átlag.





A terhelési átlag megértése Linuxon

Eleinte ez az extra részletréteg szükségtelennek tűnik, ha egyszerűen tudni szeretné a rendszer CPU terhelésének jelenlegi állapotát. De mivel három időtartam átlagait adjuk meg, nem pedig azonnali mérést, így három szám egyetlen pillantásával teljesebb képet kaphat a rendszer terhelésének időbeli változásáról.

A terhelési átlag megjelenítése egyszerű. A parancssorban különféle parancsokat használhat. Egyszerűen használom a w parancsot:



gyökér@Szűz[~]# ban ben
huszonegy: 08:43fel38napok,4:3. 4,4 felhasználók, terhelési átlag:3.11,2,75,2.70

A parancs többi része megjeleníti, hogy ki jelentkezett be és mit hajt végre, de a mi célunkból ez az információ irreleváns, ezért kivágtam a fenti kijelzőről.

Egy ideális rendszerben egyetlen folyamatot sem szabad más folyamatnak (vagy szálnak) feltartóztatnia, de egyetlen processzoros rendszerben, ez akkor fordul elő, ha a terhelés 1,00 fölé megy.

Hihetetlenül fontosak itt az egy processzoros rendszer szavak. Hacsak nem egy ősi számítógépet használ, a gép valószínűleg több CPU -maggal rendelkezik. A gépen, amelyen vagyok, 16 magom van:

gyökér@Szűz[~]# nproc
16

Ebben az esetben a 3,11 terhelési átlag egyáltalán nem riasztó. Ez egyszerűen azt jelenti, hogy valamivel több mint három folyamat volt kész végrehajtásra, és a CPU magok jelen voltak a végrehajtásuk kezelésére. Ezen a rendszeren a terhelésnek el kell érnie a 16 -ot, hogy 100%-on lehessen figyelembe venni.

Ha ezt százalékos alapú rendszerterheléssé szeretné fordítani, akkor használja ezt az egyszerű, ha nem tompa parancsot:

macska /százalék/loadavg| vágott -c 1-4 | kidobta 'skála = 2; ($ (/`nproc`) * 100 ' | időszámításunk előtt -az

Ez a parancssor elvágja az 1 perces átlagot a vágáson keresztül, és visszhangozza azt, elosztva a CPU magok számával, a bc parancssori számológépen keresztül, hogy kiszámítsa a százalékot.

Ez az érték semmiképpen sem tudományos, de nagyjából közelíti a CPU terhelését százalékban.

Egy perc a tanuláshoz, egy élet a mesterhez

Az előző részben idézőjelbe tettem a 16% -os terhelés 100% -os példáját 16 CPU -s rendszerre, mert a terhelés kiszámítása Linuxon kissé ködösebb, mint a Windows. A rendszergazdának szem előtt kell tartania, hogy:

  • A terhelést várakozási folyamatokban és szálakban fejezik ki
  • Ez nem pillanatnyi érték, inkább átlag, és
  • Az értelmezésnek tartalmaznia kell a CPU magok számát, és
  • Lehetséges, hogy a felfúvott I/O várakozások a lemezolvasásokhoz hasonlóak

Emiatt a CPU terhelés kezelése egy Linux rendszeren nem teljesen empirikus kérdés. Még ha lenne is, a CPU terhelése önmagában nem megfelelő mérése a rendszer teljes erőforrás -kihasználtságának. Így egy tapasztalt Linux rendszergazda figyelembe veszi a CPU terhelését más értékekkel, például az I/O várakozással és a kernel százalékos arányával a rendszeridőhöz képest.

I/O Várj

Az I/O várakozás a legegyszerűbben a felső paranccsal látható:

A fenti képernyőképen kiemeltem az I/O várakozási értéket. Ez az idő százalékos aránya, amelyet a CPU várt a be- vagy kimeneti parancsok befejezésére. Ez általában a lemez nagy aktivitására utal. Míg a magas várakozási százalék önmagában nem ronthatja jelentősen a CPU-hoz kötött feladatokat, csökkenti az I/O teljesítményt más feladatoknál, és a rendszert lassúnak érzi.

A magas I/O várakozás nyilvánvaló ok nélkül jelezheti a lemez problémáját. A dmesg paranccsal ellenőrizheti, hogy történt -e hiba.

Kernel vs. rendszeridő

A fenti kiemelt értékek a felhasználó és a rendszermag (rendszer) idejét jelzik. Ez a CPU idő teljes fogyasztásának lebontása a felhasználók (azaz alkalmazások stb.) És a rendszermag (azaz a rendszereszközökkel való interakció) szerint. A magasabb felhasználói idő azt jelzi, hogy a programok több CPU-t használnak, ahol a magasabb kernelidő több rendszerszintű feldolgozást jelez.

Elég átlagos terhelés

A terhelési átlag és a tényleges rendszer teljesítmény közötti kapcsolat megtanulása időbe telik, de nemsokára egyértelmű összefüggést fog látni. A rendszer teljesítménymutatóinak bonyolultságával felvértezve jobb döntéseket hozhat a hardverfrissítésekről és a program erőforrás -kihasználásáról.