Cpustat - Linux-da işlemek prosesi bilen CPU-nyň ulanylyşyna gözegçilik edýär


Cpustat, Go programmirleme dilini ulanyp ýazylan Linux üçin güýçli ulgam öndürijilik ölçeg programmasydyr. Ulanyş doýgunlygy we ýalňyşlyklar (USE) usulyny (islendik ulgamyň işleýşini seljermegiň usulyýeti) ulanyp, CPU ulanylyşyny we doýgunlygyny täsirli görnüşde açmaga synanyşýar.

Ulgamda ýerine ýetirilýän her bir prosesiň has ýokary ýygylyk nusgalaryny alýar we soňra bu nusgalary has pes ýygylykda jemleýär. Mysal üçin, her prosesi her 200 metrden ölçäp we bu ölçegleri her 5 sekuntda jemläp biler, şol sanda käbir ölçegler üçin min/ortaça/iň ýokary bahalary.

Cpustat maglumatlary mümkin bolan iki usul bilen çykarýar: gysgaça aralygyň arassa tekst sanawy we her nusganyň reňkli aýlaw paneli.

Cpustat-y Linux-da nädip gurmaly

Cpustat ulanmak üçin Linux ulgamyňyzda Go (GoLang) gurnalan bolmaly, GoLang gurmak ädimlerini ýerine ýetirmek üçin aşakdaky baglanyşyga basyň: eger gurmadyk bolsaňyz:

  1. GoLang (Go Programming Language) Linux-da guruň

Go guranyňyzdan soň, ony gurmak üçin aşakdaky go get buýrugyny ýazyň, bu buýruk GOBIN üýtgeýjiňizde cpustat ikili gurar:

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

Linux-da Cpustat-ny nädip ulanmaly

Gurmak prosesi tamamlanandan soň, sudo buýrugyny ulanyp, cpustat-y aşakdaky ýaly işlediň, eger ulgamy kök däl ulanyjy hökmünde dolandyrýan bolsaňyz, ýalňyşlygy görkezilişi ýaly alarsyňyz:

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

Bellik: Beýleki buýruklar ýaly ulgamyňyza gurnan beýleki Go programmalary ýaly cpustat-y işletmek üçin PATH gurşaw üýtgeýjiňize GOBIN üýtgeýjisini goşuň. Linux-da PATH üýtgeýjisini nädip düzmelidigini öwrenmek üçin aşakdaky baglanyşygy açyň.

  1. PATH üýtgeýjileriňizi Linux-da hemişelik nädip düzmelidigini öwreniň

Cpustat şeýle işleýär; /proc katalogy her aralyk üçin amal ID-leriniň häzirki sanawyny almak üçin soralýar we:

  • her PID üçin, oka/proc/pid/stat, soňra öňki nusgadan tapawudy hasaplaň.
  • täze PID bolan bolsa, oka/proc/pid/cmdline.
  • her PID üçin, iş statistikasyny almak, öňki nusgadan tapawudyny hasaplamak üçin netlink habaryny iberiň.
  • umumy ulgam statistikasyny almak üçin/proc/stat alyň.

Againene-de, bu statistikalaryň hemmesini almak üçin näçe wagt sarp edilendigini hasaba almak üçin her uky aralygy düzülýär. Mundan başga-da, her bir nusga, nusgalaryň arasyndaky hakyky geçen wagt bilen her ölçegi ölçemek üçin näçe wagt sarp edilendigini ýazýar. Bu, cpustatyň gijikdirilmegini hasaba almaga synanyşýar.

Hiç hili argumentsiz işledilende, cpustat deslapky görnüşde aşakdakylary görkezer: nusga alma aralygy: 200ms, jemleýji aralyk: 2s (10 nusga), iň gowy 10 prokaty görkezýär, ulanyjy süzgüji: hemmesi, pid süzgüji: aşakdaky skrinshotda görkezilişi ýaly:

$ sudo $GOBIN/cpustat 

Aboveokardaky çykyşdan aşakdakylar meýdanlaryň öňünde görkezilen ulgamlaýyn jemleýji ölçegleriň manylarydyr:

  • usr - min/avg/max ulanyjy re modeimi CPU göterimi hökmünde iş wagty.
  • sys - min/avg/max ulgam rejesi CPU-nyň göterimi hökmünde işleýär.
  • gowy - min/ortaça/iň ýokary ulanyjy re modeimi CPU-nyň göterimi hökmünde pes ähmiýetli iş wagty.
  • boş - min/avg/max ulanyjy rejesi CPU-nyň göterimi hökmünde işleýär.
  • iowait - min/ortaça/IO diski garaşýan iň köp gijikdirme wagty.
  • kesmek - işlenip bilinýän ýagdaýdaky min/ortaça/iň köp san (ortaça ýük bilen deň).
  • blokirleme - IO diskde bloklanan prosesleriň min/ortaça/iň köp sanalmagy.
  • pstart - bu jemleýji aralykda başlanan prosesleriň/sapaklaryň sany.

