我在我的 Debian 6 虚拟机上设置 collectd 用于监控和性能分析。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 的时钟滴答?