Cpustat - Nadzire korištenje CPU-a pokretanjem procesa u Linuxu


Cpustat je moćan program za mjerenje performansi sistema za Linux, napisan korištenjem Go programskog jezika. Pokušava da otkrije iskorišćenost i zasićenost CPU-a na efikasan način, koristeći metodu zasićenja i grešaka u upotrebi (USE) (metodologiju za analizu performansi bilo kog sistema).

On izdvaja uzorke više frekvencije svakog procesa koji se izvršava na sistemu, a zatim sumira te uzorke na nižoj frekvenciji. Na primjer, može mjeriti svaki proces svakih 200 ms i sumirati ove uzorke svakih 5 sekundi, uključujući min/prosječne/maksimalne vrijednosti za određene metrike.

Preporučeno čitanje: 20 alata komandne linije za praćenje performansi Linuxa

Cpustat emituje podatke na dva moguća načina: čistu tekstualnu listu rezime intervala i šarenu kontrolnu tablu za pomeranje svakog uzorka.

Kako instalirati Cpustat u Linux

Morate imati Go (GoLang) instaliran na vašem Linux sistemu da biste koristili cpustat, kliknite na link ispod da slijedite korake instalacije GoLanga, odnosno ako nemate instalirao je:

  1. Instalirajte GoLang (Go programski jezik) u Linuxu

Nakon što instalirate Go, upišite naredbu go get ispod da je instalirate, ova naredba će instalirati binarnu datoteku cpustat u vaš GOBIN varijabla:

go get github.com/uber-common/cpustat

Kako koristiti Cpustat u Linuxu

Kada se proces instalacije završi, pokrenite cpustat na sljedeći način sa root privilegijama koristeći sudo naredbu, odnosno ako kontrolirate sistem kao nekorijenski korisnik, inače ćete dobiti greš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 druge Go programe koje ste instalirali na svom sistemu kao i sve druge komande, uključite GOBIN varijabla u vašoj varijabli okruženja PATH. Otvorite vezu ispod da naučite kako postaviti varijablu PATH u Linuxu.

  1. Naučite kako da trajno postavite svoje ` PATH varijable u Linuxu

Ovako radi cpustat; direktorij /proc je upitan za dobivanje trenutne liste 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 netlink poruku da preuzmete statistiku zadataka, izračunajte razliku u odnosu na prethodni uzorak.
  • dohvatite /proc/stat da dobijete ukupnu statistiku sistema.

Opet, svaki interval spavanja se prilagođava da uzme u obzir količinu vremena utrošenog na dohvaćanje svih ovih statistika. Nadalje, svaki uzorak također biljež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, zbirni interval: 2 s (10 uzoraka), prikazuje 10 najboljih procesa, korisnički filter: sve, pid filter: sve kao prikazano na snimku ekrana ispod:

sudo $GOBIN/cpustat 

Iz gornjeg izlaza, slijedeća su značenja zbirnih metrika za cijeli sistem prikazanih ispred polja:

  • usr – min/prosjek/maksimalno vrijeme rada korisnika kao postotak CPU-a.
  • sys – min/prosjek/maksimalno vrijeme rada sistema kao postotak CPU-a.
  • lijepo – min/prosjek/maksimalni korisnički način rada niskog prioriteta kao postotak CPU-a.
  • idle – min/prosj./maksimalno vrijeme rada korisnika kao postotak CPU-a.
  • iowait – min/prosjek/maksimalno vrijeme kašnjenja čekanja na IO diska.
  • prun – min/prosjek/maksimalni broj procesa u stanju pokretanja (isto kao i prosjek opterećenja).
  • pblock – min/prosjek/maksimalni broj procesa blokiranih na disku IO.
  • pstart – broj procesa/niti pokrenutih u ovom zbirnom intervalu.

Ipak, iz gornjeg izlaza, za dati proces, različite kolone znače:

  • name – uobičajeno ime procesa iz /proc/pid/stat ili /proc/pid/cmdline.
  • pid – ID procesa, koji se također naziva “tgid”.
  • min – najmanji uzorak korisničkog + sistemskog vremena za pid, mjereno iz /proc/pid/stat. Skala je postotak CPU-a.
  • max – najveći uzorak korisničkog + sistemskog vremena za ovaj pid, također mjereno iz /proc/pid/stat.
  • usr – prosječno vrijeme korisnika za pid tokom sumarnog perioda, mjereno iz /proc/pid/stat.
  • sys – prosječno sistemsko vrijeme za pid tokom zbirnog perioda, mjereno iz /proc/pid/stat.
  • lijepo – označava trenutnu “lijepu” vrijednost za proces, mjerenu iz /proc/pid/stat. Više znači „ljepše“.
  • runq – vrijeme procesa i svih njegovih niti koje su utrošene za pokretanje, ali čekaju da se pokrenu, mjereno iz statistike zadataka putem netlinka. Skala je postotak CPU-a.
  • iow – vrijeme procesa i svih njegovih niti utrošenih blokiranih IO-om na disku, mjereno iz taskstata putem netlinka. Skala je postotak CPU-a, prosječan u zbirnom intervalu.
  • swap – vrijeme procesa i svih njegovih niti koje su proveli čekajući da budu zamijenjeni, mjereno iz statistike zadataka putem netlinka. Skala je postotak CPU-a, prosječan u zbirnom intervalu.
  • vcx i icx – ukupan broj dobrovoljnih promjena konteksta od strane procesa i svih njegovih niti tokom sumarnog intervala, mjereno iz taskstata putem netlinka.
  • rss – trenutna RSS vrijednost preuzeta iz /proc/pid/stat. To je količina memorije koju ovaj proces koristi.
  • ctime – zbir korisničkog + sys CPU vremena koje su potrošila djeca na čekanju koja su izašla tokom ovog sumarnog intervala, mjereno iz /proc/pid/stat.

Imajte na umu da dugotrajni podređeni procesi često mogu zbuniti ovo mjerenje, jer se vrijeme prijavljuje samo kada podređeni proces izađe. Međutim, ovo je korisno za mjerenje utjecaja čestih cron poslova i zdravstvenih provjera gdje CPU vrijeme često troše mnogi podređeni procesi.

  • thrd – broj niti na kraju sumarnog intervala, mjereno iz /proc/pid/stat.
  • sam – broj uzoraka za ovaj proces uključenih u sumarni interval. Procesi koji su nedavno započeli ili izašli su možda bili vidljivi za manje uzoraka od sumarnog intervala.

Sljedeća naredba prikazuje prvih 10 root korisničkih procesa koji rade na sistemu:

sudo $GOBIN/cpustat -u root

Za prikaz izlaza u fensi terminalskom modu, koristite oznaku -t na sljedeći način:

sudo $GOBIN/cpustat -u roo -t

Da vidite najveći x broj procesa (podrazumevano je 10), možete koristiti oznaku -n, sljedeća naredba prikazuje 20 najboljih Linux procesa koji se pokreću na sistemu:

sudo $GOBIN/cpustat -n 20 

Također možete upisati CPU profil u datoteku koristeći opciju -cpuprofile kako slijedi, a zatim koristiti cat komandu za pregled datoteke:

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

Za prikaz informacija o pomoći, koristite oznaku -h na sljedeći način:

sudo $GOBIN/cpustat -h

Pronađite dodatne informacije iz cpustat Github repozitorija: https://github.com/uber-common/cpustat

To je sve! U ovom članku smo vam pokazali kako da instalirate i koristite cpustat, koristan alat za mjerenje performansi sistema za Linux. Podijelite svoje misli s nama putem odjeljka za komentare ispod.