Debian Squeeze上的ps -o pcpu给出了无意义的数字

我试图让一个繁忙的服务器上的进程的CPU百分比出ps ,但它给了我无意义的数字。 这是一个截断的例子:

 $ ps -eo pcpu,pid | sort -n %CPU PID ... 36.5 26403 38.6 28295 39.0 11741 42.6 11736 58.6 15960 61.4 21989 63.0 21939 65.5 18017 66.0 20708 67.3 22040 73.2 31950 80.0 11740 83.6 22091 109 16648 171851 22888 171851 22938 171856 23191 171858 23241 171866 24681 171875 26996 171895 30277 172376 26084 172449 25530 

top报告后面的pid的CPU%为0.0。 这里发生了什么? 我怎么能说服ps给我正确的CPU%号码在这里? 作为一种替代方法,是否有可能告诉top -b -n1给我所有正在报告的进程的完整ARGV? 手册页是不亮的。

编辑添加:

如果我做一个ps -eo pcpu,pid --sort -pcpu | head ps -eo pcpu,pid --sort -pcpu | head ,我仍然得到坏数字:

 %CPU PID 343702 23762 343653 22570 109 16648 83.6 22091 73.3 31950 67.3 22040 66.0 20708 

编辑进一步添加:

到目前为止,我所见过的系统都是真正的硬件:x86_64 Debian Squeeze系统,一个是2.6.32-5-amd64内核,另一个是2.6.39-bpo.2-amd64。 前者有32个内核,后者是12个。一个是内存192GB的Opteron,另一个是72GB的Xeon。

我越看越这个问题,看起来就像是一个简单的ps中的bug,它显示了很less活动的进程数量很高,但我不想依赖这个,直到我知道更多。

我怎么能说服ps给我正确的CPU%号码在这里?

这个怎么样:

 ps -eo pcpu,user,pid,args --sort -pcpu | head 

有可能告诉top -b -n1给我所有正在报告的进程的ARGV?

  -c : Command line/Program name toggle Starts top with the last remembered 'c' state reversed. Thus, if top was displaying command lines, now that field will show program names, and visa versa. See the 'c' interactive command for addi‐ tional information.