Come posso registrare l'utilizzo della CPU per processo?


18

Ho una scatola su Linode che sta vivendo un comportamento strano. Ogni tanto CPU e I / O del disco sparano al 100% e il server non risponde e deve essere avviato. Mi piacerebbe indagare meglio su cosa sta succedendo, ma non so come trovare chi è responsabile di tutta quella CPU e I / O. Sto eseguendo Gentoo 2.6.18.

Risposte:


20

Potresti provare a fare qualcosa del genere:

while true; do ps -eo pcpu,pid,user,args | sort -k 1 -r | head -10 >> logfile.txt; printf "\n" >> logfile.txt; sleep 3; done

che ti mostrerebbe i primi dieci processi in termini di utilizzo della CPU. Puoi cambiare il numero di processi mostrati cambiando il 10 in "head -10" con un numero diverso e con quale frequenza si aggiorna cambiando il 3 in "sleep 3" o eliminando completamente la parte "sleep 3".


5
Assicurati di avere una sorta di sonno lì dentro, altrimenti ci sono buone probabilità che il tuo processo di shell sia sempre nella top 10. :)
jedberg,

Penso che sort -nrfarebbe meglio a ordinare numericamente (almeno sul mio ubuntu / debian boxen)
sehe

2
A proposito, dovresti dare a questo processo la massima priorità, perché rimanga utile durante i picchi di carico elevato (che è il punto della sua vita, dopo tutto).
spaziatore

12

Dai un'occhiata in cima che scriverà un registro binario praticamente di tutto ciò che potresti desiderare e quindi puoi usare un top come la gui per passare attraverso le fasce orarie del giorno (l'impostazione predefinita è prendere i dati ogni 5 minuti). http://www.atcomputing.nl/Tools/atop/


6

Penso che Munin sia uno degli strumenti di monitoraggio delle merci che ti aiuterà a ottenere alcune informazioni sulle attività della tua scatola. Inoltre, ci sono alcuni strumenti da riga di comando come sar , iostat, ps, top per tale uso.


5

Le altre risposte ti hanno mostrato solo come guardare cosa sta succedendo, il che non aiuta se il sistema è stato riavviato.

Se si desidera che queste informazioni vengano registrate per i posteri (o la fatturazione o qualsiasi altro uso che si possa avere), ciò che si desidera è la contabilità di processo.

Ecco un HOWTO che ho trovato, ma sarò onesto - è passato un decennio da quando ho usato la contabilità di processo.

http://tldp.org/HOWTO/Process-Accounting/


2

Un approccio più user-friendly alla soluzione di shawn per il monitoraggio quasi in tempo reale:

while true; do clear; ps -eo pcpu,pmem,pid,user,args --sort=-pcpu c|head -20; sleep 1; done

Ciò fornirà una visione statica dei 20 principali processi che verranno aggiornati ogni 1 secondo. L'opzione "c" nel comando ps stamperà il nome dell'eseguibile del processo anziché l'intero comando args. È possibile omettere questa opzione se invece sono necessarie tutte le informazioni sul comando. Aggiunta anche la colonna di utilizzo della memoria.


1

Gentoo non ha il comando "top" come wel?

machine:~/# top

dovrebbe darti le statistiche correnti di quali programmi causano il maggior carico.


Sì, lo so, ma mi piacerebbe averlo registrato in modo da poter vedere la storia in seguito. Quando la CPU si alza, la macchina non risponde, quindi non riesco ad accedere e correre topper vedere chi è il colpevole. Voglio controllare più tardi e vedere quale processo ha fatto.
Helder S Ribeiro,
Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.