[待机功耗]呼吸灯功耗分析与优化

1. 功耗现象

连接香港WiFi待机10小时平均电流20.69mA(不能超过17mA)

1.1 查看PowerMonitor波形现象

初次查看波形图,发现某个时刻后,待机的平均电流就明显变大,且一直持续整个暗屏待机结束,故很可能是功耗异常原因

[待机功耗]呼吸灯功耗分析与优化_第1张图片

2. 功耗异常发生时刻确认

2.1 查看电流波形变化

异常波形的持续时间是1秒,且每隔2秒出现一次,且该波形平均电流为23.42 mA,故初步判定为功耗异常原因

[待机功耗]呼吸灯功耗分析与优化_第2张图片

上述需要找到这个特殊时刻发生的具体的时间,并将整个时刻和日志一一对应,找到问题发生原因

2.2 特殊时刻是6036.91秒

**换算为时间:09:52:02 + 是6036.91秒 = 11:32:42 **

[待机功耗]呼吸灯功耗分析与优化_第3张图片

3. 功耗异常原因

查看 11:32:42 前后1秒内的日志情况,查看最近的唤醒源,具体如下-lock=220547145

40,280: 03-04 11:32:50.091  1129  1685 D PowerManagerService: acquireWakeLockInternal: lock=220547145, flags=0x40000001, tag="*alarm*", ws=WorkSource{1000}, uid=1000, pid=1129, packageName=android 
40,350: 03-04 11:32:50.261  1129  1129 D PowerManagerService: updateWakeLockWorkSourceInternal: lock=220547145 [*alarm*], ws=WorkSource{10155} //com.autonavi.minimap
40,351: 03-04 11:32:50.267  1129  1129 D PowerManagerService: updateWakeLockWorkSourceInternal: lock=220547145 [*alarm*], ws=WorkSource{10146} //le.android.talk
40,371: 03-04 11:32:50.306  1129  1129 D PowerManagerService: updateWakeLockWorkSourceInternal: lock=220547145 [*alarm*], ws=WorkSource{10040 com.google.android.gms} 
40,372: 03-04 11:32:50.308  1129  1129 D PowerManagerService: updateWakeLockWorkSourceInternal: lock=220547145 [*alarm*], ws=WorkSource{10170} //com.tencent.mm
40,392: 03-04 11:32:50.343  1129  1129 D PowerManagerService: releaseWakeLockInternal: lock=220547145 [*alarm*], flags=0x0, total_time=252ms, ws/pid/uid=WorkSource{10170}/1129/1000, packageName=android 

上述发现 com.autonavi.minimap 地图导航, le.android.talk, com.google.android.gms,com.tencent.mm 后台唤醒,由于PowerMonitor和日志中的行为存在误差,故这里找这一分钟中最早出现的唤醒点,但是由于不同器件唤醒工程中持续的时间是无法计算的,故这里只能确定唤醒时刻发生的时间点,但是可以在 releaseWakeLockInternal 中的total_time查看持锁时间,作为参考实际电流波形持续的时间。

综合上述:应用唤醒导致该波形产生,但是为什么该波形产生后,出现了很有规律的波形呢?

3.1 特殊时刻前后的唤醒情况分析

03-04 09:51:48 ~ 03-04 11:32:50 期间 855次唤醒

365次 com.google.android.gms 唤醒
224 次 android
183 次 com.tencent.mm

32 次 com.qualcomm.qcrilmsgtunnel
8 次 com.android.phone 
4 次 com.android.systemui 
3 次 com.tencent.qqlive
3 次 jp.naver.line.android
1 次 com.google.android.apps.maps

03-04 11:32:50 ~ 03-04 19:58:37 期间 2106次唤醒

729 次 com.tencent.mm
541 次 com.google.android.gms
464 次 android


56 次 com.qualcomm.qcrilmsgtunnel
28 次 com.whatsapp
12次 com.amazon.mShop.android.shopping
10 次 audioserver
9次 com.google.android.talk
2次 com.autonavi.minimap
6 次 com.android.systemui
4次 com.UCMobile.intl
4次 com.twitter.android
2次 jp.naver.line.android

上述中唤醒次数并不能反映这个间隔2秒持续1秒的波形

3.2 现象复现 - 问题确认呼吸灯导致

并不是所有的现象都可以在日志中提醒,这里有时我们需要进行复现。这里安装上述应用com.autonavi.minimap 地图导航, le.android.talk, com.google.android.gms,com.tencent.mm,并待机,同时如果是社交应用,可以做发生消息的测试

暗屏待机时,微信后台运行,接收到消息时,就会触发消息通知,出现呼吸灯闪烁,就可以稳定出现2秒一个周期的台阶电流。

4. 呼吸灯功耗优化

4.1 呼吸灯亮屏规格

[待机功耗]呼吸灯功耗分析与优化_第4张图片

4.2 修改呼吸灯的亮灭频率

Case 事件指示 SW设置电流 3min平均电流/mA
优化前 4亮1灭 16mA 9 mA
优化后 2灭2亮 4mA 1.38 mA

4.3 修改呼吸灯的亮度-修改占空比

模式 平均电流 的差值
无呼吸灯 6.2mA
呼吸灯 25 占空比 7.2mA 1 mA
呼吸灯 50 占空比 8.4mA 2.2 mA
呼吸灯 90 占空比 10.68mA 4mA

你可能感兴趣的:(功耗异常分析)