„Cpustat“ – stebi procesoriaus panaudojimą vykdant procesus sistemoje „Linux“.


Cpustat yra galinga sistemos našumo matavimo programa, skirta Linux, parašyta naudojant Go programavimo kalbą. Jis bando efektyviai atskleisti procesoriaus išnaudojimą ir prisotinimą, naudodamas „Utilisation Saturation and Errors“ (USE) metodą (bet kurios sistemos veikimo analizės metodiką).

Jis ištraukia kiekvieno sistemoje vykdomo proceso aukštesnio dažnio pavyzdžius ir apibendrina šiuos pavyzdžius mažesniu dažniu. Pavyzdžiui, jis gali išmatuoti kiekvieną procesą kas 200 ms ir apibendrinti šiuos pavyzdžius kas 5 sekundes, įskaitant tam tikros metrikos minimalias/vidutines/maksimalias reikšmes.

Siūlomas skaitymas: 20 komandų eilutės įrankių, skirtų „Linux“ našumui stebėti

Cpustat išveda duomenis dviem galimais būdais: gryno teksto suvestinės intervalo sąrašu ir spalvinga slenkančia kiekvieno pavyzdžio prietaisų skydeliu.

Kaip įdiegti „Cpustat“ sistemoje „Linux“.

Jei norite naudoti cpustat, savo „Linux“ sistemoje turi būti įdiegtas Go (GoLang), spustelėkite toliau esančią nuorodą, kad atliktumėte „GoLang“ diegimo veiksmus, tai yra, jei neturite jis įdiegtas:

  1. Įdiekite „GoLang“ („Go Programming Language“) „Linux“.

Įdiegę Go, toliau įveskite komandą go get, kad ją įdiegtumėte. Ši komanda įdiegs cpustat dvejetainį failą GOBIN kintamasis:

go get github.com/uber-common/cpustat

Kaip naudoti „Cpustat“ sistemoje „Linux“.

Kai diegimo procesas bus baigtas, paleiskite cpustat taip, kaip nurodyta su root teisėmis, naudodami komandą sudo, ty, jei valdote sistemą kaip ne root naudotojas, kitaip gausite klaidą, kaip parodyta:

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

