最高批处理模式下的 CPU 使用率

Posted

技术标签:

【中文标题】最高批处理模式下的 CPU 使用率【英文标题】:CPU usage in top batch mode 【发布时间】:2011-05-18 13:21:26 【问题描述】:

我有一个问题让我很生气。我正在使用以下命令以批处理模式运行 top,

top -b -n 1

问题是我可以在批处理模式下运行 top 100 次,但 CPU 使用率永远不会超过原始值。内存使用量按预期变化,但 CPU 保持不变。如果我同时在不同的窗口中运行另一个顶部,则该顶部的 CPU 使用率会发生变化,但批处理模式下的顶部不会发生变化。

基本上,CPU 统计数据在批处理模式下似乎没有变化,而在交互模式下却发生了变化。有谁知道为什么? 自己试试,运行上面的命令几次,观察 CPU 使用率保持不变,然后在交互模式下运行 top,观察 CPU 使用率不断变化。

【问题讨论】:

在这里工作正常,否则你可以使用ps 或者sar | tail -1 我看到了同样的行为。批处理命令不能运行足够长的时间来获得良好的 CPU 使用累加器或其他东西。 Aschepler,似乎是这样,但我在其他任何地方都没有看到过这个。如果您将迭代次数设置为 2,则它可以工作。问题是我需要它进行 1 次迭代。 【参考方案1】:

在第一次迭代中,它会显示自系统启动以来的平均 CPU 使用率。

(请注意,top 的较新版本不再是这种情况)。

【讨论】:

是的,好像是这样。【参考方案2】:

这是一个显示较长时间段内累积 CPU 使用率的行,在本例中为 5 秒。您可以使用 -d 标志对其进行调整。

top -b -d 5 -n 2 | awk '$1 == "PID" block_num++; next block_num == 2 sum += $9; END print sum'

【讨论】:

以上是关于最高批处理模式下的 CPU 使用率的主要内容,如果未能解决你的问题,请参考以下文章

怎么限制cpu

IA-32e模式下的异常处理

逻辑处理器100% 整体利用率却很低

记录一次线上tomcat失去响应问题处理

cpu调度

Linux iostat命令详解