Cpustat - Nagmonitor sa Paggamit sa CPU pinaagi sa Pagdagan sa mga Proseso sa Linux


Ang Cpustat usa ka gamhanan nga sistema sa pagsukod sa performance nga programa alang sa Linux, nga gisulat gamit ang Go programming language. Gisulayan niini ang pagpadayag sa paggamit ug saturation sa CPU sa epektibong paagi, gamit ang The Utilization Saturation and Errors (USE) Method (usa ka metodolohiya sa pag-analisar sa performance sa bisan unsang sistema).

Gikuha niini ang mas taas nga frequency nga mga sample sa matag proseso nga gipatuman sa sistema ug dayon gi-summarize kini nga mga sample sa mas ubos nga frequency. Pananglitan, masukod niini ang matag proseso matag 200ms ug i-summarize kini nga mga sample matag 5 segundos, lakip ang min/average/max values para sa pipila ka metrics.

Ang Cpustat nagpagawas sa datos sa duha ka posible nga mga paagi: usa ka putli nga lista sa teksto sa agwat sa summary ug usa ka mabulukon nga scrolling dashboard sa matag sample.

Giunsa ang Pag-install sa Cpustat sa Linux

Kinahanglan nimo nga na-install ang Go (GoLang) sa imong Linux system aron magamit ang cpustat, i-klik ang link sa ubos aron sundon ang mga lakang sa pag-install sa GoLang kung wala nimo kini na-install:

  1. I-install ang GoLang (Go Programming Language) sa Linux

Kung na-install na nimo ang Go, i-type ang go get command sa ubos aron ma-install kini, kini nga command mag-install sa cpustat binary sa imong GOBIN variable:

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

Giunsa Paggamit ang Cpustat sa Linux

Kung makompleto na ang proseso sa pag-install, pagdagan ang cpustat sama sa mosunod nga adunay mga pribilehiyo sa gamut gamit ang sudo nga mando nga kung imong kontrolon ang sistema ingon usa ka dili gamut nga tiggamit, kung dili makuha nimo ang sayup sama sa gipakita:

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

Mubo nga sulat: Aron makadagan ang cpustat ingon man ang tanan nga uban pang mga programa sa Go nga imong gi-install sa imong sistema sama sa bisan unsang ubang mga sugo, iapil ang GOBIN variable sa imong PATH environment variable. Ablihi ang link sa ubos aron makat-on unsaon pag-set sa PATH variable sa Linux.

  1. Pagkat-on Unsaon Pagbutang sa Imong Mga Variable sa PATH nga Permanente sa Linux

Kini mao ang paagi sa cpustat nagtrabaho; ang /proc nga direktoryo gipangutana aron makuha ang kasamtangang listahan sa mga ID sa proseso alang sa matag agwat, ug:

  • para sa matag PID, basaha ang /proc/pid/stat, dayon kuwentaha ang kalainan gikan sa miaging sample.
  • kon bag-o kini nga PID, basaha ang /proc/pid/cmdline.
  • para sa matag PID, magpadala ug netlink nga mensahe aron makuha ang taskstats, kuwentaha ang kalainan gikan sa miaging sample.
  • kuhaa ang /proc/stat aron makuha ang kinatibuk-ang estadistika sa sistema.

Sa makausa pa, ang matag agwat sa pagkatulog gipasibo sa pag-asoy sa gidaghanon sa oras nga nahurot pagkuha sa tanan niini nga mga istatistika. Dugang pa, ang matag sample nagrekord usab sa oras nga gikinahanglan sa pagsukod sa matag sukod pinaagi sa aktuwal nga milabay nga oras tali sa mga sample. Kini misulay sa pag-asoy sa mga paglangan sa cpustat mismo.

Kung modagan nga walay bisan unsang argumento, ang cpustat magpakita sa mosunod nga default: sampling interval: 200ms, summary interval: 2s (10 samples), nagpakita sa top 10 procs, user filter: tanan, pid filter: tanan sama sa gipakita sa screenshot sa ubos:

$ sudo $GOBIN/cpustat 

Gikan sa output sa ibabaw, ang mosunod mao ang mga kahulogan sa tibuok sistema nga summary metrics nga gipakita atubangan sa mga field:

  • usr – min/avg/max user mode run time isip porsyento sa usa ka CPU.
  • sys – min/avg/max system mode run time isip porsyento sa usa ka CPU.
  • maayo – min/avg/max user mode ubos nga priority run time isip porsyento sa usa ka CPU.
  • idle – min/avg/max user mode run time isip porsyento sa usa ka CPU.
  • iowait – min/avg/max nga oras sa paglangan sa paghulat sa disk IO.
  • prun – min/avg/max nga ihap sa mga proseso sa usa ka runnable nga kahimtang (parehas sa load average).
  • pblock – min/avg/max nga ihap sa mga proseso nga gibabagan sa disk IO.
  • pstart – gidaghanon sa mga proseso/mga hilo nga nagsugod niining summary interval.

