Cpustat - uzrauga CPU izmantošanu, darbinot procesus Linux


Cpustat ir spēcīga sistēmas veiktspējas mērīšanas programma Linux, kas rakstīta, izmantojot Go programmēšanas valodu. Tas mēģina efektīvi atklāt CPU izmantošanu un piesātinājumu, izmantojot The Utilization Saturation and Errors (USE) metodi (metodiku jebkuras sistēmas veiktspējas analīzei).

Tas izraksta katras sistēmas augstākas frekvences paraugus, kas tiek veikti sistēmā, un pēc tam apkopo šos paraugus zemākā frekvencē. Piemēram, tas var izmērīt katru procesu ik pēc 200 ms un apkopot šos paraugus ik pēc 5 sekundēm, ieskaitot atsevišķu metriku min/vidējo/maksimālo vērtību.

Cpustat izvada datus divos iespējamos veidos: tīra teksta kopsavilkuma intervāla saraksts un krāsains ritināšanas informācijas panelis katram paraugam.

Kā instalēt Cpustat Linux

Lai izmantotu cpustat, Linux sistēmā ir jābūt instalētai Go (GoLang), noklikšķiniet uz tālāk esošās saites, lai izpildītu GoLang instalēšanas darbības, tas ir, ja jums tas vēl nav instalēts:

  1. Linux instalējiet GoLang (Go Programming Language)

Kad esat instalējis Go, zemāk ierakstiet komandu go get, lai to instalētu, šī komanda instalēs bināro cpustat jūsu GOBIN mainīgajā:

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

Kā Linux lietot Cpustat

Kad instalēšanas process ir pabeigts, palaidiet cpustat šādi ar root tiesībām, izmantojot komandu sudo, tas ir, ja jūs kontrolējat sistēmu kā lietotāju, kas nav root lietotājs, pretējā gadījumā saņemsit kļūdu, kā parādīts:

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

Piezīme. Lai palaistu cpustat, kā arī visas citas Go programmas, kuras esat instalējis sistēmā, tāpat kā citas komandas, PATH vides mainīgajā iekļaujiet mainīgo GOBIN. Atveriet zemāk esošo saiti, lai uzzinātu, kā Linux iestatīt mainīgo PATH.

  1. Uzziniet, kā Linux pastāvīgi iestatīt savus $PATH mainīgos

Tā darbojas cpustat; direktorija /proc tiek vaicāta, lai iegūtu pašreizējo procesa ID sarakstu katram intervālam, un:

  • katram PID lasiet/proc/pid/stat, pēc tam aprēķiniet atšķirību no iepriekšējā parauga.
  • ja tas ir jauns PID, lasiet/proc/pid/cmdline.
  • katram PID nosūtiet netlink ziņojumu, lai ielādētu uzdevumus, aprēķinātu atšķirību no iepriekšējā parauga.
  • ielādējiet/proc/stat, lai iegūtu kopējo sistēmas statistiku.

Atkal katrs miega intervāls tiek pielāgots, lai ņemtu vērā patērēto laiku, iegūstot visu šo statistiku. Turklāt katrs paraugs reģistrē arī laiku, kas vajadzīgs katra mērījuma mērogošanai pēc faktiskā laika, kas pagājis starp paraugiem. Tas mēģina ņemt vērā kavēšanos pašā cpustat.

Palaižot bez jebkādiem argumentiem, cpustat pēc noklusējuma parādīs: paraugu ņemšanas intervāls: 200ms, kopsavilkuma intervāls: 2s (10 paraugi), parādot top 10 procs, lietotāja filtrs: visi, pid filtrs: visi, kā parādīts zemāk esošajā ekrānuzņēmumā:

$ sudo $GOBIN/cpustat 

Iepriekš redzamajā izejā ir visas sistēmas kopsavilkuma metrikas nozīme, kas tiek parādīta pirms laukiem:

  • usr - min/avg/max lietotāja režīma darbības laiks procentos no CPU.
  • sys - min/avg/max sistēmas režīma darbības laiks procentos no procesora.
  • jauki - minimālais/vidējais/maksimālais lietotāja režīma zemas prioritātes izpildes laiks procentos no CPU.
  • dīkstāvē - min/avg/max lietotāja režīma darbības laiks procentos no CPU.
  • iowait - min/avg/max kavēšanās laiks, gaidot diska IO.
  • atzarošana - min/vidējā/maksimālā procesu skaits darbināmā stāvoklī (tāds pats kā vidējais slodzes līmenis).
  • pblock - diska IO bloķēto procesu min/avg/max skaits.
  • pstart - šajā kopsavilkuma intervālā sākto procesu/pavedienu skaits.

