Cpustat: supervisa l'ús de la CPU mitjançant l'execució de processos a Linux


Cpustat és un potent programa de mesura del rendiment del sistema per a Linux, escrit amb el llenguatge de programació Go. Intenta revelar la utilització i la saturació de la CPU d'una manera eficaç, utilitzant el mètode de saturació i errors d'utilització (USE) (una metodologia per analitzar el rendiment de qualsevol sistema).

Extreu mostres de freqüència més alta de cada procés que s'està executant al sistema i després resumeix aquestes mostres amb una freqüència més baixa. Per exemple, pot mesurar cada procés cada 200 ms i resumir aquestes mostres cada 5 segons, inclosos els valors mínims/mitjans/màxims per a determinades mètriques.

Cpustat genera dades de dues maneres possibles: una llista de text pur de l'interval de resum i un tauler de desplaçament colorit de cada mostra.

Com instal·lar Cpustat a Linux

Heu de tenir Go (GoLang) instal·lat al vostre sistema Linux per utilitzar cpustat, feu clic a l'enllaç següent per seguir els passos d'instal·lació de GoLang, és a dir, si no el teniu instal·lat:

  1. Instal·leu GoLang (llenguatge de programació Go) a Linux

Un cop hàgiu instal·lat Go, escriviu l'ordre go get a continuació per instal·lar-lo, aquesta ordre instal·larà el binari cpustat a la vostra variable GOBIN:

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

Com utilitzar Cpustat a Linux

Quan finalitzi el procés d'instal·lació, executeu cpustat de la següent manera amb privilegis root mitjançant l'ordre sudo, és a dir, si controleu el sistema com a usuari no root, en cas contrari, obtindreu l'error tal com es mostra:

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

Nota: per executar cpustat així com tots els altres programes Go que hàgiu instal·lat al vostre sistema com qualsevol altra ordre, incloeu la variable GOBIN a la vostra variable d'entorn PATH. Obriu l'enllaç següent per saber com configurar la variable PATH a Linux.

  1. Aprèn a configurar les variables PATH de manera permanent a Linux

Així és com funciona cpustat; es consulta el directori /proc per obtenir la llista actual d'ID de procés per a cada interval i:

  • Per a cada PID, llegiu /proc/pid/stat i, a continuació, calculeu la diferència amb la mostra anterior.
  • en cas que sigui un PID nou, llegiu /proc/pid/cmdline.
  • Per a cada PID, envieu un missatge d'enllaç de xarxa per obtenir les estadístiques de tasques i calcular la diferència amb la mostra anterior.
  • obté /proc/stat per obtenir les estadístiques generals del sistema.

De nou, cada interval de son s'ajusta per tenir en compte la quantitat de temps consumida per obtenir totes aquestes estadístiques. A més, cada mostra també registra el temps que va trigar a escalar cada mesura pel temps real transcorregut entre mostres. Això intenta tenir en compte els retards en el propi cpustat.

Quan s'executa sense cap argument, cpustat mostrarà el següent de manera predeterminada: interval de mostreig: 200 ms, interval de resum: 2 s (10 mostres), mostrant els 10 processos principals, filtre d'usuari: tots, filtre pid: tot tal com es mostra a la captura de pantalla següent:

$ sudo $GOBIN/cpustat 

A partir de la sortida anterior, els següents són els significats de les mètriques de resum de tot el sistema que es mostren abans dels camps:

  • usr: temps d'execució del mode d'usuari min/avg/max com a percentatge d'una CPU.
  • sys: temps d'execució del mode del sistema min/avg/max com a percentatge d'una CPU.
  • agradable: temps d'execució de baixa prioritat en mode d'usuari mínim/mitjana/màxim com a percentatge d'una CPU.
  • inactiu: temps d'execució del mode d'usuari mínim/promig/màxim com a percentatge d'una CPU.
  • iowait: temps de retard mínim/mitjana/màxim a l'espera de l'E/S del disc.
  • prun: recompte mínim/mitjana/màxim de processos en estat executable (igual que la mitjana de càrrega).
  • pblock: recompte mínim/mitjà/màxim de processos bloquejats a l'E/S del disc.
  • pstart: nombre de processos/fils iniciats en aquest interval de resum.

