Come si registra il carico della CPU?

21

Come registrare il carico della CPU in un file per indagare su un problema?

    
posta tommyk 17.01.2011 - 22:05

2 risposte

31

Funziona molto bene:

 while true; do uptime >> uptime.log; sleep 1; done
  • Questo registrerà il carico della CPU ogni secondo e lo aggiungerà a un file uptime.log .

    Puoi quindi importare questo file in Gnumeric o nel foglio di calcolo di OpenOffice per creare un grafico piacevole (seleziona 'separati da spazi' durante l'importazione).

Come ha notato Scaine, questo non sarà sufficiente per diagnosticare il problema. Quindi, in aggiunta, esegui questo (o usa la sua risposta per questa parte):

while true; do (echo "%CPU %MEM ARGS $(date)" && ps -e -o pcpu,pmem,args --sort=pcpu | cut -d" " -f1-5 | tail) >> ps.log; sleep 5; done
  • In questo modo verranno aggiunti i 10 processi più affamati della CPU a un file ps.log ogni cinque secondi.

    Nota che questo non è il pieno carico di informazioni che top ti darebbe. Questi sono solo i primi 10, e solo il loro uso della CPU, l'uso della memoria e il primo argomento (vale a dire il loro comando senza ulteriori argomenti, come in /usr/bin/firefox )

Dopo aver usato un foglio di calcolo per creare un grafico per vedere quando il carico della CPU è passato attraverso il tetto, puoi cercare questo file il più vicino possibile per vedere quale processo l'ha causato.

Ecco come appariranno questi file:

uptime.log

~$ cat uptime.log 
 22:57:42 up 1 day,  4:38,  4 users,  load average: 1.00, 1.26, 1.21
 22:57:43 up 1 day,  4:38,  4 users,  load average: 0.92, 1.24, 1.21
 22:57:44 up 1 day,  4:38,  4 users,  load average: 0.92, 1.24, 1.21
 22:57:45 up 1 day,  4:38,  4 users,  load average: 0.92, 1.24, 1.21
 ...

ps.log

%CPU %MEM ARGS Mo 17. Jan 23:09:47 CET 2011
 0.7  0.9 /usr/bin/compiz
 0.8  0.5 /usr/lib/gnome-panel/clock-applet
 1.1  1.7 /opt/google/chrome/chrome
 1.2  0.3 /usr/bin/pulseaudio
 1.8  4.0 /opt/google/chrome/chrome
 2.6  1.5 /opt/google/chrome/chrome
 2.6  3.2 /usr/bin/google-chrome
 3.6  2.6 /opt/google/chrome/chrome
 4.9  1.5 /usr/bin/X
 5.7  1.6 /opt/google/chrome/chrome
%CPU %MEM ARGS Mo 17. Jan 23:09:48 CET 2011
 0.7  0.9 /usr/bin/compiz
 0.8  0.5 /usr/lib/gnome-panel/clock-applet
 1.0  1.7 /opt/google/chrome/chrome
 1.2  0.3 /usr/bin/pulseaudio
 1.8  4.0 /opt/google/chrome/chrome
 2.6  1.5 /opt/google/chrome/chrome
 2.6  3.2 /usr/bin/google-chrome
 3.6  2.6 /opt/google/chrome/chrome
 4.9  1.5 /usr/bin/X
 5.7  1.6 /opt/google/chrome/chrome
 ...
    
risposta data Stefano Palazzo 17.01.2011 - 23:15
9

Puoi eseguire il comando top in modalità batch utilizzando l'opzione -b , quindi esegui il dump su un file.

All'avvio del PC, apri un terminale, avvia

top -b > ~/cpu.txt

Quindi, quando il PC si blocca, è sufficiente aprire il file di testo (probabilmente enorme) e controllare l'ultima voce per alcuni dettagli su ciò che era in esecuzione poco prima del crash. Nel fatto che il file sarà così stupidamente grande che è meglio eseguire un tail -250 ~/cpu.txt invece.

Controlla anche il tuo /var/log/kern.log nel caso in cui il tuo problema sia legato all'hardware (improbabile che ciò avvenga solo dopo un aggiornamento, ma vale comunque la pena controllare).

    
risposta data Scaine 17.01.2011 - 22:12

Leggi altre domande sui tag