Cpustat - Na-enyocha ojiji CPU site na usoro ịgba ọsọ na Linux


Cpustat bụ mmemme tụọ arụmọrụ sistemụ siri ike maka Linux, ejiri asụsụ mmemme Go dee. Ọ na-anwa ikpughe itinye n'ọrụ na saturation CPU n'ụzọ dị irè, na-eji Usoro Saturation na Errors (USE) Utilisation (usoro iji nyochaa arụmọrụ nke sistemụ ọ bụla).

Ọ na-ewepụta ihe nlele ugboro ugboro nke usoro ọ bụla a na-eme na sistemụ wee chịkọta ihe nlele ndị a na obere oge. Dịka ọmụmaatụ, ọ nwere ike tụọ usoro ọ bụla kwa 200ms ma chịkọta ihe nlele ndị a kwa sekọnd ise ọ bụla, gụnyere ụkpụrụ min/nkezi/max maka ụfọdụ metrik.

Cpustat na-ewepụta data n'ụzọ abụọ enwere ike: ndepụta ederede dị ọcha nke oge nchịkọta yana dashboard mpịakọta mara mma nke nlele ọ bụla.

Otu esi etinye CPUstat na Linux

Ị ga-etinyerịrị Go (GoLang) na sistemụ Linux gị iji jiri cpustat, pịa njikọ dị n'okpuru iji soro usoro nrụnye GoLang bụ ma ọ bụrụ na itinyeghị ya:

  1. Wụnye GoLang (Go Programming Language) na Linux

Ozugbo i tinyechara Go, pịnye iwu na-aga n'okpuru iji wụnye ya, iwu a ga-etinye ọnụọgụ cpustat na mgbanwe GOBIN gị:

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

Otu esi eji CPUstat na Linux

Mgbe usoro nrụnye ahụ mechara, gbaa cpustat dị ka ndị a na ikike mgbọrọgwụ site na iji iwu sudo bụ ma ọ bụrụ na ị na-achịkwa usoro ahụ dị ka onye na-abụghị mgbọrọgwụ, ma ọ bụghị na ị ga-enweta njehie dị ka egosiri:

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

Mara: Iji mee cpustat yana mmemme Go ndị ọzọ ị rụnyere na sistemụ gị dị ka iwu ọ bụla ọzọ, tinye GOBIN variable na mgbanwe gburugburu PATH gị. Mepee njikọ dị n'okpuru ka ịmụta ka esi edobe mgbanwe PATH na Linux.

  1. Mụta ka esi edobe mgbanwe PATH gị na-adịgide adịgide na Linux

Nke a bụ otú CPUstat si arụ ọrụ; a na-ajụ akwụkwọ ndekọ /proc ka ị nweta ndepụta NJ usoro dị ugbu a maka oge ọ bụla, yana:

  • maka PID ọ bụla, gụọ /proc/pid/stat, wee gbakọọ ọdịiche dị na nlele gara aga.
  • ọ bụrụ na ọ bụ PID ọhụrụ, gụọ /proc/pid/cmdline.
  • maka PID nke ọ bụla, ziga ozi netlink iji weta ihe ndekọ ọrụ, gbakọọ ọdịiche dị na nlele gara aga.
  • fetch /proc/stat iji nweta mkpokọta sistemụ.

Ọzọ, a na-edozi oge ihi ụra nke ọ bụla ka ọ bụrụ na ọ ga-ewe oge iji weta stats ndị a niile. Ọzọkwa, nlele ọ bụla na-edekọkwa oge o were iji tụọ nha ọ bụla site na oge gafere n'etiti ihe nlele. Nke a na-anwa ịkọwa maka igbu oge na cpustat n'onwe ya.

Mgbe ọ na-agba ọsọ na-enweghị arụmụka ọ bụla, cpustat ga-egosipụta ihe ndị a na ndabara: oge nlele: 200ms, oge nchịkọta: 2s (10 samples), na-egosi n'elu 10 procs, onye ọrụ nzacha: niile, pid filter: niile dị ka egosiri na nseta ihuenyo n'okpuru:

$ sudo $GOBIN/cpustat 

Site na nsonaazụ dị n'elu, ihe ndị a bụ nkọwa nke metrik nchịkọta zuru oke nke usoro egosiri n'ihu ubi:

  • usr – min/apaj/max ọnọdụ onye ọrụ na-agba oge dị ka pasenti nke CPU.
  • sys – nkeji/ajg/max usoro na-agba oge dị ka pasenti nke CPU.
  • nice – min/avg/max ọnọdụ onye ọrụ obere oge ịgba ọsọ dị ka pasenti nke CPU.
  • na-adịghị - nkeji/apapọ/max ọnọdụ onye ọrụ na-agba ọsọ oge dị ka pasenti nke CPU.
  • iowait – nkeji/apapọ/max oge igbu oge na-echere IO diski.
  • prun – min/apapọ/max ọnụ nke usoro n'ime ọnọdụ ịgba ọsọ (otu ihe dị ka nkezi ibu).
  • pblock – nkeji/apapọ/max ọnụ nke usoro akpọchiri na diski IO.
  • bido – ọnụọgụ usoro/eriri bidoro n’ime oge nchịkọta a.