Pastaba: norėdami paleisti cpustat ir visas kitas Go programas, kurias įdiegėte savo sistemoje, kaip ir kitas komandas, įtraukite GOBIN kintamąjį PATH aplinkos kintamajame. Atidarykite toliau pateiktą nuorodą, kad sužinotumėte, kaip nustatyti PATH kintamąjį Linux sistemoje.

  1. Sužinokite, kaip nuolat nustatyti ` PATH kintamuosius sistemoje „Linux“.

Taip veikia cpustat; kataloge /proc pateikiama užklausa, norint gauti dabartinį kiekvieno intervalo procesų ID sąrašą ir:

  • kiekvienam PID perskaitykite /proc/pid/stat, tada apskaičiuokite skirtumą nuo ankstesnio pavyzdžio.
  • jei tai naujas PID, perskaitykite /proc/pid/cmdline.
  • kiekvienam PID išsiųskite tinklo nuorodos pranešimą, kad gautumėte užduočių statistiką, apskaičiuotų skirtumą nuo ankstesnio pavyzdžio.
  • paimkite /proc/stat, kad gautumėte bendrą sistemos statistiką.

Vėlgi, kiekvienas miego intervalas koreguojamas atsižvelgiant į laiką, sunaudotą norint gauti visą šią statistiką. Be to, kiekvienas mėginys taip pat įrašo laiką, kurio prireikė kiekvienam matavimui įvertinti pagal faktinį laiką tarp mėginių. Taip bandoma atsižvelgti į paties cpustat vėlavimą.

Paleidus be jokių argumentų, cpustat pagal numatytuosius nustatymus rodys: atrankos intervalas: 200 ms, suvestinės intervalas: 2 s (10 pavyzdžių), rodo 10 geriausių procesų, naudotojo filtras: visi, pid filtras: visi kaip parodyta žemiau esančioje ekrano kopijoje:

sudo $GOBIN/cpustat 

Iš anksčiau pateiktos išvesties pateikiamos visos sistemos suvestinės metrikos, rodomos prieš laukus, reikšmės:

  • usr – min./vid./maks. vartotojo režimo vykdymo laikas, išreikštas procesoriaus procentine dalimi.
  • sys – min./vid./maks. sistemos režimo vykdymo laikas, išreikštas procesoriaus procentine dalimi.
  • gražus – minimalus/vid./maks. naudotojo režimo žemo prioriteto vykdymo laikas, išreikštas procesoriaus procentine dalimi.
  • Tuščioji eiga – min./vid./maks. naudotojo režimo vykdymo laikas, išreikštas procesoriaus procentine dalimi.
  • iowait – min./vid./maks. delsos laikas laukiant disko IO.
  • genėjimas – min./vid./maks. procesų skaičius, kai paleidžiama būsena (toks pat kaip apkrovos vidurkis).
  • pblock – min./vid./maks. procesų, užblokuotų IO diske, skaičius.
  • pstart – šiame suvestinės intervale pradėtų procesų/gijų skaičius.

Vis dėlto iš aukščiau pateiktos išvesties tam tikram procesui skirtingi stulpeliai reiškia:

  • pavadinimas – įprastas proceso pavadinimas iš /proc/pid/stat arba /proc/pid/cmdline.
  • pid – proceso ID, dar vadinamas „tgid“.
  • min – mažiausia vartotojo ir sistemos pid laiko imtis, matuojama iš /proc/pid/stat. Mastelis yra procesoriaus procentinė dalis.
  • maks. – didžiausias šio pid naudotojo ir sistemos laiko pavyzdys, taip pat matuojamas iš /proc/pid/stat.
  • usr – vidutinis naudotojo pid laikas per suvestinį laikotarpį, matuojamas iš /proc/pid/stat.
  • sys – vidutinis pid sistemos laikas per suvestinį laikotarpį, matuojamas iš /proc/pid/stat.
  • gražus – nurodo dabartinę „gražią“ proceso reikšmę, išmatuotą iš /proc/pid/stat. Aukštesnis reiškia „gražiau“.
  • runq – laikas, per kurį procesas ir visos jo gijos buvo paleidžiamos, bet laukiama, kol bus paleista, matuojamas iš užduočių statistikos per tinklo nuorodą. Mastelis yra procesoriaus procentinė dalis.
  • iow – laikas, skirtas proceso ir visų jo gijų užblokavimui disko IO, matuojamas iš užduočių statistikos per tinklo nuorodą. Skalė yra procesoriaus procentinė dalis, apskaičiuota per suvestinį intervalą.
  • Swap – laikas, per kurį procesas ir visos jo gijos laukia, kol bus pakeistos, matuojamas iš užduočių statistikos per tinklo nuorodą. Skalė yra procesoriaus procentinė dalis, apskaičiuota per suvestinį intervalą.
  • vcx ir icx – bendras proceso ir visų jo gijų savanoriškų konteksto perjungimų skaičius per suvestinį intervalą, matuojamas iš užduočių statistikos per tinklo nuorodą.
  • rss – dabartinė RSS reikšmė, gauta iš /proc/pid/stat. Tai yra šio proceso sunaudojamos atminties kiekis.
  • ctime – naudotojo ir sistemos procesoriaus laiko suma, sunaudota lauktų vaikų, kurie išėjo per šį suvestinį intervalą, matuojama iš /proc/pid/stat.

Atminkite, kad ilgai vykdomi antriniai procesai dažnai gali supainioti šį matavimą, nes laikas pranešamas tik tada, kai antrinis procesas išeina. Tačiau tai naudinga norint įvertinti dažnų cron darbų ir sveikatos patikrinimų poveikį, kai procesoriaus laikas dažnai sunaudojamas daugeliui antrinių procesų.

  • trečia – gijų skaičius suvestinės intervalo pabaigoje, matuojamas iš /proc/pid/stat.
  • sam – šio proceso pavyzdžių, įtrauktų į suvestinės intervalą, skaičius. Neseniai pradėti arba baigti procesai galėjo būti matomi mažiau pavyzdžių nei suvestinis intervalas.

Ši komanda rodo 10 geriausių sistemoje veikiančių root vartotojo procesų:

sudo $GOBIN/cpustat -u root

Norėdami rodyti išvestį išgalvotu terminalo režimu, naudokite vėliavėlę -t taip:

sudo $GOBIN/cpustat -u roo -t

Norėdami peržiūrėti didžiausią x procesų skaičių (numatytasis yra 10), galite naudoti vėliavėlę -n, ši komanda rodo 20 populiariausių sistemoje veikiančių Linux procesų:

sudo $GOBIN/cpustat -n 20 

Taip pat galite įrašyti CPU profilį į failą naudodami parinktį -cpuprofile, kaip nurodyta toliau, ir tada naudoti komandą cat, kad peržiūrėtumėte failą:

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

Norėdami parodyti pagalbos informaciją, naudokite vėliavėlę -h, kaip nurodyta toliau:

sudo $GOBIN/cpustat -h

Raskite papildomos informacijos iš cpustat Github saugyklos: https://github.com/uber-common/cpustat

Tai viskas! Šiame straipsnyje parodėme, kaip įdiegti ir naudoti cpustat – naudingą sistemos našumo matavimo įrankį, skirtą „Linux“. Pasidalykite savo mintimis su mumis naudodami toliau pateiktą komentarų skyrių.