转载于 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 using
256
):
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.googlequicksearchbox
0
(
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: +396ms
PID
868
wake time: +1s682ms
PID
1402
wake time: +539ms
PID
0
wake time: +6s473ms
PID
868
wake time: +3ms
PID
1723
wake time: +166ms
PID
4841
wake time: +11m1s479ms
PID
19942
wake time: +271ms
PID
868
wake time: +42ms
PID
21564
wake time: +172ms
PID
15488
wake time: +67ms
PID
4841
wake time: +6s512ms
PID
4841
wake time: +6s512ms
PID
18217
wake time: +126ms
PID
3876
wake time: +228ms
PID
868
wake time: +20s440ms
PID
16547
wake time: +23ms
PID
22121
wake time: +288ms
PID
22146
wake time: +59ms
PID
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,关注持续时间和数量