转载于 http://www.2cto.com/kf/201510/445482.html
-
Batterystats & Battery Historian Walkthrough
Battery Historian Charts
Android应用的耗电量统计
SupplicantStatebatterystats使用条件
5.0以上系统 battery-historian脚本batterystats的启动
启动统计Battery数据的话,首先要初始化batterystats数据
12345 <code
class
=
"hljs"
livecodeserver=""
>adb kill-server
>
adb devices>
adb shell dumpsys batterystats --reset</code>上面的操作执行完毕后,拔掉手机,操作你的App,操作完成后,重新连接手机,执行下面的命令,收集Battery数据:
adb shell dumpsys batterystats > batterystats.txt
得到这些数据后,这个时候使用我们的battery-historian
来生成我们可见HTML报告:python historian.py batterystats.txt > batterystats.html
得到的报告如下:
Battery Historian指标
在Android性能专项测试之battery-historian试用 一文中已经介绍了一些属性,但是目前又增加很多,下面来看看新加属性的意义:
属性 意义 gps gps是否开启 sync 是否跟后台同步 mobile_radio 是否开启radio wake_reason 唤醒原因 phone_in_call 进行通话 batterystats信息过滤
Battery History
电量相关数据的时间序列:
123456789101112131415161718 <code
class
=
"hljs"
lasso=""
>Battery History (
0
% used,
152
used of 256KB,5
strings using256
):
0
(9
) RESET:TIME:
2015
-
10
-
09
-
19
-
50
-
15
0
(2
)
009
status=charging health=good plug=usb temp=324
volt=3683
+running +wake_lock +wifi_full_lock +audio +screen +plugged data_conn=lte phone_signal_strength=moderate brightness=bright +wifi_running +wifi wifi_signal_strength=4
wifi_suppl=completed top=u0a34:com.google.android.googlequicksearchbox0
(2
)
009
user=0
:
0
0
(2
)
009
userfg=0
:
0
+189ms (
2
)
009
volt=3660
+216ms (
2
)
009
volt=3688
+8s387ms (
2
)
009
+gps conn=3
:CONNECTED
+9s387ms (
2
)
009
-top=u0a34:com.google.android.googlequicksearchbox+9s387ms (
2
)
009
-gps +top=u0a130:com.example.android.sunshine.app+9s569ms (
2
)
009
+mobile_radio conn=3
:DISCONNECTED
+10s217ms (
2
)
009
volt=3577
+17s294ms (
2
)
009
volt=3619
+20s216ms (
2
)
009
volt=3576
+21s530ms (
1
)
009
+wifi_scan+22s801ms (
1
)
009
-wifi_scan+29s842ms (
1
)
009
-mobile_radio+30s252ms (
2
)
009
volt=3616
</code>
Per-PID Stats
每一个进程执行了多长的时间
12345678910111213141516171819202122 <code
class
=
"hljs"
livecodeserver=""
>Per-PID Stats:
PID
0
wake time: +396msPID
868
wake time: +1s682msPID
1402
wake time: +539msPID
0
wake time: +6s473msPID
868
wake time: +3msPID
1723
wake time: +166msPID
4841
wake time: +11m1s479msPID
19942
wake time: +271msPID
868
wake time: +42msPID
21564
wake time: +172msPID
15488
wake time: +67msPID
4841
wake time: +6s512msPID
4841
wake time: +6s512msPID
18217
wake time: +126msPID
3876
wake time: +228msPID
868
wake time: +20s440msPID
16547
wake time: +23msPID
22121
wake time: +288msPID
22146
wake time: +59msPID
16424
wake time: +485ms</code>
Statistics since last charge
123456789101112131415161718192021222324 <code
applescript=""
class=
"hljs"
>Statistics since last charge:
System starts:
0
, currently on battery:
false
Time on battery: 0ms (
0.0
%) realtime, 0ms (
0.0
%) uptime
Time on battery screen off: 0ms (
0.0
%) realtime, 0ms (
0.0
%) uptime
Total run time: 34s 134ms realtime, 34s 134ms uptime
Start clock time:
2015
-
10
-
09
-
19
-
50
-
15
Screen on: 0ms (--%) 0x, Interactive: 0ms (--%)
Screen brightnesses: (no activity)
Connectivity changes:
2
Mobile total received: 0B, sent: 0B (packets received
0
, sent
0
)
Phone signal levels: (no activity)
Signal scanning time: 0ms
Radio types: (no activity)
Mobile radio active time: 0ms (--%) 0x
Mobile radio active adjusted time: 0ms (--%)
Wi-Fi total received: 0B, sent: 0B (packets received
0
, sent
0
)
Wifi on: 0ms (--%), Wifi running: 0ms (--%)
Wifi states: (no activity)
Wifi supplicant states: (no activity)
Wifi signal levels: (no activity)
Bluetooth on: 0ms (--%)
Bluetooth states: (no activity)
</code>
Estimated power use (mAh)
目前只能算比较粗略的估计,不能作为实际消耗数据,其他google更为精准的数据
1234567891011121314 <code
class
=
"hljs"
rust=""
> Estimated power use (mAh):
Capacity:
3220
, Computed drain: -
2444.11370879
, actual drain:
0.00000000
Idle:
24.7
Uid u0a46: -
0.01197222
Uid u0a100: -
0.04600000
Uid u0a29: -
0.07444444
Uid u0a118: -
0.14044444
Uid u0a104: -
0.73288889
Uid
1000
: -
2.12172492
Uid u0a14: -
3.36807500
Uid u0a99: -
3.78076692
Phone calls: -
19.54370833
Cell standby: -
107.36537361
Screen: -
2331.64616000
</code>
Per-app mobile ms per packet
radio唤醒时间除以数据包发送次数,该时间越小代表性能越好,一个高效的App会将所有的流量转化为batches。
All partial wake locks
所有程序中wakelock,关注持续时间和数量