Investigaré por qué recibimos alertas de intercambio críticas y encontraré algo como:
PID USER PR NI VIRT RES SHR S %CPU %MEM TIME+ SWAP COMMAND
14683 user1 30 10 16.0g 772m 744 S 0.3 0.3 277:24.87 6.5g MATLAB
14576 user1 30 10 8125m 1.1g 736 S 0.3 0.4 261:16.73 4.1g MATLAB
donde la columna TIME + está congelada para esos procesos.
Mi pregunta es, en lo anterior, ¿qué implica esto?
Según tengo entendido, el tiempo detenido significa que es un proceso inactivo / no está siendo procesado por la CPU. Sin embargo, el ejemplo anterior muestra un 0,3% de uso de la CPU, por lo que, a pesar del hecho de que es muy pequeño, ¿no debería continuar incrementándose la columna de tiempo?
¿Están estos procesos "terminados"? En cuyo caso, ¿cómo se limpian? ¿El usuario que los inició necesita reconocerlos o algo para liberar esos recursos?
Respuestas:
Si ejecuta un trabajo falso como
sleep 120
y luego lo mirahtop
, notará que su estado esS
también conocido como "SLEEP" y el procesoTIME
permanece en 0: 00.00 durante todo el tiempo.Eso es porque ese proceso está consumiendo 0 tiempo de CPU, que es la intención de la
TIME
columna. Realiza un seguimiento de la cantidad de tiempo de CPU que ha utilizado un proceso determinado.Este recuento puede ser confuso a veces si un proceso puede ejecutarse en múltiples núcleos de CPU, ya que aparentemente puede consumir más tiempo del disponible. Todo lo que está sucediendo allí es que si tiene X número de núcleos, entonces su tiempo puede aparecer como X * TIME.
fuente
La razón por la que puede tener una disparidad como esa es porque la columna TIME + no tiene en cuenta el tiempo de CPU utilizado por los hijos engendrados muertos del proceso enumerado. Entonces, me imagino que las líneas que muestra indican una aplicación que es (posiblemente, rápidamente) engendrando niños que mueren casi de inmediato.
So, the CPU usage is due to spawned children which do not count in the TIME+ column.
Puede cambiar la parte superior para hacer el tiempo acumulado a través del interruptor 'S'.Pero creo que está buscando los indicadores incorrectos para lo que está buscando investigar.
strace -p <pid>
es tu amigo aquí, y te permitirá echar un vistazo al proceso en ejecución y lo que está haciendo exactamente.Strace toma una miríada de opciones. Algunas opciones notables incluyen -f, -ff, -i, v, etc. Strace es una herramienta muy útil, por lo que es mejor hacer una
man strace
y buscar las opciones que le brinda para solucionar problemas como este.fuente