Cpustat - Diigi Lilo Sipiyu nipasẹ Ṣiṣe Awọn ilana ni Lainos


Cpustat jẹ eto wiwọn iṣẹ ṣiṣe ti o lagbara fun Lainos, ti a kọ nipa lilo ede siseto Go. O gbidanwo lati ṣafihan iṣamulo Sipiyu ati ekunrere ni ọna ti o munadoko, ni lilo Ọna Iṣamulo ati Awọn aṣiṣe (USE) Ọna (ilana fun itupalẹ iṣẹ ṣiṣe ti eyikeyi eto).

O yọ awọn ayẹwo igbohunsafẹfẹ ti o ga julọ ti gbogbo ilana ti a ṣe lori eto ati lẹhinna ṣe akopọ awọn ayẹwo wọnyi ni igbohunsafẹfẹ kekere. Fun apeere, o le wọn gbogbo ilana ni gbogbo 200ms ati ṣe akopọ awọn ayẹwo wọnyi ni gbogbo awọn aaya 5, pẹlu awọn iwọn min/apapọ/iwọn fun awọn iṣiro kan.

Cpustat awọn ọnajade data ni awọn ọna meji ti o ṣee ṣe: atokọ ọrọ mimọ ti aarin aarin ati awọsi alawọ ewe yiyi ti apẹẹrẹ kọọkan.

Bii o ṣe le Fi Cpustat sii ni Lainos

O gbọdọ ni Go (GoLang) sori ẹrọ lori ẹrọ Linux rẹ lati le lo cpustat, tẹ ọna asopọ isalẹ lati tẹle awọn igbesẹ fifi sori GoLang ti o jẹ ti o ko ba fi sii:

  1. Fi GoLang sii (Ede siseto Go) ni Linux

Lọgan ti o ba ti fi sii Go, tẹ aṣẹ lọ gba ni isalẹ lati fi sii, aṣẹ yii yoo fi sori ẹrọ alakomeji cpustat ninu oniyipada GOBIN rẹ:

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

Bii o ṣe le Lo Cpustat ni Lainos

Nigbati ilana fifi sori ẹrọ ba pari, ṣiṣe cpustat gẹgẹbi atẹle pẹlu awọn anfani root nipa lilo aṣẹ sudo ti o jẹ ti o ba ṣakoso eto rẹ gẹgẹbi olumulo ti kii ṣe gbongbo, bibẹkọ ti o yoo gba aṣiṣe naa bi o ti han:

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

Akiyesi: Lati ṣiṣẹ cpustat bii gbogbo awọn eto Go miiran ti o ti fi sii lori eto rẹ bii eyikeyi awọn ofin miiran, pẹlu iyipada GOBIN ninu iyipada ayika PATH rẹ. Ṣii ọna asopọ ni isalẹ lati kọ bi a ṣe le ṣeto oniyipada PATH ni Linux.

  1. Kọ ẹkọ Bii o ṣe le Ṣeto Awọn oniyipada $PATH rẹ Pipẹ ni Linux

Eyi ni bii cpustat ṣe n ṣiṣẹ; itọsọna naa /proc lati beere lati gba atokọ lọwọlọwọ ti awọn ID idanimọ fun gbogbo aaye, ati:

  • fun PID kọọkan, kika/proc/pid/stat, lẹhinna ṣe iṣiro iyatọ lati apẹẹrẹ iṣaaju.
  • ni idi ti o jẹ PID tuntun, ka/proc/pid/cmdline.
  • fun PID kọọkan, firanṣẹ ifiranṣẹ netlink kan lati mu awọn iṣiro iṣẹ-ṣiṣe, ṣe iṣiro iyatọ lati apẹẹrẹ ti tẹlẹ.
  • mu/proc/iṣiro lati gba awọn iṣiro eto gbogbogbo.

Lẹẹkansi, aarin aarin oorun kọọkan ni a tunṣe si akọọlẹ fun iye akoko ti o mu gbogbo awọn iṣiro wọnyi. Pẹlupẹlu, ayẹwo kọọkan tun ṣe igbasilẹ akoko ti o mu lati ṣe iwọn wiwọn kọọkan nipasẹ akoko ti o kọja gangan laarin awọn ayẹwo. Eyi igbiyanju lati ṣe akọọlẹ fun awọn idaduro ni cpustat funrararẹ.

Nigbati o ba ṣiṣẹ laisi eyikeyi awọn ariyanjiyan, cpustat yoo ṣe afihan atẹle nipa aiyipada: Aarin iṣapẹẹrẹ: 200ms, aarin akopọ: 2s (awọn ayẹwo 10), fifihan oke 10 procs, àlẹmọ olumulo: gbogbo wọn, àlẹmọ pid: gbogbo bi o ṣe han ninu sikirinifoto ni isalẹ:

$ sudo $GOBIN/cpustat 

