Como registrar a carga da CPU?

30

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

tommyk
fonte

Respostas:

42

Isso funciona muito bem:

 while true; do uptime >> uptime.log; sleep 1; done
  • Isso registrará o carregamento da CPU a cada segundo e o anexará a um arquivo uptime.log.

    Em seguida, você pode importar esse arquivo para a planilha do Gnumeric ou do OpenOffice para criar um bom gráfico (selecione 'separado por espaços' na importação).

Como Scaine notou, isso não será suficiente para diagnosticar o problema. Além disso, execute isso (ou use a resposta dele 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 exigem mais CPU a um arquivo a ps.logcada cinco segundos.

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

Depois de usar uma planilha para criar um gráfico para ver quando a carga da CPU passou pelo teto, você poderá pesquisar nesse arquivo pelo tempo mais próximo para ver qual processo o causou.

É assim que esses arquivos serã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
 ...
Stefano Palazzo
fonte
3
Isso realmente imprime o uso correto da CPU? Eu tentei isso em centos e somente o uso de memória foi correta :(
Menelau Bakopoulos
Como posso fazer esse comando continuar em execução no meu VPS, mesmo depois de fechar a conexão Putty?
Lucas Bustamante
11
Se o uso da CPU relatado por psfor absurdo, tente executá-lo como root.
Stefano Palazzo
Como posso fazer esse comando continuar em execução no meu VPS, mesmo depois de fechar a conexão Putty ????
Mostafa
10

Você pode executar o topcomando no modo em lote usando a -bopção e despejá-lo em um arquivo.

Na inicialização do seu PC, abra um terminal, execute

top -b > ~/cpu.txt

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

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

Scaine
fonte
0

Para aqueles que precisam executar esse comando após o término da sessão putty (cliente SSH). você pode usar o comando screen(ou instalá-lo usando apt-get)

Mostafa
fonte