az első igazi CPU Terhelés Átlagos Linux
a Linux Terhelés Átlagos olyan régi, mint a hegyek, olyan zavaros, mint néhány mérnökök is meg tudom mondani, hogy mi az valójában, vagy hogy hogy kell kiszámítani.,
szerencsére Brendon Gregg nagyszerű összefoglalóval rendelkezik, beleértve annak történetét, a Linux betöltési Átlagoknál: a rejtély megoldása, ahol láthatja az alapvető problémát:
a Linux betöltési átlaga magában foglalja az I/O
Ez olyan egyszerű. Ellentétben az összes többi UNIX-szerű rendszerrel (Solaris, AIX stb.), A Linux mind a futó/futtatható folyamatokat, mind a blokkolt (Szünetmentes) folyamatokat számolja, amelyek általában I/O-ra várnak.ez rossz dolog, és egy archaikus 24 éves javításra nyúlik vissza, amelyet Brendon talált.
miért érdekel?,
mi érdekel, mert minden vegyes használatú rendszer (mind a CPU, mind az I/O), a kapott terhelési átlag nagyon változó, és gyakran haszontalan. Ez különösen rossz lehet a nagyon menetes rendszereknél, amelyek I/O-t okozhatnak, így könnyű tucatnyi vagy több száz blokkolni őket lassú lemezeken.
amit a legtöbben igazán akar a hagyományos Unix intézkedés terhelés átlagos, amely az átlagos száma futtatható folyamatok átlagolt idővel. Ez megmutatja, hogy mennyire van betöltve a rendszerünk, a várólistát pedig a telítettség mértékének tekinthetjük, azaz, a folyamatos CPU sor azt jelenti, w vagyunk túlterhelt.
Szóval, hogyan lehet ezt megszerezni?
nagyon szeretnénk a CPU futási sor hosszát, amely > 0 lesz, amikor a folyamatoknak meg kell várniuk a CPU-t. De nehéz pontosan megszerezni, és a Linux kernel nem túl barátságos ezen a területen.
először is, amit a Linux emberek a futási sornak hívnak, magában foglalja a futó feladatokat, tehát nem a sor, hanem a sor plusz a Futtatás. Ez zavaró, ezért le kell vonnia a CPU-k számát, hogy megértse a valódi várólistát.,
Több eszköz is kap az aktuális futási sor méretét. Ezt mutatja a vmstat “r” oszlopa és a “sar-q”; mindkettő ezt a /proc/stat procs_running metrikájából kapja.
a probléma az, hogy ez egy pillanatnyi szám, ezért nagyon zajos, ezért átlagolni kell, hogy hasznos adatokat kapjon, de a kernel ezt nem fogja megtenni az Ön számára. Ideális esetben lenne egy kernel kimenet / proc csak CPU és I/O csak terhelés átlagok, de senki sem hozta létre ezt még.,
tehát szükségünk van egy olyan eszközre, amely megpróbálja emulálni a terhelési átlag működését azáltal, hogy gyorsan mintavételezi ezt az azonnali futási sor méretét, és ezt az idő múlásával átlagolja.
bevezetése runqstat
runqstat ezt teszi — ez egy egyszerű parancssori eszköz írva Go, hogy alapértelmezés szerint ez a sor mérete minden 10ms és átlagolja ezt több mint egy másodperc. A cél egy stabil és pontos mérőszám, hogy mennyire elfoglalt a rendszer.,
Ez magában foglalja a lehetőséget, hogy módosítsa a minta sebességét, átlagolási idő, plusz, hogy vonja le a CPU-k számát, így csak látni a tényleges sor méretét, ha akarod.
lehetőség van az átlagos blokkolt szám kiszámítására is,amelyet elméletileg kivonhat a terhelési átlagból, hogy eltérő képet kapjon a CPU telítettségéről (és hogy megnézze, mennyi gondot okoz a terhelés átlaga).
ezzel az eszközzel az ops csapatoknak végre van egy jó módja annak, hogy figyelemmel kísérjék a Linux szerverek telítettségét.
keresse meg a Github-runqstat