Lati iṣẹjade ti o wa loke, atẹle ni awọn itumọ ti awọn iṣiro atokọ eto-jakejado ti o han ṣaaju awọn aaye:

  • usr - min/avg/max ipo olumulo olumulo ṣiṣe akoko bi ipin ogorun Sipiyu kan.
  • sys - min/avg/max ipo eto ṣiṣe akoko bi ipin ogorun Sipiyu kan.
  • dara - min/avg/ipo ipo olumulo kekere ni akoko ṣiṣe ṣiṣe bi ipin kan ti Sipiyu
  • laišišẹ - min/avg/ipo olumulo olumulo ṣiṣe akoko bi ipin ogorun Sipiyu kan.
  • iowait - min/avg/max akoko idaduro ti nduro fun disk IO.
  • prun - min/avg/max kika ti awọn ilana ni ipo ṣiṣiṣẹ (kanna bii iwọn fifuye).
  • pblock - min/avg/max count ti awọn ilana ti a dina lori disk IO.
  • pstart - nọmba ti awọn ilana/awọn okun ti o bẹrẹ ni aarin akopọ yii.

Ṣi lati iṣẹjade loke, fun ilana ti a fun, awọn ọwọn oriṣiriṣi tumọ si:

  • orukọ - orukọ ilana wọpọ lati/proc/pid/stat or/proc/pid/cmdline.
  • pid - id ilana, tun tọka si bi “tgid”.
  • min - apẹẹrẹ ti o kere julọ ti olumulo + akoko eto fun pid, ti wọn lati/proc/pid/stat. Asekale jẹ ipin ogorun ti Sipiyu kan.
  • max - apẹẹrẹ ti o ga julọ ti olumulo + akoko eto fun pid yii, tun wọn lati/proc/pid/stat.
  • usr - apapọ akoko olumulo fun pid lori akoko akopọ, wọn lati/proc/pid/stat.
  • sys - akoko eto apapọ fun pid lori akoko akopọ, wọn lati/proc/pid/stat.
  • dara - tọka iye “dara” lọwọlọwọ fun ilana, wọn lati/proc/pid/stat. Ti o ga julọ tumọ si “dara julọ”.
  • runq - akoko ilana ati gbogbo awọn okun rẹ lo runnable ṣugbọn nduro lati ṣiṣe, wọn lati awọn iṣẹ-ṣiṣe nipasẹ netlink. Asekale jẹ ipin ogorun ti Sipiyu kan.
  • iow - akoko ilana ati gbogbo awọn okun rẹ ti o lo ti dina nipasẹ disk IO, ti wọn lati awọn iṣẹ-ṣiṣe nipasẹ netlink. Asekale jẹ ipin ogorun ti Sipiyu kan, ni apapọ lori aaye aarin akopọ.
  • swap - akoko ilana ati gbogbo awọn okun rẹ lo idaduro lati wa ni rọpo, wọn lati awọn iṣẹ-ṣiṣe nipasẹ netlink. Asekale jẹ ipin ogorun ti Sipiyu kan, ni apapọ lori aaye aarin akopọ.
  • vcx ati icx - nọmba lapapọ ti awọn iyipada ti o tọsi atinuwa nipasẹ ilana ati gbogbo awọn okun rẹ lori aarin akopọ, ti wọn lati awọn iṣẹ ṣiṣe nipasẹ netlink.
  • rss - iye RSS lọwọlọwọ ti a gba lati/proc/pid/stat. O jẹ iye iranti ti ilana yii nlo.
  • ctime - apao olumulo + sys Sipiyu akoko ti a jẹ nipasẹ diduro fun awọn ọmọde ti o jade lakoko aarin akopọ yii, ti wọn lati/proc/pid/stat.

Akiyesi pe awọn ilana ọmọde ti n ṣiṣe ni igbagbogbo le dapo wiwọn yii, nitori a ṣe ijabọ akoko nikan nigbati ilana ilana ọmọde ba jade. Sibẹsibẹ, eyi wulo fun wiwọn ipa ti awọn iṣẹ cron loorekoore ati awọn sọwedowo ilera nibiti akoko Sipiyu jẹ igbagbogbo nipasẹ ọpọlọpọ awọn ilana ọmọde.

    th
  • sam - nọmba awọn ayẹwo fun ilana yii ti o wa ninu aarin akopọ. Awọn ilana ti o ṣẹṣẹ bẹrẹ tabi jade le ti han fun awọn ayẹwo diẹ ju aaye atokọ lọ.

Atẹle wọnyi n ṣe afihan awọn ilana olumulo olumulo 10 akọkọ ti o nṣiṣẹ lori eto:

$ sudo $GOBIN/cpustat -u root

Lati ṣe afihan iṣẹjade ni ipo ebute ti o wuyi, lo asia -t bi atẹle:

$ sudo $GOBIN/cpustat -u roo -t

Lati wo awọn ilana Lainos 20 ti o ga julọ ti o nṣiṣẹ lori eto:

$ sudo $GOBIN/cpustat -n 20 

O tun le kọ profaili Sipiyu si faili kan nipa lilo aṣayan -cpuprofile bi atẹle ati lẹhinna lo aṣẹ ologbo lati wo faili naa:

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

Lati ṣe afihan alaye iranlọwọ, lo asia -h bi atẹle:

$ sudo $GOBIN/cpustat -h

Wa alaye diẹ sii lati ibi ipamọ Github cpustat: https://github.com/uber-common/cpustat

Gbogbo ẹ niyẹn! Ninu nkan yii, a fihan ọ bi o ṣe le fi sori ẹrọ ati lilo cpustat, ọpa wiwọn iṣẹ ṣiṣe to wulo fun Lainos. Pin awọn ero rẹ pẹlu wa nipasẹ apakan asọye ni isalẹ.