Como registrar a carga da CPU?

20

Como registrar a carga da CPU em um arquivo para investigar um problema?

    
por tommyk 17.01.2011 / 22:05

2 respostas

30

Isso funciona muito bem:

 while true; do uptime >> uptime.log; sleep 1; done
  • Isso irá registrar sua carga de CPU a cada segundo e anexá-la a um arquivo uptime.log .

    Você pode então importar este arquivo para o Gnumeric ou a planilha do OpenOffice para criar um bom gráfico (selecione 'separados por espaços' na importação).

Como Scaine notou, isso não será suficiente para diagnosticar o problema. Então, adicionalmente, execute isto (ou use sua resposta para esta 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
  • Isso anexará os 10 principais processos que mais demandam CPU a um arquivo ps.log a cada cinco segundos.

    Observe que essa não é a carga completa de informações que top forneceria a você. Este é apenas o top 10, e apenas o uso da CPU, o uso da memória e o primeiro argumento (ou seja, o comando deles sem mais argumentos, como em /usr/bin/firefox )

Depois de usar uma planilha para criar um gráfico para ver quando a carga da sua CPU passou pelo telhado, você pode pesquisar esse arquivo pela hora mais próxima para ver o processo que o causou.

Isso é o que esses arquivos terão:

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
 ...
    
por Stefano Palazzo 17.01.2011 / 23:15
9

Você pode executar o comando top no modo em lote usando a opção -b e, em seguida, despejar isso em um arquivo.

No arranque do seu PC, abra um terminal, execute

top -b > ~/cpu.txt

Então, quando o seu PC congela, basta abrir o arquivo de texto (provavelmente enorme) e verificar a última entrada para alguns detalhes sobre o que estava sendo executado pouco antes do acidente. No fato de o arquivo ser tão estupidamente grande, é melhor você executar um tail -250 ~/cpu.txt .

Verifique também o seu /var/log/kern.log caso seu problema esteja relacionado ao hardware (isso é improvável se isso ocorrer após uma atualização, mas vale a pena verificar).

    
por Scaine 17.01.2011 / 22:12