Cpustat - Overvåker CPU-bruk ved å kjøre prosesser i Linux


Cpustat er et kraftig systemytelsesmålprogram for Linux, skrevet med Go-programmeringsspråket. Den forsøker å avsløre CPU-bruk og metning på en effektiv måte, ved å bruke The Utilization Saturation and Errors (USE) Method (en metodikk for å analysere ytelsen til ethvert system).

Den trekker ut prøver med høyere frekvens av hver prosess som utføres på systemet, og oppsummerer deretter disse prøvene med en lavere frekvens. Den kan for eksempel måle hver prosess hver 200 ms og oppsummere disse prøvene hvert 5 sekund, inkludert min/gjennomsnitt/maks verdier for visse beregninger.

Foreslått lesing: 20 kommandolinjeverktøy for å overvåke Linux-ytelse

Cpustat sender ut data på to mulige måter: en ren tekstliste over oppsummeringsintervallet og et fargerikt rullende dashbord for hver prøve.

Hvordan installere Cpustat i Linux

Du må ha Go (GoLang) installert på Linux-systemet ditt for å bruke cpustat, klikk på lenken nedenfor for å følge GoLang-installasjonstrinnene, det vil si hvis du ikke har den installerte:

  1. Installer GoLang (Go Programming Language) i Linux

Når du har installert Go, skriv inn go get-kommandoen nedenfor for å installere den, denne kommandoen vil installere cpustat-binæren i GOBIN variabel:

go get github.com/uber-common/cpustat

Hvordan bruke Cpustat i Linux

Når installasjonsprosessen er fullført, kjør cpustat som følger med root-privilegier ved å bruke sudo-kommandoen som er hvis du kontrollerer systemet som en ikke-rootbruker, ellers får du feilen som vist:

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

