Hay un par de formas posibles de hacer esto. Tenga en cuenta que es completamente posible sus muchos procesos en un escenario desbocado que causa 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 a intervalos de diez minutos. Sugeriría que este sea su primer puerto de escala, ya que produce los datos más valiosos / confiables para trabajar.
Hay un problema con esto, principalmente si la caja entra en un bucle de CPU fuera de control y produce una gran carga: 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, esto necesitará tiempo para ejecutarse.
Habiendo sido ejecutado, por ejemplo, durante 24 horas, puede ejecutar dicho comando (que producirá una salida como esta)
# 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 como tales:
- Numero de llamadas
- Porcentaje de llamadas
- Cantidad de tiempo real dedicado a todos los procesos de este tipo.
- Porcentaje.
- Tiempo de CPU del usuario
- Porcentaje
- Tiempo de CPU del sistema.
- Promedio de llamadas IO.
- Porcentaje
- Nombre del comando
Lo que buscará 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 se contabiliza correctamente cuando está activada cuando se generan procesos, por lo que probablemente sea mejor reiniciar el sistema después de habilitarlo para garantizar que se contabilicen todos los servicios.
Esto, de ninguna manera te da una idea definitiva de qué proceso podría ser la causa de este problema, pero podría darte 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 siempre debe iniciar sesión, ya que es una característica del núcleo y, a diferencia de pidstat, siempre producirá resultados incluso durante una carga pesada.
La última opción disponible también utiliza la contabilidad de procesos para que pueda 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 puede darle algunas pistas sobre lo que podría estar causando el problema.