Tomēr no iepriekš minētās izejas konkrētajam procesam dažādas kolonnas nozīmē:

  • nosaukums - kopīgs procesa nosaukums no/proc/pid/stat vai/proc/pid/cmdline.
  • pid - procesa ID, saukts arī par “tgid”.
  • min - zemākais lietotāja paraugs + sistēmas laiks pid, mērot no/proc/pid/stat. Mērogs ir procesora procentuālā daļa.
  • max - augstākais lietotāja + sistēmas laika paraugs šim pidam, ko mēra arī no/proc/pid/stat.
  • usr - vidējais lietotāja laiks pidam kopsavilkuma periodā, mērot no/proc/pid/stat.
  • sys - vidējais sistēmas laiks pidam kopsavilkuma periodā, mērot no/proc/pid/stat.
  • jauks - norāda pašreizējo procesa “jauko” vērtību, mērot no/proc/pid/stat. Augstāks nozīmē “jaukāks”.
  • runq - laiks, kurā process un visi tā pavedieni tiek pavadīti skrienami, bet gaida, lai palaistu, mērot no taskstata, izmantojot netlink. Mērogs ir procesora procentuālā daļa.
  • iow - laiks un visi tā pavadītie pavedieni ir bloķēti ar diska IO, mērot no taskstata caur netlink. Mērogs ir CPU procentuālā daļa, aprēķināta vidēji kopsavilkuma intervālā.
  • mijmaiņas laiks - process un visi tā pavedieni, kas pavadīti, gaidot mijmaiņu, mērot no taskstata, izmantojot netlink. Mērogs ir CPU procentuālā daļa, aprēķināta vidēji kopsavilkuma intervālā.
  • vcx un icx - kopējais brīvprātīgo konteksta komutatoru skaits pēc procesa un visiem tā pavedieniem kopsavilkuma intervālā, ko mēra no taskstata, izmantojot netlink.
  • rss - pašreizējā RSS vērtība, kas iegūta no/proc/pid/stat. Tas ir atmiņas apjoms, ko šis process izmanto.
  • ctime - lietotāja + sys CPU laika summa, ko patērēja bērni, kuri izgāja šajā kopsavilkuma intervālā, mērot no/proc/pid/stat.

Ņemiet vērā, ka ilgstoši bērna procesi bieži var sajaukt šo mērījumu, jo par laiku tiek ziņots tikai tad, kad bērna process iziet. Tomēr tas ir noderīgi, lai izmērītu biežu cron darbu un veselības pārbaužu ietekmi, ja CPU laiku bieži patērē daudzi bērnu procesi.

  • thrd - pavedienu skaits kopsavilkuma intervāla beigās, mērot no/proc/pid/stat.
  • sam - šī procesa paraugu skaits, kas iekļauts kopsavilkuma intervālā. Nesen sāktie vai izietie procesi, iespējams, bija redzami mazākiem paraugiem nekā kopsavilkuma intervāls.

Šī komanda parāda 10 galvenos saknes lietotāju procesus, kas darbojas sistēmā:

$ sudo $GOBIN/cpustat -u root

Lai parādītu izvadi izdomātā termināļa režīmā, izmantojiet karodziņu -t šādi:

$ sudo $GOBIN/cpustat -u roo -t

Lai skatītu top 20 Linux procesus, kas darbojas sistēmā:

$ sudo $GOBIN/cpustat -n 20 

Varat arī ierakstīt procesora profilu failā, izmantojot opciju -cupuprofile šādi, un pēc tam izmantojiet komandu cat, lai apskatītu failu:

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

Lai parādītu palīdzības informāciju, izmantojiet karodziņu -h šādi:

$ sudo $GOBIN/cpustat -h

Papildinformāciju meklējiet cpustat Github repozitorijā: https://github.com/uber-common/cpustat

Tas ir viss! Šajā rakstā mēs parādījām, kā instalēt un izmantot cpustat - noderīgu sistēmas veiktspējas mērīšanas rīku Linux. Dalieties savās domās, izmantojot zemāk esošo komentāru sadaļu.