N'agbanyeghị site na mmepụta n'elu, maka usoro enyere, kọlụm dị iche iche pụtara:

  • aha – aha usoro a na-ahụkarị site na /proc/pid/stat ma ọ bụ /proc/pid/cmdline.
  • pid – usoro id, nke a na-akpọkwa “tgid”
  • min - nlele kacha ala nke oge sistemụ onye ọrụ + maka pid, tụrụ site na /proc/pid/stat. Ọnụ ọgụgụ bụ pasent nke CPU.
  • max – ihe nlele kacha elu nke oge sistemụ onye ọrụ maka pid a, atụkwara ya site na /proc/pid/stat.
  • usr – nkezi oge onye ọrụ maka pid n'ime oge nchịkọta, tụrụ site na /proc/pid/stat.
  • sys – nkezi oge sistemụ maka pid n'ime oge nchịkọta, tụrụ site na /proc/pid/stat.
  • mara mma – na-egosi uru “mma” dị ugbu a maka usoro a, tụrụ site na /proc/pid/stat. Elu pụtara “mma”.
  • runq - oge usoro na eri ya niile ejiri na-agba ọsọ mana na-eche ka ọ na-agba ọsọ, tụrụ site na taskstats site na netlink. Ọnụ ọgụgụ bụ pasent nke CPU.
  • iow - oge usoro na eri ya niile ejiri diski IO kpuchiri, tụọ site na taskstats site na netlink. Ọnụ ọgụgụ bụ pasenti nke CPU, nke a na-agbakọ karịa oge nchịkọta.
  • swap - oge usoro na eri ya niile nọrọ na-eche ka atụgharị ya, tụọ site na taskstats site na netlink. Ọnụ ọgụgụ bụ pasenti nke CPU, nke a na-agbakọ karịa oge nchịkọta.
  • vcx na icx – ngụkọta ọnụ ọgụgụ nke afọ ofufo gbara gburugburu na-agbanwe site na usoro na eri ya niile n'ofe oge nchịkọta, tụrụ site na taskstats site na netlink.
  • rss – uru RSS enwetara site na /proc/pid/stat. Ọ bụ ego ole usoro a na-eji.
  • oge - nchikota nke onye ọrụ+sys oge CPU riri site na-echere ụmụaka ndị na-apụ n'oge oge nchịkọta a, tụrụ site na /proc/pid/stat.

Rịba ama na usoro ụmụaka na-agba ọsọ ogologo oge nwere ike ịmegharị nha a, n'ihi na a na-akọ oge naanị mgbe usoro nwatakịrị na-apụ. Otú ọ dị, nke a bara uru maka ịlele mmetụta nke ọrụ cron ugboro ugboro na nyocha ahụike ebe ọtụtụ usoro ụmụaka na-eri oge CPU oge.

  • Nke atọ – ọnụọgụ eri na ngwụcha nke oge nchịkọta, tụrụ site na /proc/pid/stat.
  • sam - ọnụọgụ nlele maka usoro a gụnyere n'ime oge nchịkọta. Usoro malitere na nso nso a ma ọ bụ pụta nwere ike ịhụ ya maka nlele dị ole na ole karịa oge nchịkọta.

Iwu na-esonụ na-egosiputa usoro ọrụ mgbọrọgwụ 10 kachasị na-agba ọsọ na sistemụ:

$ sudo $GOBIN/cpustat -u root

Iji gosipụta mmepụta n'ụdị njedebe mara mma, jiri ọkọlọtọ -t dị ka ndị a:

$ sudo $GOBIN/cpustat -u roo -t

Ka ilele usoro Linux 20 kachasị na-arụ na sistemụ:

$ sudo $GOBIN/cpustat -n 20 

Ị nwekwara ike dee profaịlụ CPU na faịlụ site na iji -cpuprofile nhọrọ dị ka ndị a wee jiri iwu nwamba hụ faịlụ:

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

Iji gosi ozi enyemaka, jiri ọkọlọtọ -h dị ka ndị a:

$ sudo $GOBIN/cpustat -h

Chọta ozi ndị ọzọ sitere na cpustat Github Repository: https://github.com/uber-common/cpustat

Ọ gwụla! N'ime edemede a, anyị gosiri gị otu esi etinye ma jiri cpustat, ngwa ọrụ arụmọrụ sistemụ bara uru maka Linux. Gwa anyị echiche gị site na ngalaba nkọwa n'okpuru.