Weboldal keresés

Cpustat – Figyeli a CPU kihasználtságát a folyamatok futtatásával Linux alatt


A Cpustat egy hatékony rendszerteljesítmény-mérő program Linuxhoz, amely Go programozási nyelven íródott. Megpróbálja hatékonyan feltárni a CPU kihasználtságát és telítettségét a The Utilisation Saturation and Errors (USE) Method (amely módszertan bármely rendszer teljesítményének elemzésére) segítségével.

A rendszerben végrehajtott összes folyamatból magasabb frekvenciájú mintákat vesz ki, majd ezeket a mintákat alacsonyabb frekvencián összegzi. Például képes mérni minden folyamatot 200 ms-onként, és minden 5 másodpercenként összegzi ezeket a mintákat, beleértve bizonyos mutatók min/átlag/max értékeit.

Javasolt olvasmány: 20 parancssori eszköz a Linux teljesítményének figyeléséhez

A Cpustat két lehetséges módon ad ki adatokat: az összefoglaló intervallum tiszta szöveges listáját és az egyes minták színes görgető irányítópultját.

A Cpustat telepítése Linux alatt

A cpustat használatához telepítenie kell a Go (GoLang) programot a Linux rendszerére, kattintson az alábbi linkre a GoLang telepítési lépéseinek követéséhez, ha még nincs. telepítette:

  1. Telepítse a GoLang-ot (Go programozási nyelv) Linuxra

A Go telepítése után írja be a go get parancsot alább a telepítéshez. Ez a parancs telepíti a cpustat bináris fájlt a GOBIN-be. változó:

go get github.com/uber-common/cpustat

A Cpustat használata Linux alatt

Amikor a telepítési folyamat befejeződött, futtassa a cpustat parancsot az alábbiak szerint root jogosultságokkal a sudo paranccsal, vagyis ha nem root felhasználóként vezérli a rendszert, ellenkező esetben a képen látható hibaüzenet jelenik meg:

$GOBIN/cpustat
This program uses the netlink taskstats interface, so it must be run as root.

