在一天的时间里,我有什么方法可以查看每个应用程序使用多少CPU(或电池)?以下是BatteryDoctor应用程序的示例:
我认为他们以编程方式完成了一些工作:
由此,他们可以“计算”每个应用的电池使用量(百分比)。
我知道有一些方法可以完成第二项工作(数据使用)。但对于第一个,似乎很难得到。
我找到了一些方法,但它们似乎不起作用
"/proc/" + pid + "/stat"
方式) - 我无法运行这个,看起来像[2]总是“S”"sh -c top -m 1000 -d 1 -n 1 | grep \"" + pid + "\" "
)。 无论如何,它只能返回应用正在使用的CPU的百分比。但是我想要一段时间内使用的CPU的时间(例如24小时)。
那么有没有人知道如何以编程方式获得每个应用程序的CPU时间? 或者它可能只是应用程序的前景/运行时间?
答案 0 :(得分:3)
这是你的问题的答案,但我不确定它是否真的是你想要的。
如果top计算应用程序的%CPU,让我们称之为%CPU_APP,在500ms的窗口上,那么应用程序执行的总时间是500ms *%CPU_APP超过该时间间隔。如果你总结所有这些间隔,例如24小时,那么你得到应用程序在那段时间内使用处理器的总时间。
例如,假设窗口为500毫秒且%CPU_APP为20%,则应用程序使用100毫秒的时间。如果%CPU_APP在24小时内保持不变,则应用程序运行的总时间为24小时* 60分钟/小时* 60秒/分钟* .5 *%CPU_APP。 (我将数学留给读者; - )> )
困难的部分是找到窗户的大小。如果没有在任何文档中给出,您可以通过观察绘图的颗粒度来测量这一点。并且%CPU_APP不太可能是常数,因此您必须收集这些统计信息并随着时间的推移进行集成。
如果这不是您想要的答案,请澄清您的问题并重新提交到堆栈溢出。