Saltar al contenido

Uso de la CPU de Linux e historial de ejecución de procesos

Hacemos una revisión completa cada una de las secciones en nuestra página web con la meta de enseñarte siempre información más veraz y certera.

Solución:

Solución 1:

Hay un par de maneras posibles de hacer esto. Tenga en cuenta que es completamente posible que muchos procesos en un escenario fuera de control causen esto, no solo uno.

La primera forma es configurar pidstat para que se ejecute en segundo plano y produzca datos.

pidstat -u 600 >/var/log/pidstats.log & disown $!

Esto le dará una perspectiva bastante detallada del funcionamiento del sistema en intervalos de diez minutos. Sugeriría que este sea su primer puerto de escala, ya que produce los datos más valiosos y confiables para trabajar.

Hay un problema con esto, principalmente si la caja entra en un bucle de CPU desbocado y produce una carga enorme: no está garantizado que su proceso real se ejecute de manera oportuna durante la carga (si es que lo hace), por lo que podría perder la salida !

La segunda forma de buscar esto es habilitar la contabilidad de procesos. Posiblemente más de una opción a largo plazo.

accton on

Esto habilitará la contabilidad de procesos (si aún no se ha agregado). Si no se estaba ejecutando antes, necesitará tiempo para ejecutarse.

Habiendo sido ejecutado, digamos 24 horas, puede ejecutar dicho comando (que producirá un resultado como este)

# sa --percentages --separate-times
     108  100.00%       7.84re  100.00%       0.00u  100.00%       0.00s  100.00%         0avio     19803k
       2    1.85%       0.00re    0.05%       0.00u   75.00%       0.00s    0.00%         0avio     29328k   troff
       2    1.85%       0.37re    4.73%       0.00u   25.00%       0.00s   44.44%         0avio     29632k   man
       7    6.48%       0.00re    0.01%       0.00u    0.00%       0.00s   44.44%         0avio     28400k   ps
       4    3.70%       0.00re    0.02%       0.00u    0.00%       0.00s   11.11%         0avio      9753k   ***other*
      26   24.07%       0.08re    1.01%       0.00u    0.00%       0.00s    0.00%         0avio      1130k   sa
      14   12.96%       0.00re    0.01%       0.00u    0.00%       0.00s    0.00%         0avio     28544k   ksmtuned*
      14   12.96%       0.00re    0.01%       0.00u    0.00%       0.00s    0.00%         0avio     28096k   awk
      14   12.96%       0.00re    0.01%       0.00u    0.00%       0.00s    0.00%         0avio     29623k   man*
       7    6.48%       7.00re   89.26%       0.00u    0.00%       0.00s    

Las columnas están ordenadas así:

  1. Número de llamadas
  2. Porcentaje de llamadas
  3. Cantidad de tiempo real dedicado a todos los procesos de este tipo.
  4. Porcentaje.
  5. Tiempo de CPU del usuario
  6. Porcentaje
  7. Tiempo de CPU del sistema.
  8. Promedio de llamadas IO.
  9. Porcentaje
  10. Nombre del comando

Lo que estará buscando son los tipos de procesos que generan la mayor cantidad de tiempo de CPU del usuario/sistema.

Esto desglosa los datos como la cantidad total de tiempo de CPU (la fila superior) y luego cómo se ha dividido ese tiempo de CPU. La contabilidad de procesos solo cuenta correctamente cuando está activada cuando se generan los procesos, por lo que probablemente sea mejor reiniciar el sistema después de habilitarlo para asegurarse de que se tengan en cuenta todos los servicios.

Esto, de ninguna manera le da una idea definitiva de qué proceso podría ser la causa de este problema, pero podría darle una buena sensación. Como podría ser una instantánea de 24 horas, existe la posibilidad de resultados sesgados, así que tenlo en cuenta. También debe iniciar sesión siempre, ya que es una característica del kernel y, a diferencia de pidstat, siempre producirá resultados incluso durante una carga pesada.

La última opción disponible también usa la contabilidad de procesos, por lo que puede activarla como se indicó anteriormente, pero luego use el programa “lastcomm” para producir algunas estadísticas de los procesos ejecutados en el momento del problema junto con las estadísticas de la CPU para cada proceso.

lastcomm | grep "May  8 22:[01234]"
kworker/1:0       F    root     __         0.00 secs Tue May  8 22:20
sleep                  root     __         0.00 secs Tue May  8 22:49
sa                     root     pts/0      0.00 secs Tue May  8 22:49
sa                     root     pts/0      0.00 secs Tue May  8 22:49
sa                   X root     pts/0      0.00 secs Tue May  8 22:49
ksmtuned          F    root     __         0.00 secs Tue May  8 22:49
awk                    root     __         0.00 secs Tue May  8 22:49

Esto también podría darle algunas pistas sobre lo que podría estar causando el problema.

Solución 2:

Atop es un demonio particularmente útil para buscar desgloses a nivel de proceso y, de forma predeterminada, archiva estos datos durante 28 días. Además de presentar una impresionante interfaz de monitoreo en tiempo real, puede especificar esos archivos de registro para abrirlos y recorrerlos.

El artículo da una idea de las capacidades, y puede encontrar más en la página de manual.

Es realmente una maravillosa pieza de software.


Solución 3:

Programas como psmon y monit pueden ser útiles para usted. Esos pueden monitorear los procesos que se ejecutan en su sistema y si se excede algún umbral (uso de CPU, uso de memoria…), puede configurarlos para que le envíen un informe por correo electrónico sobre lo que está sucediendo.

También es posible reiniciar automáticamente los procesos que se comportan mal.

Aquí tienes las comentarios y puntuaciones

Agradecemos que quieras añadir valor a nuestra información añadiendo tu experiencia en las observaciones.

¡Haz clic para puntuar esta entrada!
(Votos: 0 Promedio: 0)



Utiliza Nuestro Buscador

Deja una respuesta

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *