Cpustat - Nadzira uporabo CPU z izvajanjem procesov v Linuxu


Cpustat je zmogljiv sistem za merjenje zmogljivosti sistema za Linux, napisan s programskim jezikom Go. Poskuša na učinkovit način razkriti izkoriščenost in nasičenost procesorja z metodo The Utilization Saturation and Errors (USE) (metodologija za analizo delovanja katerega koli sistema).

Izvleče vzorce višje frekvence vsakega postopka, ki se izvaja v sistemu, nato pa te vzorce povzame pri manjši frekvenci. Na primer, lahko izmeri vsak postopek vsakih 200 ms in te vzorce sešteje vsakih 5 sekund, vključno z vrednostmi min/povprečje/max za določene meritve.

Cpustat izpiše podatke na dva možna načina: čisti besedilni seznam povzetka in barvito pomikanje po nadzorni plošči vsakega vzorca.

Kako namestiti Cpustat v Linux

Če želite uporabljati cpustat, morate imeti nameščen Go (GoLang) v sistemu Linux, kliknite spodnjo povezavo, če želite slediti korakom namestitve GoLang, če nimate nameščenega:

  1. Namestite GoLang (Go Programski jezik) v Linux

Ko ste namestili Go, vnesite spodnji ukaz go get, da ga namestite, ta ukaz bo namestil bp cpustat v vašo spremenljivko GOBIN:

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

Kako uporabljati Cpustat v Linuxu

Ko se postopek namestitve konča, zaženite cpustat, kot sledi, s korenskimi pravicami z uporabo ukaza sudo, to je, če sistem nadzorujete kot nekorenski uporabnik, sicer boste dobili napako, kot je prikazano:

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

Opomba: Če želite zagnati cpustat in vse druge programe Go, ki ste jih namestili v sistem, tako kot vse druge ukaze, v spremenljivko okolja PATH vključite spremenljivko GOBIN. Odprite spodnjo povezavo, če želite izvedeti, kako nastaviti spremenljivko PATH v Linuxu.

  1. Preberite, kako trajno nastavite spremenljivke $PATH v Linuxu

Tako deluje cpustat; imenik /proc je povprašan, da dobi trenutni seznam ID-jev procesa za vsak interval in:

  • za vsak PID preberite/proc/pid/stat, nato izračunajte razliko od prejšnjega vzorca.
  • v primeru, da gre za nov PID, preberite/proc/pid/cmdline.
  • za vsak PID pošljite sporočilo omrežne povezave, da pridobite naloge opravil, izračunajte razliko od prejšnjega vzorca.
  • fetch/proc/stat, da dobite splošno statistiko sistema.

Spet je vsak interval spanja prilagojen tako, da upošteva čas, porabljen za pridobivanje vseh teh statistik. Poleg tega vsak vzorec beleži tudi čas, potreben za merjenje posamezne meritve glede na dejanski pretekli čas med vzorci. To poskuša upoštevati zamude pri samem cpustatu.

Pri zagonu brez argumentov bo cpustat privzeto prikazal naslednje: interval vzorčenja: 200 ms, interval povzetka: 2 s (10 vzorcev), top 10 procesov, uporabniški filter: vse, pid filter: vse, kot je prikazano na spodnjem posnetku zaslona:

$ sudo $GOBIN/cpustat 

Iz zgornjega izhoda so naslednji pomeni celokupnih sistemskih meritev, prikazanih pred polji:

  • usr - min/avg/max čas delovanja uporabniškega načina kot odstotek CPU -ja.
  • sys - najnižji/povprečni/največji čas delovanja sistema v odstotkih kot CPU.
  • lepo - min/avg/max uporabniški način nizko prioritetni čas izvajanja kot odstotek CPU -ja.
  • idle - min/avg/max čas delovanja uporabniškega načina kot odstotek CPU -ja.
  • iowait - min/avg/max čas zakasnitve, ki čaka na IO diska.
  • prun - min/povprečno/največje število procesov v stanju, ki ga je mogoče izvesti (enako kot povprečje obremenitve).
  • pblock - min/avg/max število procesov, blokiranih na IO diska.
  • pstart - število procesov/niti, ki so se začeli v tem časovnem intervalu.