Merk: For å kjøre cpustat så vel som alle andre Go-programmer du har installert på systemet som alle andre kommandoer, inkluderer du GOBIN -variabelen i miljøvariabelen PATH. Åpne lenken nedenfor for å lære hvordan du setter PATH-variabelen i Linux.

  1. Lær hvordan du setter ` PATH-variablene dine permanent i Linux

Dette er hvordan cpustat fungerer; /proc-katalogen spørres for å få gjeldende liste over prosess-ID-er for hvert intervall, og:

  • for hver PID, les /proc/pid/stat, og beregne forskjellen fra forrige prøve.
  • i tilfelle det er en ny PID, les /proc/pid/cmdline.
  • for hver PID, send en netlink-melding for å hente oppgavestatistikken, beregne forskjellen fra forrige prøve.
  • hent /proc/stat for å få den generelle systemstatistikken.

Igjen blir hvert søvnintervall justert for å ta hensyn til hvor lang tid det tar å hente all denne statistikken. Videre registrerer hver prøve også tiden det tok å skalere hver måling med den faktiske tiden mellom prøvene. Dette forsøker å ta hensyn til forsinkelser i selve cpustaten.

Når den kjøres uten noen argumenter, vil cpustat vise følgende som standard: samplingsintervall: 200ms, oppsummeringsintervall: 2s (10 eksempler), viser topp 10 prosesser, brukerfilter: alle, pid-filter: alle som vist på skjermbildet nedenfor:

sudo $GOBIN/cpustat 

Fra utdataene ovenfor er følgende betydninger av de systemomfattende oppsummeringsberegningene som vises foran feltene:

  • usr – min/avg/max kjøretid for brukermodus som en prosentandel av en CPU.
  • sys – min/avg/max kjøretid for systemmodus som en prosentandel av en CPU.
  • fint – min/avg/max brukermodus lav prioritet kjøretid som en prosentandel av en CPU.
  • inaktiv – min/avg/maks kjøretid for brukermodus som en prosentandel av en CPU.
  • iowait – min/avg/max forsinkelsestid venter på disk IO.
  • prun – min/avg/maks telling av prosesser i en kjørbar tilstand (samme som belastningsgjennomsnitt).
  • pblock – min/avg/max antall prosesser blokkert på disk IO.
  • pstart – antall prosesser/tråder startet i dette sammendragsintervallet.

Fortsatt fra utgangen ovenfor, for en gitt prosess, betyr de forskjellige kolonnene:

  • navn – vanlig prosessnavn fra /proc/pid/stat eller /proc/pid/cmdline.
  • pid – prosess-ID, også referert til som "tgid".
  • min – laveste utvalg av bruker+systemtid for pid, målt fra /proc/pid/stat. Skala er en prosentandel av en CPU.
  • maks – høyeste utvalg av bruker+systemtid for denne pid, også målt fra /proc/pid/stat.
  • usr – gjennomsnittlig brukertid for pid-en over oppsummeringsperioden, målt fra /proc/pid/stat.
  • sys – gjennomsnittlig systemtid for pid-en over oppsummeringsperioden, målt fra /proc/pid/stat.
  • hyggelig – indikerer gjeldende "fin" verdi for prosessen, målt fra /proc/pid/stat. Høyere betyr "bedre".
  • runq – tid prosessen og alle dens tråder brukt til å kjøre, men venter på å kjøre, målt fra oppgavestatistikk via netlink. Skala er en prosentandel av en CPU.
  • iow – tid prosessen og alle dens tråder blokkert av disk IO, målt fra oppgavestatistikk via netlink. Skala er en prosentandel av en CPU, gjennomsnittlig over oppsummeringsintervallet.
  • bytte – tid prosessen og alle dens tråder til å vente på å bli byttet inn, målt fra oppgavestatistikk via netlink. Skala er en prosentandel av en CPU, gjennomsnittlig over oppsummeringsintervallet.
  • vcx og icx – totalt antall frivillige kontekstbytter etter prosessen og alle dens tråder over oppsummeringsintervallet, målt fra oppgavestatistikk via netlink.
  • rss – gjeldende RSS-verdi hentet fra /proc/pid/stat. Det er mengden minne denne prosessen bruker.
  • ctime – summen av bruker+sys CPU-tid brukt av ventet for barn som gikk ut i løpet av dette oppsummeringsintervallet, målt fra /proc/pid/stat.

Vær oppmerksom på at langvarige underordnede prosesser ofte kan forvirre denne målingen, fordi tiden rapporteres bare når den underordnede prosessen avsluttes. Dette er imidlertid nyttig for å måle effekten av hyppige cron-jobber og helsesjekker der CPU-tiden ofte forbrukes av mange underordnede prosesser.

  • thrd – antall tråder på slutten av oppsummeringsintervallet, målt fra /proc/pid/stat.
  • sam – antall prøver for denne prosessen inkludert i sammendragsintervallet. Prosesser som nylig har startet eller avsluttet kan ha vært synlige for færre prøver enn oppsummeringsintervallet.

Følgende kommando viser de 10 beste rotbrukerprosessene som kjører på systemet:

sudo $GOBIN/cpustat -u root

For å vise utdata i en fancy terminalmodus, bruk -t-flagget som følger:

sudo $GOBIN/cpustat -u roo -t

For å se det øverste x antallet prosesser (standard er 10), kan du bruke -n-flagget, følgende kommando viser de 20 beste Linux-prosessene som kjører på systemet:

sudo $GOBIN/cpustat -n 20 

Du kan også skrive CPU-profil til en fil ved å bruke -cpuprofile-alternativet som følger og deretter bruke cat-kommandoen for å vise filen:

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

For å vise hjelpeinformasjon, bruk -h-flagget som følger:

sudo $GOBIN/cpustat -h

Finn mer informasjon fra cpustat Github Repository: https://github.com/uber-common/cpustat

Det er alt! I denne artikkelen viste vi deg hvordan du installerer og bruker cpustat, et nyttig verktøy for systemytelsesmåling for Linux. Del dine tanker med oss via kommentarfeltet nedenfor.