Encara a partir de la sortida anterior, per a un procés determinat, les diferents columnes signifiquen:

  • nom: nom de procés comú de /proc/pid/stat o /proc/pid/cmdline.
  • pid: identificador del procés, també conegut com a tgid.
  • min: mostra més baixa del temps d'usuari+sistema per al pid, mesurat des de /proc/pid/stat. L'escala és un percentatge d'una CPU.
  • max: mostra més alta del temps d'usuari+sistema per a aquest pid, mesurat també des de /proc/pid/stat.
  • usr: temps mitjà d'usuari per al pid durant el període de resum, mesurat a partir de /proc/pid/stat.
  • sys: temps mitjà del sistema per al pid durant el període de resum, mesurat a partir de /proc/pid/stat.
  • nice: indica el valor bon actual del procés, mesurat des de /proc/pid/stat. Major significa més agradable.
  • runq: temps que el procés i tots els seus fils es van passar per executar, però esperant per executar-se, mesurat a partir de les estadístiques de tasques mitjançant netlink. L'escala és un percentatge d'una CPU.
  • iow: temps que el procés i tots els seus fils estan bloquejats per E/S de disc, mesurat a partir de les estadístiques de tasques mitjançant netlink. L'escala és un percentatge d'una CPU, promediat durant l'interval de resum.
  • swap: temps que el procés i tots els seus fils van passar esperant per ser intercanviats, mesurat a partir de les estadístiques de tasques mitjançant netlink. L'escala és un percentatge d'una CPU, promediat durant l'interval de resum.
  • vcx i icx: nombre total de canvis de context voluntaris pel procés i tots els seus fils durant l'interval de resum, mesurat a partir de les estadístiques de tasques mitjançant netlink.
  • rss: valor RSS actual obtingut de /proc/pid/stat. És la quantitat de memòria que fa servir aquest procés.
  • ctime: suma del temps de CPU d'usuari+sys consumit pels fills esperats que van sortir durant aquest interval de resum, mesurat des de /proc/pid/stat.

Tingueu en compte que els processos secundaris de llarga durada sovint poden confondre aquesta mesura, perquè el temps només s'informa quan el procés secundari surt. Tanmateix, això és útil per mesurar l'impacte dels treballs cron freqüents i les comprovacions de salut on molts processos secundaris consumeixen sovint el temps de la CPU.

  • thrd: nombre de fils al final de l'interval de resum, mesurat des de /proc/pid/stat.
  • sam: nombre de mostres d'aquest procés incloses a l'interval de resum. És possible que els processos que s'han iniciat o que han sortit recentment hagin estat visibles per a menys mostres que l'interval de resum.

L'ordre següent mostra els 10 principals processos d'usuari root que s'executen al sistema:

$ sudo $GOBIN/cpustat -u root

Per mostrar la sortida en un mode de terminal elegant, utilitzeu el senyalador -t de la següent manera:

$ sudo $GOBIN/cpustat -u roo -t

Per veure els 20 principals processos de Linux que s'executen al sistema:

$ sudo $GOBIN/cpustat -n 20 

També podeu escriure el perfil de la CPU en un fitxer mitjançant l'opció -cpuprofile de la següent manera i després utilitzar l'ordre cat per veure el fitxer:

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

Per mostrar informació d'ajuda, utilitzeu el senyalador -h de la següent manera:

$ sudo $GOBIN/cpustat -h

Trobeu informació addicional al dipòsit de Github de cpustat: https://github.com/uber-common/cpustat

Això és tot! En aquest article, us vam mostrar com instal·lar i utilitzar cpustat, una eina útil per mesurar el rendiment del sistema per a Linux. Comparteix els teus pensaments amb nosaltres a través de la secció de comentaris a continuació.