我见过一些类似的帖子,其中最引人注目的是这里,但对答案并不十分满意。我正在比较特定进程的 top
和结果,发现 CPU 使用率存在巨大差异。在不同间隔(包括持续高点的时期,3-4 个间隔 >50%)之间变化,而稳定在 2.2%。我正在观察的进程没有任何子进程或任何东西,所以我不太确定该怎么做。由于 中有持续的高点,我觉得我可以排除采样间隔。 ps
top
ps
top
正如我上面链接的问题所暗示的那样,这真的只是这两个工具处理 I/O 等待时间方式的差异吗?
编辑:
我曾看到它在 中波动至 2.1% ps
,但目前为止就是这样。输出自top -p 4522
:
PID USER PR NI VIRT RES SHR S %CPU %MEM TIME+ COMMAND
4522 root 16 0 340m 316m 4732 R 54.7 1.3 508:57.46 maui
输出自ps u -p 4522
:
USER PID %CPU %MEM VSZ RSS TTY STAT START TIME COMMAND
root 4522 2.2 1.3 348764 324456 ? Ss Aug25 509:25 /usr/local/maui/sbin/maui
答案1
最可能的原因是,将top
百分比值显示为单身的CPU 会ps
显示总可用 CPU 功率的百分比。尝试运行 top 并ShiftI在其运行时点击以显示所有核心的百分比。
如果这是一个拥有大量 CPU 的服务器集群,则您所描述的行为是正常行为。另请参阅这里。
答案2
这个问题很老了,但我认为答案是不正确的。ps 和 top 使用不同的方法计算 CPU 使用率。
来自 man top:
- %CPU——CPU 使用率 该任务所占的已用时间份额自上次屏幕更新以来的 CPU 时间,以占总 CPU 时间的百分比表示。
来自 man ps:
CPU 使用率目前表示为进程整个生命周期内运行所花费的时间。
假设您有一个一周前启动的进程,在此期间它平均使用了 2.2% 的 CPU 时间。如果突然它变得占用大量 CPU(持续消耗 100%)——查看 ps 您会在最初几个小时内观察到同样的 2.2%。