Android 读取CPU/GPU运行参数(MTK平台) 您所在的位置:网站首页 如何看gpu使用率 Android 读取CPU/GPU运行参数(MTK平台)

Android 读取CPU/GPU运行参数(MTK平台)

2023-08-18 12:07| 来源: 网络整理| 查看: 265

一、使用场景

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

二、分析&定位问题

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

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

# Des : 间隔1s输出CPU/GPU运行信息 # Ver : V1.0 # usage: # adb root # adb remount # adb push cpu_util.sh /system/bin/ # adb shell # ./system/bin/cpu_util.sh printf " time cpu_temp cpu0~3[max-min] cpu4~7[max-min] gpu_rate \n" while true do #temp of CPU cpu_temp_t=$(cat /sys/class/thermal/thermal_zone1/temp) cpu_temp=$(awk 'BEGIN{printf "%.1f\n",('$cpu_temp_t'/'1000')}') #rate of GPU gpu_idle=$(cat /sys/module/ged/parameters/gpu_idle) gpu_rate=$((100-${gpu_idle})) printf "%s %0.1f [%7d-%7d] [%7d-%7d] %3s %3s \n" \ $(date "+%Y-%m-%d-%H:%M:%S") \ ${cpu_temp} \ $(cat /sys/devices/system/cpu/cpufreq/policy0/cpuinfo_max_freq) \ $(cat /sys/devices/system/cpu/cpufreq/policy0/cpuinfo_min_freq) \ $(cat /sys/devices/system/cpu/cpufreq/policy0/cpuinfo_cur_freq) \ $(cat /sys/devices/system/cpu/cpufreq/policy4/cpuinfo_max_freq) \ $(cat /sys/devices/system/cpu/cpufreq/policy4/cpuinfo_min_freq) \ $(cat /sys/devices/system/cpu/cpufreq/policy4/cpuinfo_cur_freq) \ ${gpu_rate} \ sleep 1 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的散热效率

 

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

 



【本文地址】

公司简介

联系我们

今日新闻

    推荐新闻

    专题文章
      CopyRight 2018-2019 实验室设备网 版权所有