在“顶部”的睡眠过程如何使用一定比例的CPU?

当我们运行顶部时,偶尔会看到一个正在使用%CPU的睡眠“S”进程; 我期望所有睡眠进程使用0%的CPU,因为它们不活跃。 我只希望只运行“R”,进程将主动占用CPU中最高的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活动由Top的1秒时间粒度以下的许多短的突发组成。 这意味着它的使用计数器得到更新,但顶部看不到“R”状态,因为它太短。

有什么想法吗?

这几乎可以肯定发生了什么事情。 在这种情况下,对于Oracle,CPU的使用率包含Top以下1s时间粒度以下的许多短突发。 这意味着它的使用计数器得到更新,但顶部看不到“R”状态,因为它太短。