如何将进程cpu使用情况(以时钟节拍为单位)转换为百分比



我在Debian 6虚拟机上安装了一个用于监控和性能分析的集合。Collectd的processes插件提供了有关进程cpu使用情况的统计数据,尽管这些统计数据包含哪些单元并没有记录在任何地方。这当然不是瞬间或毫秒,因为在4核虚拟机上,几个进程的cpu总使用量可能高达每秒400,000(某个未知单位)。

通过查看collectd的源代码(https://github.com/collectd/collectd/blob/master/src/processes.c -在ps_read_process函数中),我发现这些数据是从进程的/proc/$pid/stat文件中读取的。proc手册页(链接- http://man7.org/linux/man-pages/man5/proc.5.html)说那里的cpu使用情况是以时钟节拍来衡量的。

这很好,但是时钟节拍对于监视和性能分析来说有点随意。我希望将时钟刻度值转换为更有意义的值,理想情况下是cpu总时间的百分比。我如何以便携的方式做到这一点,而不只是假设我的处理器提供3GHZ的时钟节拍?

进一步检查collectd的代码,发现cpu使用率被转换为微秒。

同样,一个类似的问题已经在这里被问到并回答了。

最新更新