Как процесс в состоянии "прерываемого сна" может использовать 100% ЦП?

по этому reference процесс имеет следующие состояния

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

в состоянии сна, не ожидается, что процесс потребляет время процессора, однако в выводе ниже, я вижу, что процесс использует 100% процессора и в то же время, он находится в состоянии 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

Как это возможно и что это значит?

2
задан a CVn
07.03.2023 10:53 Количество просмотров материала 3210
Распечатать страницу

1 ответ

"бесперебойный спящий режим" означает, что процесс ожидает ввода-вывода (например, дисковые операции). Но, учитывая, что процессор запускает процесс, даже если он не работает, процессор все еще "застревает", ожидая его завершения ввода - вывода, поэтому он может продолжить что-то еще-запланировать другую задачу. Так это потребляет 100% циклов процессора, когда процесс находится в режиме D.

Так что он находится в спящем режиме, в чем то он не делает никакой работы процессора, но является бесперебойным, который означает, что процессор не может делать ничего другого.

в многоядерной системе другие ядра доступны для других задач.

0
отвечен Paul 2023-03-08 18:41

Постоянная ссылка на данную страницу: [ Скопировать ссылку | Сгенерировать QR-код ]

Ваш ответ

Опубликуйте как Гость или авторизуйтесь

Имя
Вверх