¿Cómo registrar la carga de la CPU en un archivo para investigar un problema?
fuente
¿Cómo registrar la carga de la CPU en un archivo para investigar un problema?
Esto funciona muy bien:
while true; do uptime >> uptime.log; sleep 1; done
Esto registrará su carga de CPU cada segundo y la agregará a un archivo uptime.log
.
Luego puede importar este archivo en Gnumeric o en la hoja de cálculo de OpenOffice para crear un gráfico agradable (seleccione 'separado por espacios' en la importación).
Como Scaine notó, esto no será suficiente para diagnosticar el problema. Entonces, además, 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 hambrientos de CPU a un archivo ps.log
cada cinco segundos.
Tenga en cuenta que esta no es la carga completa de información que top
le brindaría. Este es solo 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 usar una hoja de cálculo para crear un gráfico para ver cuándo la carga de su CPU se disparó, puede buscar en este archivo la hora más cercana para ver qué proceso lo ha causado.
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
...
ps
tiene sentido, intente ejecutarlo como root.Puede ejecutar el
top
comando en modo por lotes utilizando el-b
opción, luego volcarlo en un archivo.Al iniciar su PC, abra una terminal, ejecute
top -b > ~/cpu.txt
Luego, cuando su PC se congele, simplemente abra el archivo de texto (probablemente enorme) y verifique la última entrada para obtener algunos detalles sobre lo que se estaba ejecutando justo antes del bloqueo. De hecho, el archivo será tan estúpidamente grande que será mejor que ejecutes un
tail -250 ~/cpu.txt
.También revise su /var/log/kern.log en caso de que su problema esté relacionado con el hardware (es poco probable si esto solo ocurre después de una actualización, pero vale la pena verificarlo de todos modos).
fuente
Encontré una gran respuesta de Christopher a esta pregunta en Unix y Linux que usa
top
:Esto le dará 1 iteración de
top
luego detener y luego empujarlo a un archivo.fuente
Para aquellos que necesitan ejecutar este comando después de que finalice su sesión de masilla (cliente SSH). puedes usar el comando
screen
(o instalarlo usandoapt-get
)fuente