Cpustat - nadgleda upotrebu CPU-a pokretanjem procesa u Linuxu


Cpustat je moćan program za mjerenje performansi sustava za Linux, napisan pomoću programskog jezika Go. Pokušava na učinkovit način otkriti upotrebu i zasićenje CPU-a, koristeći metodu Zasićenosti i pogreške iskorištavanja (USE) (metodologija za analizu performansi bilo kojeg sustava).

Izdvaja uzorke više frekvencije svakog postupka koji se izvodi u sustavu, a zatim sažima te uzorke na nižoj frekvenciji. Na primjer, može izmjeriti svaki postupak svakih 200 ms i sažeti te uzorke svakih 5 sekundi, uključujući vrijednosti min/prosjek/max za određene mjerne podatke.

Cpustat daje podatke na dva moguća načina: čisti tekstualni popis intervala sažetka i šareno pomicanje nadzorne ploče svakog uzorka.

Kako instalirati Cpustat u Linux

Morate imati Go (GoLang) instaliran na vašem Linux sustavu da biste koristili cpustat, kliknite donju vezu da biste slijedili korake za instalaciju GoLanga, ako ga nemate instaliran:

  1. Instalirajte GoLang (Go Programski jezik) u Linux

Nakon što instalirate Go, upišite naredbu go get da biste ga instalirali, ova naredba će instalirati cpustat binarni u vašu GOBIN varijablu:

# go get github.com/uber-common/cpustat

Kako koristiti Cpustat u Linuxu

Kada se postupak instalacije dovrši, pokrenite cpustat na sljedeći način s root privilegijama koristeći naredbu sudo, to jest ako vaš sustav kontrolirate kao nekorijenski korisnik, inače ćete dobiti pogrešku kao što je prikazano:

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

Napomena: Da biste pokrenuli cpustat, kao i sve ostale Go programe koje ste instalirali na sustav kao i bilo koje druge naredbe, uključite GOBIN varijablu u svoju varijablu okruženja PATH. Otvorite donju vezu da biste saznali kako postaviti varijablu PATH u Linuxu.

  1. Saznajte kako trajno postaviti svoje varijable $PATH u Linuxu

Ovako djeluje cpustat; traži se direktorij /proc kako bi se dobio trenutni popis ID-ova procesa za svaki interval i:

  • za svaki PID, pročitajte/proc/pid/stat, a zatim izračunajte razliku u odnosu na prethodni uzorak.
  • u slučaju da se radi o novom PID-u, pročitajte/proc/pid/cmdline.
  • za svaki PID, pošaljite poruku mrežne veze za dohvaćanje statističkih zadataka, izračunavanje razlike u odnosu na prethodni uzorak.
  • dohvatite/proc/stat da biste dobili ukupnu statistiku sustava.

Ponovno, svaki interval spavanja prilagođen je kako bi se uzelo u obzir vrijeme potrebno za dohvaćanje svih ovih statistika. Nadalje, svaki uzorak bilježi i vrijeme potrebno za skaliranje svakog mjerenja prema stvarnom proteklom vremenu između uzoraka. Ovo pokušava objasniti kašnjenja u samom cpustatu.

Kada se pokrene bez ikakvih argumenata, cpustat će prema zadanim postavkama prikazati sljedeće: interval uzorkovanja: 200 ms, interval sažetka: 2s (10 uzoraka), prikazuje 10 najboljih postupaka, korisnički filtar: sve, pid filter: sve kao što je prikazano na snimci zaslona ispod:

$ sudo $GOBIN/cpustat 

Iz gornjeg rezultata, sljedeća su značenja mjernih podataka sažetka za cijeli sustav prikazanih prije polja:

  • usr - min/prosjek/maksimum vremena rada korisničkog načina rada kao postotak CPU-a.
  • sys - min/prosječno/maksimalno vrijeme rada sustava kao postotak CPU-a.
  • lijepo - min/prosjek/maksimum korisničkog načina rada s niskim prioritetom kao postotak CPU-a.
  • u praznom hodu - min/prosjek/maksimum vremena rada korisničkog načina rada kao postotak CPU-a.
  • iowait - min/prosjek/maksimalno vrijeme odgode čeka na IO diska.
  • prun - min/prosjek/maksimum broja procesa u stanju za izvođenje (isto kao prosjek opterećenja).
  • pblock - min/prosjek/maksimalan broj blokiranih procesa na IO diska.
  • pstart - broj procesa/niti pokrenutih u ovom intervalu sažetka.

