功耗问题分析
时间:2022-11-13 02:30:00
检查是否休眠
adb root
adb shell cat /sys/power/system_sleep/stats > stats00.txt
adb shell cat /sys/power/rpmh_stats/master_stats > master_stats00.txt
移除usb,待机3分钟后,插入USB
adb shell cat /sys/power/system_sleep/stats > stats11.txt
adb shell cat /sys/power/rpmh_stats/master_stats > master_stats11.txt
如果你睡觉了,节点中的值会改变。如果没有改变,说明睡眠不成功。
d/wakeup_sources节点可以检查当前是否有未休眠的部分
功耗分析:
手机连接假电池,绿灯亮后启动,然后设置电压,调整到正确的显示范围
关闭蓝牙,wifi,提升唤醒、触摸屏唤醒等一系列功能,打开飞行模式,息屏等待系统suspend
休眠后观察波形和平均电流。如有异常,可从串口观察log以上节点开始分析。
若波形剧增,应考虑:
1.系统未休眠,可通过/sys/power/system_sleep/stats节点中count判断值前后是否变化;
2.硬件泄漏,可拔出硬件继续观察;
3.传感器反应可以通过刺激传感器来判断它是否在工作。判断是传感器的干扰。尽量不要刺激传感器 或直接移除传感器;
4.由于某些原因ap侧停止休眠,可查看串口log是否恢复工作,如果串口log如果打印水平足够,可以从log分析休眠终止的原因;
5.如果没有出现上述现象,可以从//开始sys/power/rpmh_stats/master_stats判断节点,找出节点休眠前后值未改变的部分,从这部分开始定位。
输出battery log
adb shell dumpsys batterystats > batterystats.t
- 手机启动时间 搜索关键字RESET:TIME
Battery History (101% used, 258KB used of 256KB, 103 strings using 10KB):
0 (26) RESET:TIME: 2010-01-01-08-56-31
Reset time: 201年1月1日上午8点56分,手机开机
- 电量百分比
14s977ms (2) 062 -top=1000:“android” 14s977ms (2) 062 top=u0a25:“com.tct.launcher” 16s034ms (2) 062 audio 17s179ms (2) 062 phone_state=off 每行第一列是时间,而且是相对时间。相对于1.1中提到的手机启动时间 第二列不清楚,效果不大,可以忽略 第三列是电量百分比 062代表62%
- 充电和不充电状态 搜索关键字status=
5h17m21s015ms (3) 051 status=charging plug=usb volt=3802 plugged brightness=medium
5h17m21s015ms 这是2010-01-01-01-08-56-31的相对时间 5h17m21s015m = 下午两点13分 051 代表电量51% status=charging 代表 下午2点13分,这个时间点正在充电, plug=usb 是usb充电
- 亮屏和灭屏状态 搜索关键字 brightness=
1m02s904ms (2) 062 brightness=dark 1m02s904ms 代表时间 2010-01-01-08-56-31 1m02s904ms = 2010-01-01-08-57m-33s 062 代表电量62% brightness=dark 代表屏幕灭屏 5h17m07s783ms (4) 051 running wake_lock=1000:“PhoneWindowManager.mPowerKeyWakeLock” screen brightness=medium wake_reason=0:“unknown” screenwake=1000:“android.policy:POWER” 051 代表电量51% brightness= medium 代表亮屏,屏幕亮度是medium状态 只要brightness不是dark状态代表屏幕亮着
- 手机是否休眠 搜索关键字-running和 running· 2m45s859ms (1) 061 -running
061 代表电量61% -running 代表cpu进入休眠 2m52s798ms (2) 061 running wake_reason=0:“unknown”
061 代表电量61% running 代表cpu退出休眠,正在运行
- 手机是否进入Doze状态 搜索关键字device_idle=
0m34s785ms (2) 059 running wake_lock=1000:“walarm:DeviceIdleController.light” device_idle=off wake_reason=0:“Abort:Some devices failed to suspend, or early wake event detected”
device_idle=off 退出doze状态 1h20m42s766ms (2) 059 running device_idle=light wake_reason=0:“unknown” device_idle=light 进入light doze状态
1h20m42s766ms (2) 059 running device_idle= full wake_reason=0:“unknown” device_idle=full 进入deep doze状态
- Wifi是否在打开 搜索关键字 wifi_running和- wifi_running
40m09s967ms (1) 098 wifi_running wifi 40m10s152ms (1) 098 wifi_scan -wifi_running -wifi wifi_running wifi打开 -wifi_running wifi关闭
- 是否打电话 搜索关键字 phone_in_call和-phone_in_call
1h33m41s601ms (2) 091 phone_in_call active=u0a95:“com.huawei.vdrive” 1h34m16s780ms (3) 091 data_conn=hspap -phone_in_call phone_in_call 开始打电话 -phone_in_call 挂断电话
- 相机是否打开 搜索关键字 camera和-camera
1h42m13s770ms (2) 088 running wake_lock=1000:"HwPhoneWindowManager. mVolumeDownWakeLock " mobile_radio camera wake_reason=0:“unknown” 1h42m14s776ms (2) 088 -camera top=u0a68:“com.huawei.vassistant” camera 相机打开 -camera相机关闭
链接:https://www.jianshu.com/p/f4cdb14c8d32