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
toppuede que no los resuma. Puedes ver el número de subprocesos por esto:ps -eo pid,nlwp,%cpu,user,argsEn
toppuede 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
waitvalor entop. No le dice qué procesos lo causan y en qué medida, pero si el valor es bajo, no puede explicar el efecto.