Ricerca nel sito web

Cpustat: monitora l'utilizzo della CPU eseguendo processi in Linux


Cpustat è un potente programma di misurazione delle prestazioni del sistema per Linux, scritto utilizzando il linguaggio di programmazione Go. Tenta di rivelare l'utilizzo e la saturazione della CPU in modo efficace, utilizzando il metodo Utilization Saturation and Errors (USE) (una metodologia per analizzare le prestazioni di qualsiasi sistema).

Estrae campioni a frequenza più elevata di ogni processo eseguito sul sistema e quindi riassume questi campioni a una frequenza inferiore. Ad esempio, può misurare ogni processo ogni 200 ms e riassumere questi campioni ogni 5 secondi, inclusi i valori minimo/medio/massimo per determinati parametri.

Lettura consigliata: 20 strumenti da riga di comando per monitorare le prestazioni di Linux

Cpustat restituisce i dati in due modi possibili: un elenco di testo puro dell'intervallo di riepilogo e un dashboard colorato a scorrimento di ciascun campione.

Come installare CPUSTAT su Linux

Devi avere Go (GoLang) installato sul tuo sistema Linux per poter utilizzare cpustat, fai clic sul collegamento in basso per seguire i passaggi di installazione di GoLang, se non hai ha installato:

  1. Installa GoLang (Go Programming Language) in Linux

Una volta installato Go, digita il comando go get di seguito per installarlo, questo comando installerà il binario cpustat nel tuo GOBIN variabile:

go get github.com/uber-common/cpustat

Come utilizzare CPUSTAT in Linux

Una volta completato il processo di installazione, esegui cpustat come segue con i privilegi di root utilizzando il comando sudo se controlli il sistema come utente non root, altrimenti riceverai l'errore come mostrato:

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

