¿Qué significa exactamente cuando un proceso "Tiempo" se ha detenido en la parte superior?


11

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?


1
A 0.3%, eso es 1 centi-segundo cada 3/4 segundos. ¿Has esperado lo suficiente?
Stéphane Chazelas

1
Revelación alucinante: ¿el aumento de tiempo se calcula como un porcentaje del uso de la CPU? Guau. Entonces, si fuera CPU 100%, ¿eso sería igual en tiempo real?
CptSupermrkt

55
TIME es el tiempo acumulado que la CPU (cualquier CPU) pasó ejecutando cualquier subproceso en el proceso desde que se inició. Por lo tanto, incluso puede ir más rápido que en tiempo real si tiene varios núcleos de CPU y el proceso es multiproceso.
Stéphane Chazelas

Respuestas:


10

Si ejecuta un trabajo falso como sleep 120y luego lo mira htop, notará que su estado es Stambién conocido como "SLEEP" y el proceso TIMEpermanece 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 TIMEcolumna. Realiza un seguimiento de la cantidad de tiempo de CPU que ha utilizado un proceso determinado.

              ss # 1

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.


4

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 stracey buscar las opciones que le brinda para solucionar problemas como este.

Al usar nuestro sitio, usted reconoce que ha leído y comprende nuestra Política de Cookies y Política de Privacidad.
Licensed under cc by-sa 3.0 with attribution required.