Gikan gihapon sa output sa ibabaw, alang sa usa ka gihatag nga proseso, ang lain-laing mga kolum nagpasabot:

  • ngalan – komon nga ngalan sa proseso gikan sa /proc/pid/stat o /proc/pid/cmdline.
  • pid – process id, gitawag usab nga “tgid”.
  • min – pinakaubos nga sample sa user+system time para sa pid, gisukod gikan sa /proc/pid/stat. Ang scale kay porsyento sa usa ka CPU.
  • max – pinakataas nga sample sa user+system time para niining pid, gisukod usab gikan sa /proc/pid/stat.
  • usr – aberids nga oras sa user para sa pid sulod sa summary period, gisukod gikan sa /proc/pid/stat.
  • sys – kasagarang oras sa sistema para sa pid sa panahon sa summary, gisukod gikan sa /proc/pid/stat.
  • Nindot – nagpaila sa kasamtangang “nice” value para sa proseso, gisukod gikan sa /proc/pid/stat. Ang mas taas nagpasabot nga “mas nindot”.
  • runq – oras ang proseso ug ang tanan nga mga hilo niini nga magamit nga magamit apan naghulat nga modagan, gisukod gikan sa taskstats pinaagi sa netlink. Ang scale kay porsyento sa usa ka CPU.
  • iow – orasa ang proseso ug ang tanan nga mga thread niini nga gi-block sa disk IO, gisukod gikan sa taskstats pinaagi sa netlink. Ang sukdanan kay usa ka porsyento sa usa ka CPU, nga gi-average sa gilay-on nga summary.
  • swap – panahon sa proseso ug sa tanang thread niini nga gigugol sa paghulat nga ibaylo, gisukod gikan sa taskstats pinaagi sa netlink. Ang sukdanan kay usa ka porsyento sa usa ka CPU, nga gi-average sa gilay-on nga summary.
  • vcx ug icx – kinatibuk-ang gidaghanon sa boluntaryong konteksto nga gibalhin sa proseso ug sa tanang mga thread niini sa summary interval, gisukod gikan sa taskstats pinaagi sa netlink.
  • rss – kasamtangang bili sa RSS nga gikuha gikan sa /proc/pid/stat. Kini ang gidaghanon sa memorya nga gigamit niini nga proseso.
  • ctime – kadaghanon sa user+sys nga oras sa CPU nga gigamit sa naghulat nga mga bata nga migawas atol niining summary interval, gisukod gikan sa /proc/pid/stat.

Timan-i nga ang dugay nga mga proseso sa bata kasagarang makalibog niini nga pagsukod, tungod kay ang oras gitaho lamang kung ang proseso sa bata mogawas. Bisan pa, kini mapuslanon alang sa pagsukod sa epekto sa kanunay nga mga trabaho sa cron ug mga pagsusi sa kahimsog diin ang oras sa CPU kanunay nga gigamit sa daghang mga proseso sa bata.

  • ikatulo – gidaghanon sa mga thread sa katapusan sa summary interval, gisukod gikan sa /proc/pid/stat.
  • sam – gidaghanon sa mga sample alang niini nga proseso nga gilakip sa summary interval. Ang mga proseso nga bag-o lang nagsugod o migawas mahimong makita sa mas gamay nga mga sample kay sa summary interval.

Ang mosunod nga sugo nagpakita sa top 10 root user nga proseso nga nagdagan sa sistema:

$ sudo $GOBIN/cpustat -u root

Aron ipakita ang output sa usa ka nindot nga terminal mode, gamita ang -t nga bandila sama sa mosunod:

$ sudo $GOBIN/cpustat -u roo -t

Aron matan-aw ang nanguna nga 20 nga mga proseso sa Linux nga nagdagan sa sistema:

$ sudo $GOBIN/cpustat -n 20 

Mahimo usab nimo isulat ang profile sa CPU sa usa ka file gamit ang -cpuprofile nga kapilian sama sa mosunod ug dayon gamita ang cat command aron makita ang file:

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

Aron ipakita ang impormasyon sa tabang, gamita ang -h nga bandera sama sa mosunod:

$ sudo $GOBIN/cpustat -h

Pagpangita dugang nga impormasyon gikan sa cpustat Github Repository: https://github.com/uber-common/cpustat

Kana lang! Sa kini nga artikulo, gipakita namon kanimo kung giunsa ang pag-install ug paggamit sa cpustat, usa ka mapuslanon nga himan sa pagsukod sa pasundayag sa sistema alang sa Linux. Ipakigbahin ang imong mga hunahuna kanamo pinaagi sa seksyon sa komento sa ubos.