¿Cómo puede un proceso en estado de "suspensión interrumpible" usar 100% CPU?

5

Según esta referencia , un proceso tiene los siguientes estados

R  running or runnable (on run queue)
D  uninterruptible sleep (usually IO)
S  interruptible sleep (waiting for an event to complete)
Z  defunct/zombie, terminated but not reaped by its parent
T  stopped, either by a job control signal or because it is being traced

En el estado de suspensión, no se espera que el proceso consuma tiempo de CPU, sin embargo, en el resultado a continuación, veo que un proceso está utilizando el 100% de la CPU y, al mismo tiempo, está en estado S.

  PID USER      PR  NI  VIRT  RES  SHR S %CPU %MEM    TIME+  COMMAND
32643 root      20   0 13736 7748  472 R   98  0.0   2:59.30 bzip2
29504 satam     20   0 1063m 779m 3824 S  100  2.4   1242:54 stencil
31923 root      20   0 15092 1224  848 D   14  0.0   1:39.96 find

¿Cómo es eso posible y qué significa eso?

mahmood
fuente

Respuestas:

0

"suspensión ininterrumpida" significa que el proceso está esperando E / S (operaciones de disco, por ejemplo). Pero dado que la CPU está ejecutando el proceso, a pesar de que no está funcionando, la CPU todavía está "atascada" esperando a que complete el io, por lo que puede continuar con otra cosa: programar otra tarea. Por lo tanto, esto consume el 100% de los ciclos de la CPU cuando el proceso está en modo D.

Por lo tanto, está en modo de suspensión, ya que no está haciendo ningún trabajo de CPU, pero es ininterrumpible, lo que significa que la CPU no puede hacer nada más.

En un sistema multinúcleo, los otros núcleos están disponibles para otras tareas.

Pablo
fuente
Pasado por alto por los que tanto! {/ Max Smart Voice} El proceso 'S' (plantilla), no la 'D' (buscar). Pero usted está en lo correcto.
lornix