“top” 中的休眠进程如何占用一定百分比的 CPU?

“top” 中的休眠进程如何占用一定百分比的 CPU?

当我们运行 top 时,我们偶尔会看到一个正在休眠的“S”进程,它正在使用 %CPU;我预计所有休眠进程的 CPU 使用率为 0%,因为它们不活跃。我预计只有正在运行的“R”进程才会在 top 中积极消耗 %CPU。例如,查看这些休眠的 Oracle 进程

  PID USER      PR  NI  VIRT  RES  SHR S %CPU %MEM     TIME+ COMMAND                               
11975 oracle    15   0 16.8g 2.6g 2.6g S  8.9  5.5  56:28.38 oracle                       
 5837 oracle    15   0 16.8g 1.8g 1.7g S  6.6  3.7  10:04.11 oracle                       
12248 oracle    15   0 16.8g 1.6g 1.6g S  5.9  3.4  12:02.33 oracle                       
21253 oracle    15   0 16.8g 1.6g 1.6g S  4.3  3.4  12:33.83 oracle  

我的想法是,对于 Oracle 来说,CPU 活动由许多低于 1 秒时间粒度的短脉冲组成。这意味着使用计数器会更新,但 Top 不会看到“R”状态,因为它太短了。

有什么想法吗?

答案1

这几乎肯定是正在发生的事情。在这种情况下,对于 Oracle,CPU 使用率由许多低于 1 秒时间粒度的短突发组成。这意味着使用计数器会更新,但 Top 不会看到“R”状态,因为它太短了。

相关内容