Stillokardaky çykyşdan, belli bir amal üçin dürli sütünler:

  • ady -/proc/pid/stat ýa-da/proc/pid/cmdline-den umumy prosesiň ady.
  • pid - prosess id, tgid hem diýilýär.
  • min -/proc/pid/stat-dan ölçelýän pid üçin ulanyjy + ulgam wagtynyň iň pes nusgasy. Terez, CPU-nyň göterimi.
  • max - bu pid üçin ulanyjy + ulgam wagtynyň iň ýokary nusgasy, şeýle hem/proc/pid/stat-dan ölçelýär.
  • usr - jemleýji döwürde pid üçin ortaça ulanyjy wagty,/proc/pid/stat.
  • bilen ölçelýär
  • sys - jemleýji döwürde pid üçin ortaça ulgam wagty,/proc/pid/stat. bilen ölçelýär.
  • owadan -/proc/pid/stat-dan ölçelýän amal üçin häzirki gowy bahany görkezýär. Has ýokary “has gowy” diýmekdir.
  • runq - proses we onuň ähli sapaklary işledilip bilinýän, ýöne işlemäge garaşýan wagt, netlink arkaly meseleler statistikasyndan ölçelýär. Terez, CPU-nyň göterimi.
  • iow - işiň we onuň ähli sapaklarynyň IO disk tarapyndan blokirlenen wagty, netlink arkaly meseleler statistikasyndan ölçelýär. Terez, gysgaça aralykda ortaça CPU-nyň göterimi.
  • swap - işiň we onuň ähli sapaklarynyň çalşylmagyna garaşmak üçin sarp edilen wagt, meseleler salgylaryndan netlink arkaly ölçelýär. Terez, gysgaça aralykda ortaça CPU-nyň göterimi.
  • vcx we icx - prosesiň we ähli sapaklaryň jemleýji aralykda meýletin kontekst wyklýuçatelleriniň umumy sany, netlink arkaly meseleler statistikasyndan ölçelýär.
  • rss - häzirki RSS bahasy/proc/pid/stat-dan alnan. Bu amalyň ulanýan ýadynyň mukdary.
  • ctime -/proc/pid/stat bilen ölçelýän bu jemleýji aralykda çykan çagalara garaşmak üçin sarp edilýän ulanyjy + sys CPU wagtynyň jemi.

Uzak wagtlap işleýän çaga amallary bu ölçegi köplenç bulaşdyryp biljekdigine üns beriň, sebäbi wagt diňe çaga prosesi çykanda habar berilýär. Şeýle-de bolsa, bu ýygy-ýygydan kron işleriniň we CPU barlaglarynyň köplenç çaga amallary tarapyndan sarp edilýän saglyk barlaglarynyň täsirini ölçemek üçin peýdalydyr.

  • thrd - jemleýji aralygyň soňundaky sapaklaryň sany,/proc/pid/stat.
  • bilen ölçelýär
  • sam - gysgaça aralykdaky bu amal üçin nusgalaryň sany. Recentlyaňy-ýakynda başlanan ýa-da çykan amallar, gysgaça aralykdan has az nusga üçin görnüp biler.

Aşakdaky buýruk ulgamda işleýän iň oňat 10 ulanyjy amalyny görkezýär:

$ sudo $GOBIN/cpustat -u root

Çykyşlary ajaýyp terminal re modeiminde görkezmek üçin -t baýdagyny aşakdaky ýaly ulanyň:

$ sudo $GOBIN/cpustat -u roo -t

Ulgamda işleýän iň gowy 20 Linux prosesini görmek üçin:

$ sudo $GOBIN/cpustat -n 20 

Şeýle hem, CPU profilini aşakdaky ýaly -cpuprofile opsiýasyny ulanyp bir faýla ýazyp bilersiňiz we faýly görmek üçin pişik buýrugyny ulanyp bilersiňiz:

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

Kömek maglumatyny görkezmek üçin -h baýdagyny aşakdaky ýaly ulanyň:

$ sudo $GOBIN/cpustat -h

Cpustat Github ammaryndan goşmaça maglumat tapyň: https://github.com/uber-common/cpustat

Bu hemmesi! Bu makalada Linux üçin peýdaly ulgam öndürijilik ölçeg guraly bolan cpustat-y nädip gurmalydygyny we ulanmalydygyny görkezdik. Aşakdaky teswir bölümi arkaly pikirleriňizi biziň bilen paýlaşyň.