Cpustat - Yana Kula da Amfani da CPU ta Hanyar Gudanarwa a cikin Linux


Cpustat shiri ne mai ƙarfi na aikin ma'aunin aiki don Linux, wanda aka rubuta ta amfani da yaren shirye-shiryen Go. Yana ƙoƙarin bayyana amfani da CPU da jikewa ta hanya mai inganci, ta amfani da Hanyar Amfani da Saturation da Kurakurai (USE) (hanyar nazarin aikin kowane tsarin).

Yana fitar da samfuran mitar mafi girma na kowane tsari da ake aiwatarwa akan tsarin sannan ya taƙaita waɗannan samfuran a ƙaramin mitar. Misali, yana iya auna kowane tsari kowane 200ms kuma ya taƙaita waɗannan samfuran kowane sakan 5, gami da ƙimar min/matsakaici/max don wasu ma'auni.

Cpustat yana fitar da bayanai ta hanyoyi biyu masu yuwuwa: tsantsar jerin rubutu na tazara na taƙaitaccen lokaci da dashboard ɗin gungura mai launi na kowane samfurin.

Yadda ake Sanya CPUt a cikin Linux

Dole ne ku sanya Go (GoLang) akan tsarin Linux ɗin ku don amfani da cpustat, danna hanyar haɗin da ke ƙasa don bin matakan shigarwa na GoLang wanda shine idan ba ku shigar da shi ba:

  1. Shigar da GoLang (Go Programming Language) a cikin Linux

Da zarar ka shigar da Go, ka rubuta go samun umarni a kasa don shigar da shi, wannan umarni zai shigar da cpustat binary a cikin GOBIN variable:

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

Yadda ake Amfani da Cpustat a cikin Linux

Lokacin da tsarin shigarwa ya ƙare, gudanar da cpustat kamar haka tare da tushen gata ta amfani da umarnin sudo wanda shine idan kuna sarrafa tsarin azaman mai amfani mara tushe, in ba haka ba zaku sami kuskure kamar yadda aka nuna:

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

Lura: Don gudanar da cpustat da duk sauran shirye-shiryen Go da kuka sanya akan tsarin ku kamar kowane umarni, haɗa da GOBIN variable a cikin yanayin yanayin PATH ɗin ku. Bude hanyar haɗin da ke ƙasa don koyon yadda ake saita canjin PATH a cikin Linux.

  1. Koyi Yadda Ake Saita Canje-canjen Hanyar ku a Linux

Wannan shine yadda cpustat ke aiki; ana tambayar kundin adireshin /proc don samun jerin ID na tsari na yanzu na kowane tazara, da:

  • na kowane PID, karanta /proc/pid/stat, sannan lissafta bambanci daga samfurin baya.
  • idan sabon PID ne, karanta /proc/pid/cmdline.
  • ga kowane PID, aika saƙon netlink don ɗauko bayanan ɗawainiya, ƙididdige bambanci daga samfurin baya.
  • sauke /proc/stat don samun ƙididdigar tsarin gabaɗaya.

Bugu da ƙari, kowane tazarar barci ana daidaita shi don lissafin adadin lokacin da aka cinye ana ɗaukar duk waɗannan ƙididdiga. Bugu da ƙari, kowane samfurin kuma yana rubuta lokacin da aka ɗauka don auna kowane ma'auni ta ainihin lokacin da ya wuce tsakanin samfurori. Wannan yana ƙoƙarin yin lissafin jinkiri a cikin cpustat kanta.

Lokacin gudu ba tare da wata gardama ba, cpustat zai nuna mai zuwa ta tsohuwa: tazara tazara: 200ms, tazara tazara: 2s (samfuran 10), yana nuna manyan 10 procs, tace mai amfani: duk, pid filter: duk kamar yadda aka nuna a hoton da ke ƙasa:

$ sudo $GOBIN/cpustat 

Daga abin da aka fitar a sama, waɗannan su ne ma'anar ma'aunin taƙaitaccen tsarin da aka nuna a gaban filayen:

  • usr – min/ajg/max yanayin mai amfani yana gudana lokaci a matsayin kaso na CPU.
  • sys – min/ajg/max tsarin tsarin yana gudana lokaci a matsayin kashi na CPU.
  • nice - min/aji/max yanayin mai amfani ƙarancin fifikon lokacin gudu azaman kashi na CPU.
  • rago – min/aji/mafi yawan yanayin mai amfani yana gudana lokaci a matsayin kashi na CPU.
  • iowait - min/ajg/max lokacin jinkirin jiran diski IO.
  • prun – min/ajg/max count na matakai a cikin yanayin da ake iya gudu (daidai da matsakaicin nauyi).
  • pblock – min/ajg/max adadin hanyoyin da aka toshe akan faifai IO.
  • farko - adadin matakai/zaren da aka fara a cikin wannan tazarar taƙaice.

