功耗分析 CPU,GPU,DDR介绍
在分析整个手机系统的功耗时,常常涉及到CPU,GPU,DDR的差异,下面介绍一下通过脚本分析CPU,GPU,DDR的方法
CPU
查看CPU负载
查看CPU LOADING:
adb shell
cd vendor/bin/power/cpu/loading
./cpu_loading -t 60(60S时间可自定义)
输出小核和大核可用频点
CPU0,CPU1,CPU2,CPU3属于小核cluster0
CPU4,CPU5,CPU6,CPU7属于大恨cluster1
Online:运行时cpu占总时间的比值
Offline:每个CPU非运行态的时间对应总时间的比值
SUM: 大小核对应SUM的总和,和功耗正相关
查看CPU各频点跳变的次数
cpu_trans_table:统计各个频点跳变次数
adb shell
cd vendor/bin/power/cpu/trans_table
./cpu_trans_table -t 60(60S时间可自定义)
这条命令执行后可以看到大核和小核在各个cpu频点相互跳变的次数
固定CPU频率
fix_freq:
adb shell
cd vendor/bin/power/cpu/fix_freq
./fix_cpu_freq
输出./fix_cpu_f之后会弹出input fix freq
这时候输入固定的频率,会让CPU频率固定在一个频点上
GPU
查看GPU负载
Gpu_loading统计一段时间内GPU 在各个频点的占比和使用情况
adb shell
cd vendor/bin/power/gpu/loading
./gpu_loading -t 60(60S时间可自定义)
控制台会输出GPU运行在不同频点上的占比
一般占比越高,则功耗越高
gpu_trans_table是统计一段时间GPU 频点的跳变关系,提供所有有关GPU 频率的信息过渡,输出的是二维矩阵
adb shell
cd vendor/bin/power/gpu/trans_table
./gpu_trans_table -t 60(60S时间可自定义)
结果会输出GPU各频点跳变的次数
fix_gpu_freq
fix_gpu_freq 的功能是固定GPU 频率,运行过程中会提示“input fix freq”,按照提示输入固定的频率即可
adb shell
cd vendor/bin/power/gpu/fix_freq
./fix_gpu_freq
下命令运行后,输入固定频率可以让gpu定频
DDR
查看DDR负载
ddr_loading: ddr_loading 是统计一段时间内DDR 在各个频点的使用率
adb shell
cd vendor/bin/power/ddr/loading
./ddr_loading –t 60
下命令运行后,输出ddr运行在各频率的占比
ddr_trans_table
ddr_trans_table 统计一段时间DDR 频点的跳变关系,提供所有有关DDR 频率的细粒度信息过渡。输出的
是二维矩阵
adb shell
cd vendor/bin/power/ddr/trans_table
./ddr_trans_table –t 60(60S时间可自定义)
运行命令后,会输出DDR在各频段的跳转次数
ddr_bm是抓取一段时间内的带宽数据,输入抓取带宽指令,程序运行到达指定时间将在
vendor/bin/power/ddr/bm 目录下生成ddr_bm.csv 文件,即为带宽数据
adb shell
cd vendor/bin/power/ddr/bm
./tool/ddr_bm –t 240
会输出数据生成到.csv文件里面
fix_ddr_freq
fix_ddr_freq 的功能是固定DDR 频率,行过程中会提示“input fix freq”,按照提示输入固定的频率即可
adb shell
cd vendor/bin/power/ddr/fix_freq
./fix_ddr_freq
执行命令后,输入对应的频率,DDR便跑到对应的频率上
背光节点
背光节点
Backlight
adb shell
cd vendor/bin/power/backlight
./brightness
top线程
thread_top
Thread_top程序可以获取一段时间内cpu使用率前N的信息
adb shell
cd vendor/bin/power/tops
./tops –t 10 –n 10
会输出前十线程的线程名和CPU占用率