¿Cómo registrar la carga de la CPU?

22

¿Cómo registrar la carga de la CPU en un archivo para investigar un problema?

    
pregunta tommyk 17.01.2011 - 21:05

2 respuestas

32

Esto funciona muy bien:

 while true; do uptime >> uptime.log; sleep 1; done
  • Esto registrará la carga de su CPU cada segundo y la agregará a un archivo uptime.log .

    Luego puede importar este archivo a Gnumeric o a la hoja de cálculo de OpenOffice para crear un buen gráfico (seleccione 'separado por espacios' en la importación).

Como Scaine notó, esto no será suficiente para diagnosticar el problema. Entonces, adicionalmente, ejecute esto (o use su respuesta 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
  • Esto agregará los 10 procesos más agotadoras de la CPU a un archivo ps.log cada cinco segundos.

    Tenga en cuenta que no se trata de la carga completa de información top que le daría. Esto es sólo el top 10, y solo su uso de CPU, uso de memoria y el primer argumento (es decir, su comando sin más argumentos, como en /usr/bin/firefox )

Después de haber usado una hoja de cálculo para crear un gráfico para ver cuándo la carga de su CPU llegó al techo, puede buscar el archivo más cercano para ver qué proceso lo causó.

Así se verán esos archivos:

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
 ...
    
respondido por el Stefano Palazzo 17.01.2011 - 22:15
9

Puede ejecutar el comando top en el modo por lotes utilizando la opción -b y luego volcarlo en un archivo.

Al iniciar tu PC, abre una terminal, ejecuta

top -b > ~/cpu.txt

Luego, cuando su PC se congele, simplemente abra el archivo de texto (probablemente muy grande) y consulte la última entrada para obtener detalles sobre lo que se estaba ejecutando justo antes del bloqueo. De hecho, el archivo será tan estúpidamente grande que es mejor ejecutar un tail -250 ~/cpu.txt en su lugar.

También verifique su /var/log/kern.log en caso de que su problema esté relacionado con el hardware (poco probable si esto solo ocurre después de una actualización, pero vale la pena verificarlo).

    
respondido por el Scaine 17.01.2011 - 21:12

Lea otras preguntas en las etiquetas