我在Debian 6虚拟机上设置了collectd,用于监控和性能分析。收集的进程插件提供有关流程的统计信息。 cpu使用情况,虽然这些统计数据的单位没有在任何地方记录。它肯定不是jiffies或毫秒,因为在4核虚拟机上,几个进程的总CPU使用率可能高达每秒400,000(某些未知单元)。
通过查看collectd的源代码(https://github.com/collectd/collectd/blob/master/src/processes.c - 在 ps_read_process 函数中),我发现这些数据是从 / proc / $ pid中读取的/ stat 该进程的文件。 proc手册页(link- http://man7.org/linux/man-pages/man5/proc.5.html)表示那里的cpu使用情况以时钟周期计算。
这很好,但是时钟滴答对于监控和性能分析来说有点武断。我想将时钟滴答值转换为更有意义的值,理想情况下是总CPU时间的百分比。我怎么能以便携的方式做到这一点,而不仅仅假设我的处理器提供3GHZ的时钟周期?