我怀疑您将其中的值
/sys/devices/system/cpu/cpu0/cpufreq/scaling_cur_freq用作您的
hertz值。这是不正确的,因为该文件为您提供了CPU硬件时钟频率,但是您必须使用Linux内核时钟频率作为您的
hertz值。
CPU硬件时钟和Linux内核时钟不同。Android运行的Linux内核具有自己的计时器(时钟),并以一定的频率更新。此计时器更新的频率是内核赫兹(
HZ)值。
由于历史原因,Linux
proc和sys文件中列出的时钟滴答值
HZ通过Linux内核
USER_HZ常数从内核频率缩放到公共频率。
USER_HZ我们必须
hertz在计算中使用此常量作为值。数据采集
- 正常运行时间 :
226.06
秒 - utime :
38
时钟滴答 - stime :
32
时钟滴答 - 开始时间 :
13137
时钟滴答 - Hertz :
100
(Linux内核USER_HZ
常数)- 这是基于未修改的Android系统的假设。
total_time = utime + stime = 38 + 32 = 70
seconds = uptime - (starttime / Hertz) = 226.06 - (13137 / 100) = 94.69
cpu_usage = 100 * ((total_time / Hertz) / seconds) = 100 * ((70 / 100) /94.69) = 0.7392...解
您的进程的总CPU使用率约为 0.739%
。如果这看起来很小,请记住您的进程与系统上的所有其他进程共享CPU:大多数普通进程在其整个生命周期中都处于空闲状态,因此任何一个进程通常平均总CPU使用率较低。
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)