Ipak iz gornjeg rezultata, za zadani postupak, različiti stupci znače:

  • naziv - uobičajeni naziv procesa iz/proc/pid/stat ili/proc/pid/cmdline.
  • pid - id procesa, koji se naziva i "tgid".
  • min - najniži uzorak korisnika + sistemsko vrijeme za pid, mjereno iz/proc/pid/stat. Skala je postotak CPU-a.
  • max - najveći uzorak korisnika + sistemsko vrijeme za ovaj pid, mjereno i iz/proc/pid/stat.
  • usr - prosječno korisničko vrijeme za pid tijekom sažetog razdoblja, mjereno iz/proc/pid/stat.
  • sys - prosječno sistemsko vrijeme za pid tijekom sažetog razdoblja, mjereno iz/proc/pid/stat.
  • lijepo - označava trenutnu "lijepu" vrijednost procesa, mjereno iz/proc/pid/stat. Više znači "ljepše".
  • runq - vrijeme provedeno tijekom procesa i svih njegovih niti koje se mogu pokrenuti, ali čekajući da se pokrene, mjereno od baza zadataka putem mrežne veze. Skala je postotak CPU-a.
  • iow - vrijeme provedeno u procesu i svim nitima koje blokira IO diska, mjereno od statičkih zadataka putem mrežne veze. Ljestvica je postotak CPU-a, prosječen u sažetom intervalu.
  • swap - vrijeme procesa i svih njegovih niti provedenih u čekanju za zamjenu, mjereno od baza zadataka putem mrežne veze. Ljestvica je postotak CPU-a, prosječen u sažetom intervalu.
  • vcx i icx - ukupan broj dobrovoljnih prebacivanja konteksta u procesu i svim njegovim nitima u intervalu sažetka, mjereno od baza zadataka putem mrežne veze.
  • rss - trenutna RSS vrijednost preuzeta iz/proc/pid/stat. To je količina memorije koju ovaj proces koristi.
  • ctime - zbroj korisničkog + sys procesorskog vremena koje je potrošeno čekalo za djecu koja su izašla tijekom ovog sažetog intervala, mjereno iz/proc/pid/stat.

Imajte na umu da dugotrajni podređeni procesi često mogu zbuniti ovo mjerenje, jer se vrijeme izvještava samo kada izlazi podređeni proces. Međutim, ovo je korisno za mjerenje učinka čestih cron poslova i zdravstvenih provjera gdje procesorski proces često troši mnogo dječjih procesa.

  • thrd - broj niti na kraju sažetog intervala, mjereno od/proc/pid/stat.
  • sam - broj uzoraka za ovaj postupak uključen u sažeti interval. Procesi koji su nedavno započeti ili su izašli možda su bili vidljivi za manje uzoraka od sažetog intervala.

Sljedeća naredba prikazuje prvih 10 korijenskih korisničkih procesa koji se izvode u sustavu:

$ sudo $GOBIN/cpustat -u root

Da biste prikazali izlaz u modnom modulu terminala, upotrijebite zastavicu -t kako slijedi:

$ sudo $GOBIN/cpustat -u roo -t

Da biste pogledali top 20 Linux procesa koji se izvode u sustavu:

$ sudo $GOBIN/cpustat -n 20 

CPU profil također možete napisati u datoteku pomoću opcije -cpuprofile na sljedeći način, a zatim pomoću naredbe cat pregledati datoteku:

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

Za prikaz informacija o pomoći upotrijebite zastavicu -h na sljedeći način:

$ sudo $GOBIN/cpustat -h

Dodatne informacije potražite u cpustat Github Repozitoriju: https://github.com/uber-common/cpustat

To je sve! U ovom smo članku pokazali kako instalirati i koristiti cpustat, koristan alat za mjerenje performansi sustava za Linux. Podijelite svoje misli s nama putem odjeljka za komentare u nastavku.