当我们运行 top 时,我们偶尔会看到一个正在使用 %CPU 的休眠进程“S”;我希望所有休眠进程都使用 0% CPU,因为它们不活动。我希望只有运行的“R”进程会在顶部主动消耗 %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
我的想法是,CPU 活动(在本例中为 Oracle)由许多低于 Top 1s 时间粒度的短脉冲组成。这意味着使用计数器得到更新,但 Top 看不到“R”状态,因为它太短了。
有什么想法吗?
几乎可以肯定这就是正在发生的事情。在这种情况下,对于 Oracle,CPU 使用率由 Top 的 1s 时间粒度以下的许多短突发组成。这意味着使用计数器得到更新,但 Top 看不到“R”状态,因为它太短了。