根据此参考,进程具有以下状态
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
Run Code Online (Sandbox Code Playgroud)
在睡眠状态下,预计进程不会消耗 CPU 时间,但是在下面的输出中,我看到一个进程正在使用 100% 的 CPU,同时它处于 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
Run Code Online (Sandbox Code Playgroud)
这怎么可能,这意味着什么?
“不间断睡眠”意味着进程正在等待 I/O(例如磁盘操作)。但是考虑到 CPU 正在运行该进程,即使它没有做任何工作,CPU 仍然“卡住”等待它完成 io,因此它可以继续做其他事情 - 安排另一个任务。因此,当进程处于 D 模式时,这会消耗 100% 的 CPU 周期。
因此它处于睡眠模式,即它不执行任何 CPU 工作,但不间断,这意味着 CPU 不能执行任何其他操作。
在多核系统中,其他核心可用于其他任务。
| 归档时间: |
|
| 查看次数: |
4920 次 |
| 最近记录: |