Pasé por un problema en el que solo podía adivinar qué proceso estaba consumiendo la CPU.
Mi uso de la CPU fue de alrededor del 80 % para todos los núcleos en psensor.
Probé htop
, top
y ps -A -o pcpu,pid,cmd --sort +pcpu
(el último incluso probé con sudo sin éxito).
Todos estos mostraron el pid culpable (que yo conocía) usando solo alrededor del 7%...
Cuando hago SIGKILL en ese pid, todo vuelve a la normalidad.
Para probar, hice un bucle infinito en la terminal while true;do echo -n;done
pero eso lo pude ver claramente en htop; así que supongo que lo que estaba causando problemas no era similar a eso...
Así que me pregunto si hay otras formas en las que podría haber encontrado al culpable sin tener que adivinar.
Pensándolo bien, creo que me gustaría saber qué cálculos psensor
y los usos del "subprograma indicador de carga del sistema" que pudo mostrar ese valor pero los demás no pudieron?
PD:enlace sobre el tiempo de espera,
enlace sobre el promedio de carga
Respuesta aceptada:
No estoy lo suficientemente familiarizado con los detalles para dar sugerencias precisas, pero supongo que hay dos fuentes de diferencias entre la carga real causada y el uso de CPU que se muestra:
-
El proceso puede constar de varios subprocesos y
top
puede que no los resuma. Puedes ver el número de subprocesos por esto:ps -eo pid,nlwp,%cpu,user,args
En
top
puede cambiar el manejo del hilo conH
. El uso de la CPU de cada subproceso suele ser bastante bajo. -
El proceso puede causar una gran cantidad de E/S. El tiempo de espera de E/S es parte de la carga general de la CPU, pero puede no ser parte del valor de uso de la CPU de un proceso. Así que revisa el
wait
valor entop
. No le dice qué procesos lo causan y en qué medida, pero si el valor es bajo, no puede explicar el efecto.