W jaki sposób proces w stanie „przerywanego uśpienia” może wykorzystywać 100% procesora?

5

Zgodnie z tym odniesieniem proces ma następujące stany

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

W stanie uśpienia nie oczekuje się, że proces zużywa czas procesora, jednak na poniższym wyjściu widzę, że proces zużywa 100% procesora, a jednocześnie jest w stanie 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

Jak to możliwe i co to oznacza?

mahmood
źródło

Odpowiedzi:

0

„nieprzerwany sen” oznacza, że ​​proces oczekuje na operacje we / wy (na przykład operacje na dysku). Ale biorąc pod uwagę, że procesor uruchamia proces, nawet jeśli nie działa, procesor nadal „utknął”, czekając na zakończenie IO, aby mógł zająć się czymś innym - zaplanować inne zadanie. To zużywa 100% cykli procesora, gdy proces jest w trybie D.

Więc jest w trybie uśpienia, ponieważ nie wykonuje żadnej pracy procesora, ale jest nieprzerwany, co oznacza, że ​​procesor nie może zrobić nic innego.

W systemie wielordzeniowym pozostałe rdzenie są dostępne do innych zadań.

Paweł
źródło
Ominęło mnie to tak bardzo! {/ Max Smart Voice} Proces „S” (wzornik), a nie „D” (znajdź). Ale masz rację.
lornix,