ps和top提供不同的CPU使用率


2

我见过几篇类似的帖子,最着名的是这里,但对答案并不十分满意。我正在比较特定流程topps得出结果,并发现CPU使用率存在巨大差异。 top从间隔到间隔在<1%和100%之间变化,包括持续高峰期(3-4个间隔> 50%),而ps稳定在2.2%。我正在看的过程没有任何孩子或任何东西,所以我不太清楚该怎么做。由于有持续高的时期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

你的意思是ps永远不会改变,总是 2.2?你能后的输出ps,并top在问题,所以我们可以看看命令?
terdon 2013年

@terdon我用原始帖子更新了附加信息。
TTT 2013年

Answers:


2

最有可能的原因是,top百分比值显示为单个 CPU ps的百分比,同时显示可用CPU总功率的百分比。尝试运行top并ShiftI在其运行时点击以显示所有核心的百分比。

如果这是具有大量CPU的服务器群集,则您所描述的是正常行为。另见这里


是的,我正在运行12个核心。这确实降低了它达到的%水平,top使得平均值低于平均值ps,因此可能是差异。现在这个过程不那么活跃了,所以很难说...
TTT 2013年

1
@TTT这是一个经典的问题,在我发现转移+我的事情之前,它常常让我爬上墙。
terdon 2013年

2

这个问题很老,但在我看来答案是不正确的。ps和top使用不同的方法计算CPU使用率。

从男人顶部:

  1. %CPU - CPU使用率自上次屏幕更新以来经过的CPU时间的任务份额,表示为CPU总时间的百分比。

来自man ps:

CPU使用率目前表示为在流程的整个生命周期中运行所花费时间百分比。

因此,假设您有一个在一周前启动的进程,在此期间它平均使用2.2%的CPU时间。如果它突然变得CPU密集(不断消耗100%) - 看ps,你会在最初的几个小时内观察到相同的2.2%。


在这种情况下你是半对的,因为maui在后台连续运行。但是,即使在相同的时间段内进行平均pstop平均,由于接受的答案所指出的问题,仍然存在12倍的差异。所以,这两个答案都是部分正确的。
TTT
By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.