Como um processo em estado de “suspensão ininterrupta” usa 100% da CPU?

5

De acordo com esta referência , um processo tem os seguintes 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

No estado de suspensão, não é esperado que o processo consuma tempo de CPU, no entanto, na saída abaixo, vejo que um processo está usando 100% de cpu e, ao mesmo tempo, está no 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

Como isso é possível e o que isso significa?

    
por mahmood 03.08.2014 / 15:47

1 resposta

0

"ininterrupto sleep" significa que o processo está aguardando a E / S (operações de disco, por exemplo). Mas, dado que a CPU está executando o processo, mesmo que não esteja funcionando, a CPU ainda está "presa" esperando que ela complete o io, para que ele possa continuar com outra coisa - para agendar outra tarefa. Isso consome 100% dos ciclos da CPU quando o processo está no modo D.

Por isso, é no modo de suspensão, que não está fazendo nenhum trabalho de CPU, mas é ininterrupto, o que significa que a CPU não pode fazer mais nada.

Em um sistema multi-core, os outros núcleos estão disponíveis para outras tarefas.

    
por 04.08.2014 / 04:46

Tags