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

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,我仍然得到错误的数字:

%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 个内核。一个是 Opteron,内存为 192GB,另一个是 Xeon,内存为 72GB。

我对此研究得越多,就越觉得它像是一个简单的错误,在ps活动很少的进程中显示出很高的数字,但我不想依赖它,直到我了解更多。

答案1

我怎样才能让 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.

相关内容