当前位置:   article > 正文

Android 读取CPU/GPU运行参数(MTK平台)_安卓gpu频率实时查看

安卓gpu频率实时查看

一、使用场景

  Android运行一段世时间后,系统出现卡顿

二、分析&定位问题

  系统卡顿,同时又发现芯片温度很高,怀疑是温度过高导致CPU降频,因此我们要将一段时间内CPU的运行信息打印出来。这里我们想知道CPU温度与运行频率之间的关系,所以需要输出CPU的温度和频率参数,其次还一些辅助信息,例如时间和GPU的占用率。所以需要的数据项包括:时间、CPU温度、CPU频率、GPU占用率。为了获取一段时间内的数据,我们需要编写脚本间隔1s输出一组数据,建议观察5min左右。

1.编写shell脚本,新建文件cpu_util.sh,拷贝下面的文本保存到文件中

  1. # Des : 间隔1s输出CPU/GPU运行信息
  2. # Ver : V1.0
  3. # usage:
  4. # adb root
  5. # adb remount
  6. # adb push cpu_util.sh /system/bin/
  7. # adb shell
  8. # ./system/bin/cpu_util.sh
  9. printf " time cpu_temp cpu0~3[max-min]<cur_HZ> cpu4~7[max-min]<cur_HZ> gpu_rate \n"
  10. while true
  11. do
  12. #temp of CPU
  13. cpu_temp_t=$(cat /sys/class/thermal/thermal_zone1/temp)
  14. cpu_temp=$(awk 'BEGIN{printf "%.1f\n",('$cpu_temp_t'/'1000')}')
  15. #rate of GPU
  16. gpu_idle=$(cat /sys/module/ged/parameters/gpu_idle)
  17. gpu_rate=$((100-${gpu_idle}))
  18. printf "%s %0.1f [%7d-%7d]<%7d> [%7d-%7d]<%7d> %3s %3s \n" \
  19. $(date "+%Y-%m-%d-%H:%M:%S") \
  20. ${cpu_temp} \
  21. $(cat /sys/devices/system/cpu/cpufreq/policy0/cpuinfo_max_freq) \
  22. $(cat /sys/devices/system/cpu/cpufreq/policy0/cpuinfo_min_freq) \
  23. $(cat /sys/devices/system/cpu/cpufreq/policy0/cpuinfo_cur_freq) \
  24. $(cat /sys/devices/system/cpu/cpufreq/policy4/cpuinfo_max_freq) \
  25. $(cat /sys/devices/system/cpu/cpufreq/policy4/cpuinfo_min_freq) \
  26. $(cat /sys/devices/system/cpu/cpufreq/policy4/cpuinfo_cur_freq) \
  27. ${gpu_rate} \
  28. sleep 1
  29. done

2.脚本中节点说明

/sys/class/thermal/thermal_zone1/temp                                            #CPU温度
/sys/module/ged/parameters/gpu_idle                                               #GPU空闲率
/sys/devices/system/cpu/cpufreq/policy0/cpuinfo_max_freq   #cpu0~3核最大频率 
/sys/devices/system/cpu/cpufreq/policy0/cpuinfo_min_freq   #cpu0~3核最小频率
/sys/devices/system/cpu/cpufreq/policy0/cpuinfo_cur_freq    #cpu0~3核当前频率
/sys/devices/system/cpu/cpufreq/policy4/cpuinfo_max_freq  #cpu4~7核最大频率
/sys/devices/system/cpu/cpufreq/policy4/cpuinfo_min_freq  #cpu4~7核最小频率
/sys/devices/system/cpu/cpufreq/policy4/cpuinfo_cur_freq    #cpu4~7核当前频率

 * 基于Android9.0平台,其他平台的路径可能有些许差异

 * 芯片总共8核,0~3核的策率为policy0,4~7核的策率为policy4

 

3.脚本用法说明,依次运行如下命令
#   adb root
#   adb remount
#   adb push cpu_util.sh /system/bin/
#   adb shell
#   ./system/bin/cpu_util.sh
 

三、分析数据

1.部分数据如下

2.读取3min左右的数据绘制成图表如下

从上图可以看出3min内CPU频率随着温度变化的关系,大概是温度达到75度左右开始,cpu0~3核频率开始急剧下降,最后降到最低的793000HZ,保持一段时间,当CPU温度低于75度左右开始频率变高。

测试发现系统卡顿时也是这段时间,所以得出结论,CPU温度升高导致降频率,进而导致系统运行卡顿。

定位到系统卡顿是因为CPU温度升高导致,后续可以从两方面进行优化:

 1)分析哪些应用占用CPU特别高,优化对应应用CPU占用率

 2)从硬件结构分析,提高CPU的散热效率

 

这次对系统卡顿问题的分析就到这里,分析步骤写的比较简单,如果哪些地方写的不对或者有哪些地方不懂的可以给我留言,谢谢!

 

本文内容由网友自发贡献,转载请注明出处:https://www.wpsshop.cn/w/weixin_40725706/article/detail/773224
推荐阅读
相关标签
  

闽ICP备14008679号