Har yanzu daga fitarwar da ke sama, don wani tsari da aka bayar, ginshiƙai daban-daban suna nufin:

  • name – sunan tsari gama gari daga /proc/pid/stat ko /proc/pid/cmdline.
  • pid – sarrafa id, wanda kuma ake kira “tgid”
  • min - mafi ƙarancin samfurin lokacin tsarin mai amfani + don pid, wanda aka auna daga /proc/pid/stat. Sikeli kashi ne na CPU.
  • max - mafi girman samfurin lokacin tsarin mai amfani+ don wannan pid, kuma an auna shi daga /proc/pid/stat.
  • usr – matsakaicin lokacin mai amfani don pid a tsawon lokacin taƙaitawa, wanda aka auna daga /proc/pid/stat.
  • sys – matsakaicin lokacin tsarin pid akan lokacin taƙaitawa, wanda aka auna daga /proc/pid/stat.
  • nice - yana nuna ƙimar kyakkyawa na yanzu don tsari, wanda aka auna daga /proc/pid/stat. Mafi girma yana nufin mafi kyau.
  • runq - lokacin aiwatarwa da duk zaren sa da aka kashe ba a iya gudu amma ana jira don gudu, an auna su daga taskstats ta hanyar netlink. Sikeli kashi ne na CPU.
  • iow - lokacin aiwatar da duk zaren da aka kashe ta hanyar diski IO, an auna shi daga ma'auni ta hanyar netlink. Sikeli shine kaso na CPU, wanda aka daidaita akan tazarar tazara.
  • swap - lokacin aiwatarwa da duk zaren da aka kashe ana jiran musanya su, an auna su daga taskstats ta hanyar netlink. Sikeli shine kaso na CPU, wanda aka daidaita akan tazarar tazara.
  • vcx da icx – jimlar adadin mahallin mahallin son rai yana canzawa ta hanyar tsari da duk zaren sa akan tazarar taƙaitaccen lokaci, wanda aka auna daga taskstats ta hanyar netlink.
  • rss - ƙimar RSS na yanzu da aka samo daga /proc/pid/stat. Shi ne adadin ƙwaƙwalwar da wannan tsari ke amfani da shi.
  • lokaci - jimlar lokacin mai amfani+sys CPU da aka jira da yaran da suka fita a wannan tazara ta taƙaita, an auna daga /proc/pid/stat.

Yi la'akari da cewa tafiyar matakai na yara masu tsawo na iya sau da yawa rikitar da wannan ma'auni, saboda lokacin da aka ruwaito kawai lokacin da tsarin yaron ya fita. Koyaya, wannan yana da amfani don auna tasirin ayyukan cron akai-akai da kuma duba lafiyar lafiya inda yawancin matakan yara ke cinye lokacin CPU sau da yawa.

  • na uku – adadin zaren a ƙarshen tazarar tazara, an auna daga /proc/pid/stat.
  • sam - adadin samfuran wannan tsari da aka haɗa a cikin tazarar taƙaitaccen lokaci. Hanyoyin da aka fara kwanan nan ko kuma sun fita na iya kasancewa ana iya gani don ƙananan samfurori fiye da tazarar taƙaitaccen lokaci.

Umurni mai zuwa yana nuna manyan matakai 10 na tushen mai amfani da ke gudana akan tsarin:

$ sudo $GOBIN/cpustat -u root

Don nuna fitarwa a cikin kyakkyawan yanayin tasha, yi amfani da tutar -t kamar haka:

$ sudo $GOBIN/cpustat -u roo -t

Don duba manyan hanyoyin Linux guda 20 da ke gudana akan tsarin:

$ sudo $GOBIN/cpustat -n 20 

Hakanan zaka iya rubuta bayanan martaba na CPU zuwa fayil ta amfani da zaɓin -cpuprofile kamar haka sannan amfani da umarnin cat don duba fayil ɗin:

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

Don nuna bayanan taimako, yi amfani da alamar -h kamar haka:

$ sudo $GOBIN/cpustat -h

Nemo ƙarin bayani daga wurin ajiyar Github na cpustat: https://github.com/uber-common/cpustat

Shi ke nan! A cikin wannan labarin, mun nuna muku yadda ake girka da amfani da cpustat, kayan aikin ma'auni mai amfani na tsarin aiki don Linux. Raba ra'ayoyin ku tare da mu ta sashin sharhin da ke ƙasa.