使用 top 是测量系统 CPU 使用率的有效方法吗?

使用 top 是测量系统 CPU 使用率的有效方法吗?

我读的时候感到困惑Stack Overflow 上的这个问题。提问者说:

“‘top’ 根本行不通,因为 CPU 转储之间存在延迟,它需要 2 次转储和几秒钟的时间,这会挂起我的程序”

提问者在说什么?我一直认为 top 做的事情和接受的答案推荐的完全一样。他声称 top “挂起了他的程序”,这对我来说毫无意义,但没有人在评论中指出这一点。

通常我需要获取在一台机器上运行的大量进程的总体 CPU 利用率。通常我只是在最坏负载下运行进程时以相当长的采样率(通常为 10 秒)运行 top 并确定平均负载估计值。以这种方式获取测量结果是否完全错误?

注意:在进行测量时,我还确保没有其他不必要的服务或用户空间进程正在运行。

答案1

该评论的发布者可能指的是

问题描述:当我对“top”命令使用特定选项时,具体来说,-b -n1,我没有得到正确的输出。

在常规模式下运行 top 时,它会不断更新,并且 Cpu(s) 行上的值会随着每次更新而变化。但是,当使用 -bn1 开关(批处理模式,1 次迭代)运行 top 时,Cpu(s) 行在几秒、几分钟甚至几小时内不会因运行而发生变化。

第一次迭代top -b返回自启动以来的百分比,因此我们需要至少两次迭代(-n 2)才能获得当前百分比。因此,只要top在使用它收集数据之前运行一次就可以了。

相关内容