Megjegyzés: A cpustat, valamint az összes többi, a rendszerére telepített Go program futtatásához, mint bármely más parancshoz, használja a GOBIN parancsot. változót a PATH környezeti változóban. Nyissa meg az alábbi linket, hogy megtudja, hogyan állíthatja be a PATH változót Linuxban.

  1. Tanulja meg, hogyan állíthatja be állandóan a ` PATH-változókat Linuxon

Így működik a cpustat; a /proc könyvtárat lekérdezi, hogy megkapja a folyamatazonosítók aktuális listáját minden intervallumhoz, és:

  • minden PID esetében olvassa el a /proc/pid/stat fájlt, majd számítsa ki az előző mintától való eltérést.
  • Ha új PID-ről van szó, olvassa el a /proc/pid/cmdline részt.
  • minden PID-hez küldjön egy netlink üzenetet a taskstats lekéréséhez, és kiszámítja a különbséget az előző mintához képest.
  • töltse le a /proc/stat elemet az általános rendszerstatisztikák megtekintéséhez.

Ismét minden alvási intervallumot úgy állítunk be, hogy figyelembe vegyék az összes statisztika lekéréséhez eltöltött időt. Ezenkívül minden minta rögzíti azt az időt is, amely az egyes mérések skálázásához szükséges a minták között ténylegesen eltelt idő szerint. Ez megkísérli számon kérni magában a cpustat késedelmét.

Ha argumentumok nélkül fut, a cpustat alapértelmezés szerint a következőket jeleníti meg: mintavételi intervallum: 200 ms, összegzési intervallum: 2 s (10 minta), a legjobb 10 proci megjelenítése, felhasználói szűrő: minden, pid szűrő: mind mint az alábbi képernyőképen látható:

sudo $GOBIN/cpustat 

A fenti kimenetből a következők a mezők előtt megjelenő, rendszerszintű összesítő metrikák jelentése:

  • usr – min/avg/max felhasználói mód futási ideje a CPU százalékában.
  • sys – min/átl./max rendszermód futási idő a CPU százalékában.
  • szép – min/átl./max felhasználói mód alacsony prioritású futási ideje a CPU százalékában.
  • tétlen – min/átl./max felhasználói mód futási ideje a CPU százalékában.
  • iowait – min/avg/max késleltetési idő várakozási idő lemez IO-ra.
  • prun – a folyamatok minimális/átlag/max száma futtatható állapotban (ugyanaz, mint a terhelési átlag).
  • pblock – az IO lemezen blokkolt folyamatok min/átl./max. száma.
  • pstart – az összesítési intervallumban elindított folyamatok/szálak száma.

Továbbra is a fenti kimenetből egy adott folyamat esetében a különböző oszlopok jelentése:

  • név – általános folyamatnév a /proc/pid/stat vagy /proc/pid/cmdline fájlból.
  • pid – folyamatazonosító, más néven „tgid”.
  • min – a felhasználói+rendszeridő legalacsonyabb mintája a pid-hez, a /proc/pid/stat fájlból mérve. A skála a CPU százalékos aránya.
  • max – a felhasználó+rendszeridő legmagasabb mintája ehhez a pid-hez, szintén a /proc/pid/stat fájlból mérve.
  • usr – átlagos felhasználói idő a pid-hez az összegzési időszakban, a /proc/pid/stat fájlból mérve.
  • sys – átlagos rendszeridő a pid számára az összegzési időszak alatt, a /proc/pid/stat fájlból mérve.
  • szép – a folyamat aktuális „szép” értékét jelzi, a /proc/pid/stat fájlból mérve. A magasabb azt jelenti, hogy „szebb”.
  • runq – az idő, ameddig a folyamat és az összes szál futtatható, de futásra vár, a netlinken keresztüli taskstat-ből mérve. A skála a CPU százalékos aránya.
  • iow – a folyamat és annak összes szálának blokkolt ideje a lemez IO-ja által, a netlinken keresztüli feladatstatisztikákból mérve. A skála a CPU százalékos aránya, az összegzési intervallumra átlagolva.
  • csere – az idő, ameddig a folyamat és annak összes szála a cserére vár, a netlinken keresztüli taskstat-ből mérve. A skála a CPU százalékos aránya, az összegzési intervallumra átlagolva.
  • vcx és icx – a folyamat és annak összes szála általi önkéntes kontextusváltások teljes száma az összegzési intervallumon belül, a netlinken keresztüli feladatstatisztikákból mérve.
  • rss – aktuális RSS-érték a /proc/pid/stat fájlból. Ez a folyamat által használt memória mennyisége.
  • ctime – a felhasználó+rendszer CPU-idejének összege, amelyet az ezen összegzési intervallum alatt kilépő gyermekek vártak, a /proc/pid/stat fájlból mérve.

Vegye figyelembe, hogy a hosszan futó utódfolyamatok gyakran összekeverhetik ezt a mérést, mivel az idő csak akkor jelenik meg, amikor az utódfolyamat kilép. Ez azonban hasznos a gyakori cron-feladatok és állapotellenőrzések hatásának mérésére, ahol a CPU-időt gyakran sok gyermekfolyamat veszi igénybe.

  • thrd – a szálak száma az összegzési intervallum végén, a /proc/pid/stat fájlból mérve.
  • sam – az összesítő intervallumban az ehhez a folyamathoz tartozó minták száma. Előfordulhat, hogy a közelmúltban indult vagy kilépő folyamatok az összegzési intervallumnál kevesebb mintánál voltak láthatók.

A következő parancs megjeleníti a rendszeren futó 10 leggyakrabban futó root felhasználói folyamatot:

sudo $GOBIN/cpustat -u root

A kimenet díszes terminál módban történő megjelenítéséhez használja a -t jelzőt az alábbiak szerint:

sudo $GOBIN/cpustat -u roo -t

A legnagyobb x számú folyamat megtekintéséhez (az alapértelmezett 10) használhatja a -n jelzőt, a következő parancs a rendszeren futó 20 legnépszerűbb Linux-folyamatot mutatja:

sudo $GOBIN/cpustat -n 20 

CPU-profilt is írhat egy fájlba a -cpuprofile kapcsolóval az alábbiak szerint, majd a cat paranccsal tekintheti meg a fájlt:

sudo $GOBIN/cpustat -cpuprofile cpuprof.txt
cat cpuprof.txt

A súgó információinak megjelenítéséhez használja a -h jelzőt az alábbiak szerint:

sudo $GOBIN/cpustat -h

További információkat találhat a cpustat Github Repository-ból: https://github.com/uber-common/cpustat

Ez minden! Ebben a cikkben bemutattuk, hogyan kell telepíteni és használni a cpustatot, amely egy hasznos rendszerteljesítmény-mérő eszköz Linuxhoz. Ossza meg velünk gondolatait az alábbi megjegyzés részben.