根据最近的调研,Android整机的性能主要有如下方面:
1、CPU
2、内存
3、耗电量
4、网络
本文着重介绍CPU相关数据的获取,在多核情况下,对每个CPU运行情况进行监控,获取相关的属性。
A. 当前主频,通过 cat /sys/devices/system/cpu/cpu0/cpufreq/scaling_cur_freq 获取,cpu0代表第一个CPU
B. 最大主频,通过 cat /sys/devices/system/cpu/cpu0/cpufreq/cpuinfo_min_freq 获取,cpu0代表第一个CPU
C. 最小主频,通过 cat /sys/devices/system/cpu/cpu0/cpufreq/cpuinfo_max_freq 获取,cpu0代表第一个CPU
D.使用率,通过 cat /proc/stat 获取,文件内容如下:第一行代表整体CPU的使用情况,cpu0为第一个cpu的使用情况,不同的列数代表cpu的耗时情况,如第4列代表的就是空闲时间idle的值。
shell@V4:/ $ cat proc/stat
cat proc/stat
cpu 3866978 127487 3035722 26246226 432119 27 52118 0 0
cpu0 3004154 33263 2209598 18130481 92464 16 51202 0 0 0
也就是说使用率我们无法直接获取,需要通过计算,具体的计算方式如下:
usage=(total-idel)/total
说明:使用率指得是cpu在某段时间内被使用的比率,因此事关两个时刻(t1、t2)的值。
分别需要在t1时刻和t2时刻获取total和idel
t1时刻获取: total_t1=所有值相加(同一行) idle_t1=第4个数值
t2时刻获取: total_t2=所有值相加(同一行) idle_t2=第4个数值
上述公式中的
total = total_t2 - total_t1
idle = idle_t2 - idle_t1
这是在国外的资料中说的,可是事实上运行的时候,这样的计算方式可能会出现负数,这边还有点疑问,如果哪位大神知