Nota: per eseguire cpustat così come tutti gli altri programmi Go che hai installato sul tuo sistema come qualsiasi altro comando, includi GOBIN nella variabile di ambiente PATH. Apri il collegamento seguente per scoprire come impostare la variabile PATH in Linux.

  1. Scopri come impostare le variabili ` PATH in modo permanente in Linux

Ecco come funziona cpustat; viene interrogata la directory /proc per ottenere l'elenco corrente degli ID di processo per ogni intervallo e:

  • per ciascun PID, leggi /proc/pid/stat, quindi calcola la differenza rispetto al campione precedente.
  • nel caso sia un nuovo PID, leggi /proc/pid/cmdline.
  • per ciascun PID, invia un messaggio netlink per recuperare taskstats, calcolare la differenza rispetto al campione precedente.
  • recupera /proc/stat per ottenere le statistiche generali del sistema.

Ancora una volta, ogni intervallo di sonno viene regolato per tenere conto della quantità di tempo impiegato per recuperare tutte queste statistiche. Inoltre, ciascun campione registra anche il tempo impiegato per ridimensionare ciascuna misurazione in base al tempo effettivamente trascorso tra i campioni. Questo tenta di tenere conto dei ritardi nel cpustat stesso.

Se eseguito senza argomenti, cpustat mostrerà quanto segue per impostazione predefinita: intervallo di campionamento: 200 ms, intervallo di riepilogo: 2 s (10 campioni), mostrando i primi 10 processi, filtro utente: tutti, filtro pid: tutti come mostrato nello screenshot qui sotto:

sudo $GOBIN/cpustat 

Dall'output precedente, di seguito sono riportati i significati delle metriche di riepilogo a livello di sistema visualizzate prima dei campi:

  • usr: tempo di esecuzione minimo/medio/massimo in modalità utente come percentuale di una CPU.
  • sys: tempo di esecuzione minimo/medio/massimo in modalità di sistema come percentuale di una CPU.
  • nice: tempo di esecuzione a bassa priorità in modalità utente min/avg/max come percentuale di una CPU.
  • inattivo: tempo di esecuzione minimo/medio/massimo in modalità utente come percentuale di una CPU.
  • iowait: tempo di ritardo minimo/medio/massimo in attesa dell'I/O del disco.
  • prun: conteggio minimo/medio/massimo di processi in uno stato eseguibile (uguale al carico medio).
  • pblock: conteggio minimo/medio/massimo di processi bloccati sull'I/O del disco.
  • pstart: numero di processi/thread avviati in questo intervallo di riepilogo.

Sempre dall'output sopra, per un dato processo, le diverse colonne significano:

  • nome: nome del processo comune da /proc/pid/stat o /proc/pid/cmdline.
  • pid – ID del processo, chiamato anche "tgid".
  • min – campione più basso di tempo utente+sistema per il pid, misurato da /proc/pid/stat. La scala è una percentuale di una CPU.
  • max: campione più alto di tempo utente+sistema per questo pid, anch'esso misurato da /proc/pid/stat.
  • usr: tempo medio dell'utente per il pid nel periodo di riepilogo, misurato da /proc/pid/stat.
  • sys: tempo di sistema medio per il pid nel periodo di riepilogo, misurato da /proc/pid/stat.
  • nice – indica il valore "nice" corrente per il processo, misurato da /proc/pid/stat. Più alto significa “più bello”.
  • runq: tempo trascorso dal processo e da tutti i suoi thread in esecuzione ma in attesa di essere eseguito, misurato da taskstats tramite netlink. La scala è una percentuale di una CPU.
  • iow: tempo trascorso dal processo e da tutti i suoi thread bloccati dall'I/O del disco, misurato da taskstats tramite netlink. La scala è una percentuale di una CPU, media sull'intervallo di riepilogo.
  • swap: tempo trascorso dal processo e da tutti i suoi thread in attesa di essere scambiati, misurato da taskstats tramite netlink. La scala è una percentuale di una CPU, media sull'intervallo di riepilogo.
  • vcx e icx: numero totale di cambi di contesto volontari da parte del processo e di tutti i suoi thread nell'intervallo di riepilogo, misurato da taskstats tramite netlink.
  • rss – valore RSS corrente recuperato da /proc/pid/stat. È la quantità di memoria utilizzata da questo processo.
  • ctime – somma del tempo CPU utente+sys consumato dai figli in attesa che sono usciti durante questo intervallo di riepilogo, misurato da /proc/pid/stat.

Tieni presente che i processi figli a lunga esecuzione possono spesso confondere questa misurazione, poiché il tempo viene riportato solo quando il processo figlio termina. Tuttavia, ciò è utile per misurare l'impatto di frequenti lavori cron e controlli di integrità in cui il tempo della CPU viene spesso consumato da molti processi secondari.

  • thrd – numero di thread alla fine dell'intervallo di riepilogo, misurato da /proc/pid/stat.
  • sam – numero di campioni per questo processo inclusi nell'intervallo di riepilogo. I processi avviati o terminati di recente potrebbero essere stati visibili per un numero di campioni inferiore all'intervallo di riepilogo.

Il seguente comando visualizza i primi 10 processi utente root in esecuzione sul sistema:

sudo $GOBIN/cpustat -u root

Per visualizzare l'output in una modalità terminale elaborata, utilizzare il flag -t come segue:

sudo $GOBIN/cpustat -u roo -t

Per visualizzare il numero x massimo di processi (il valore predefinito è 10), puoi utilizzare il flag -n, il seguente comando mostra i primi 20 processi Linux in esecuzione sul sistema:

sudo $GOBIN/cpustat -n 20 

Puoi anche scrivere il profilo della CPU in un file utilizzando l'opzione -cpuprofile come segue e quindi utilizzare il comando cat per visualizzare il file:

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

Per visualizzare le informazioni della guida, utilizza il flag -h come segue:

sudo $GOBIN/cpustat -h

Trova ulteriori informazioni dal repository Github cpustat: https://github.com/uber-common/cpustat

È tutto! In questo articolo ti abbiamo mostrato come installare e utilizzare cpustat, un utile strumento di misurazione delle prestazioni del sistema per Linux. Condividi i tuoi pensieri con noi tramite la sezione commenti qui sotto.