900字范文,内容丰富有趣,生活中的好帮手!
900字范文 > Android 读取CPU/GPU运行参数(MTK平台)

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

时间:2022-06-19 11:40:12

相关推荐

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

一、使用场景

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.shprintf " time cpu_temp cpu0~3[max-min]<cur_HZ> cpu4~7[max-min]<cur_HZ> gpu_rate \n"while truedo#temp of CPUcpu_temp_t=$(cat /sys/class/thermal/thermal_zone1/temp)cpu_temp=$(awk 'BEGIN{printf "%.1f\n",('$cpu_temp_t'/'1000')}')#rate of GPUgpu_idle=$(cat /sys/module/ged/parameters/gpu_idle)gpu_rate=$((100-${gpu_idle}))printf "%s %0.1f [%7d-%7d]<%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 1done

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的散热效率

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

本内容不代表本网观点和政治立场,如有侵犯你的权益请联系我们处理。
网友评论
网友评论仅供其表达个人看法,并不表明网站立场。