内存、cpu、fps、流量、GPU、电量 Android性能测试——adb篇( 三 )


文章插图
 adb采集电池温度【内存、cpu、fps、流量、GPU、电量 Android性能测试——adb篇】dumpsys battery | grep temperature 单位0.1摄氏度
 

内存、cpu、fps、流量、GPU、电量 Android性能测试——adb篇

文章插图
 adb采集整机CPU使用率和分核CPU使用率获取/proc/stat文件内容(无权限限制)
 
内存、cpu、fps、流量、GPU、电量 Android性能测试——adb篇

文章插图
 
 
内存、cpu、fps、流量、GPU、电量 Android性能测试——adb篇

文章插图
 总的cpu时间片是 total = user+nice+system+idle+iowait+irq+softirq
忙碌时间为 notidle = user+nice+system +iowait+irq+softirq
cpu使用率计算方法为,先取开始的total值和忙碌时间notidle,隔一段时间片,再取一次计算total2,notidle2, cpuuse = (notidle2 – notidle) * 100 / (total2 - total)%
PS:由于Android 8权限收紧,在Android 8系统手机内apk内读取文件内容为空,需要shell权限才可获取文件内容,下同
adb 采集各核cpu频率读/sys/devices/system/cpu/cpuX/cpufreq/scaling_cur_freq文件的值,X不定,看是几核手机,scaling_cur_freq是否存在也不一定,需要判断
至于为啥不取cpuinfo_cur_freq文件的值,原因是android 6,7系统获取的时候,这个文件shell没有读取权限,需要root权限
 
内存、cpu、fps、流量、GPU、电量 Android性能测试——adb篇

文章插图
 参考文章:https://blog.csdn.net/long_zhimeng/article/details/45934899
adb获取当前运行于手机前端的应用的包名Android 6,7系统可执行
dumpsys window windows | grep "mCurrentFocus"
执行结果一般为类似:
mCurrentFocus=Window{81caaa5 u0 com.tencent.mobileqq/com.tencent.mobileqq.activity.SplashActivity}
按照一定规则把com.tencent.mobileqq提取出来即可
adb 采集GPU占用率,目前支持高通GPU芯片(Qualcomm Adreno系列)直接apk内读取文件即可,不需要shell权限(支持到Android8)
Gpu使用率获取:会得到两个值,(前一个/后一个)*100%=使用率
adb shell cat /sys/class/kgsl/kgsl-3d0/gpubusy
Gpu工作频率:
adb shell cat /sys/class/kgsl/kgsl-3d0/gpuclk
adb shell cat /sys/class/kgsl/kgsl-3d0/devfreq/cur_freq
Gpu最大、最小工作频率:
adb shell cat /sys/class/kgsl/kgsl-3d0/devfreq/max_freq
adb shell cat /sys/class/kgsl/kgsl-3d0/devfreq/min_freq
Gpu可用频率
adb shell cat /sys/class/kgsl/kgsl-3d0/gpu_available_frequencies
adb shell cat /sys/class/kgsl/kgsl-3d0/devfreq/available_frequencies
Gpu可用工作模式:
adb shell cat /sys/class/kgsl/kgsl-3d0/devfreq/available_governors
Gpu当前工作模式:
adb shell cat /sys/class/kgsl/kgsl-3d0/devfreq/governor
注意事项
  1. 所有dumpsys命令获取性能数据,如果adb shell进入终端执行,均要求执行有shell权限,如果PC端进入终端执行,则无此要求




推荐阅读