¿Cómo registrar la carga de la CPU?

Respuestas:

42

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 tople 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
 ...
Stefano Palazzo
fuente
3
¿Esto realmente imprime el uso correcto de la CPU?
Probé
¿Cómo puedo hacer que este comando siga ejecutándose en mi VPS incluso después de cerrar la conexión Putty?
Lucas Bustamante
1
Si el uso de CPU informado por no pstiene sentido, intente ejecutarlo como root.
Stefano Palazzo
¿Cómo puedo hacer que este comando siga ejecutándose en mi VPS incluso después de cerrar la conexión Putty?
Mostafa
10

Puede ejecutar el topcomando 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 untail -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).

Scaine
fuente
0

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 usando apt-get)

Mostafa
fuente