Še vedno iz zgornjega izhoda za dani postopek različni stolpci pomenijo:

  • ime - splošno ime procesa iz/proc/pid/stat ali/proc/pid/cmdline.
  • pid - ID procesa, imenovan tudi "tgid".
  • min - najnižji vzorec uporabnika + sistemski čas za pid, merjeno iz/proc/pid/stat. Lestvica je odstotek CPU-ja.
  • max - najvišji vzorec uporabnika + sistemski čas za ta pid, merjeno tudi iz/proc/pid/stat.
  • usr - povprečni čas uporabnika za pid v celotnem obdobju, merjeno iz/proc/pid/stat.
  • sys - povprečni sistemski čas za pid v celotnem obdobju, merjeno iz/proc/pid/stat.
  • lepo - označuje trenutno "lepo" vrednost postopka, merjeno iz/proc/pid/stat. Višje pomeni "lepše".
  • runq - čas postopka in vseh njegovih niti, ki jih je mogoče zagnati, vendar čakati na zagon, izmerjeno iz delovnih postaj prek netlink. Lestvica je odstotek CPU-ja.
  • iow - čas procesa in vseh porabljenih niti, ki jih blokira IO diska, merjeno s stanj opravil prek omrežja. Lestvica je odstotek CPU, povprečen v intervalu povzetka.
  • swap - čas, ki ga proces in vse njegove niti porabijo za čakanje na zamenjavo, izmerjeno iz delovnih postaj prek netlink. Lestvica je odstotek CPU, povprečen v intervalu povzetka.
  • vcx in icx - skupno število prostovoljnih preklopov konteksta v postopku in vseh njegovih nitih v intervalu povzetka, merjeno iz naloge opravil prek netlink.
  • rss - trenutna vrednost RSS, pridobljena iz/proc/pid/stat. To je količina pomnilnika, ki ga ta proces uporablja.
  • ctime - vsota uporabniškega + sys CPU-ja, ki ga porabi čakal otrok, ki je izstopil v tem intervalu povzetka, merjeno iz/proc/pid/stat.

Upoštevajte, da lahko dolgotrajni podrejeni procesi pogosto zmotijo to meritev, ker se čas poroča šele, ko otrok izstopi. Vendar je to koristno za merjenje učinka pogostih cron opravil in zdravstvenih pregledov, kjer procesorski čas pogosto porabi procesorski proces.

  • thrd - število niti na koncu intervala povzetka, merjeno iz/proc/pid/stat.
  • sam - število vzorcev za ta postopek, vključenih v povzetek intervala. Procesi, ki so se pred kratkim začeli ali izstopili, so bili morda vidni za manj vzorcev kot povzetek.

Naslednji ukaz prikazuje 10 najboljših korenskih uporabniških procesov, ki se izvajajo v sistemu:

$ sudo $GOBIN/cpustat -u root

Za prikaz izhoda v modnem terminalnem načinu uporabite zastavico -t na naslednji način:

$ sudo $GOBIN/cpustat -u roo -t

Za ogled najboljših 20 procesov Linuxa, ki se izvajajo v sistemu:

$ sudo $GOBIN/cpustat -n 20 

Profil CPU lahko v datoteko napišete tudi z uporabo možnosti -cpuprofile , kot sledi, nato pa z ukazom cat pogledate datoteko:

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

Za prikaz informacij o pomoči uporabite zastavico -h , kot sledi:

$ sudo $GOBIN/cpustat -h

Poiščite dodatne informacije v skladišču cpustat Github: https://github.com/uber-common/cpustat

To je vse! V tem članku smo vam pokazali, kako namestiti in uporabljati cpustat, uporabno orodje za merjenje zmogljivosti sistema za Linux. Delite svoje misli z nami v spodnjem oddelku za komentarje.