问题
I'm trying to use Battery Historian Python script from GitHub to analyze battery usage, but the html generated each time I use the script shows "cannot find end time".
I'm following the steps form here.
Here is a sample batterystats.txt
file generated:
Battery History:
-2m43s770ms 100 44020302 status=not-charging health=good plug=none temp=270 volt=4339 +wifi +wifi_running +wake_lock brightness=medium phone_state=off
-2m43s151ms 100 44020302
-2m38s500ms 100 04020302 -wake_lock
-2m20s496ms 100 44020302 +wake_lock
-2m17s471ms 100 04020302 -wake_lock
-2m13s741ms 100 04020302 temp=280
-1m59s447ms 100 44020302 +wake_lock
-1m56s423ms 100 04020302 -wake_lock
-43s740ms 100 04020302 volt=4317
-21s432ms 100 040a0302 status=full plug=usb volt=4312 +plugged
Per-PID Stats:
PID 140 wake time: +1s55ms
PID 601 wake time: +1s236ms
PID 140 wake time: +13s381ms
PID 601 wake time: +29ms
PID 812 wake time: +555ms
PID 939 wake time: +18ms
PID 1241 wake time: +51ms
PID 601 wake time: +1ms
PID 1294 wake time: +3ms
PID 601 wake time: +32ms
PID 601 wake time: +7ms
PID 1689 wake time: +103ms
Statistics since last charge:
System starts: 0, currently on battery: false
Time on battery: 2m 22s 369ms (0.0%) realtime, 2m 22s 369ms (0.0%) uptime
Total run time: 21d 4h 47m 25s 154ms realtime, 3d 2h 25m 30s 738ms uptime,
Screen on: 0ms (0.0%), Input events: 0, Active phone call: 0ms (0.0%)
Screen brightnesses: No activity
Mobile total received: 0B, Total sent: 0B
Wi-Fi total received: 249.09KB, Total sent: 18.02KB
Total full wakelock time: 2m 22s 191ms , Total partial wakelock time: 9s 697ms
Signal levels: No activity
Signal scanning time: 0ms
Radio types: none 2m 22s 369ms (100.0%) 0x
Radio data uptime when unplugged: 0 ms
Wifi on: 2m 22s 369ms (100.0%), Wifi running: 2m 22s 369ms (100.0%), Bluetooth on: 0ms (0.0%)
Device battery use since last full charge
Amount discharged (lower bound): 0
Amount discharged (upper bound): 0
Amount discharged while screen on: 0
Amount discharged while screen off: 0
All partial wake locks:
Wake lock 1013 AudioMix: 9s 52ms (4 times) realtime
Wake lock u0a8 UlrDispSvcFastWL: 166ms (2 times) realtime
Wake lock 1000 AlarmManager: 87ms (2 times) realtime
Wake lock u0a8 GCoreFlp: 80ms (3 times) realtime
Wake lock 1000 NetworkStats: 78ms (1 times) realtime
Wake lock 1000 ActivityManager-Launch: 78ms (1 times) realtime
Wake lock u0a8 Event Log Service: 75ms (1 times) realtime
Wake lock u0a24 AlarmManager: 32ms (1 times) realtime
Wake lock u0a8 AlarmManager: 23ms (2 times) realtime
Wake lock u0a43 AlarmManager: 7ms (1 times) realtime
Wake lock u0a8 Event Log Handoff: 7ms (1 times) realtime
Wake lock u0a8 GCM_CONN: 5ms (1 times) realtime
Wake lock u0a8 GCM_HB_ALARM: 4ms (1 times) realtime
Wake lock u0a23 PUSH_SERVICE_WAKE_LOCK: 3ms (1 times) realtime
Wake lock u0a23 AlarmManager: 1ms (1 times) realtime
Wake lock u0a8 Wakeful StateMachine: GeofencerStateMachine: 1ms (1 times) realtime
0:
Wi-Fi network: 632B received, 1.59KB sent
Proc /init:
CPU: 20ms usr + 80ms krn ; 0ms fg
Proc ksoftirqd/0:
CPU: 10ms usr + 0ms krn ; 0ms fg
Proc mtk charger_hv_:
CPU: 0ms usr + 20ms krn ; 0ms fg
Proc vold:
CPU: 0ms usr + 10ms krn ; 0ms fg
Proc jbd2/mmcblk0p7-:
CPU: 0ms usr + 20ms krn ; 0ms fg
Proc pmic_thread_kth:
CPU: 0ms usr + 450ms krn ; 0ms fg
Proc kthreadd:
CPU: 0ms usr + 10ms krn ; 0ms fg
Proc btif_rxd:
CPU: 10ms usr + 0ms krn ; 0ms fg
Proc netd:
CPU: 10ms usr + 10ms krn ; 0ms fg
Proc mmcqd/0:
CPU: 0ms usr + 50ms krn ; 0ms fg
Proc kworker/u:0:
CPU: 0ms usr + 270ms krn ; 0ms fg
Proc kworker/u:2:
CPU: 0ms usr + 120ms krn ; 0ms fg
Proc kworker/0:2:
CPU: 0ms usr + 500ms krn ; 0ms fg
Proc zygote:
CPU: 20ms usr + 30ms krn ; 0ms fg
Proc flush-179:0:
CPU: 10ms usr + 0ms krn ; 0ms fg
Proc tx_thread:
CPU: 0ms usr + 100ms krn ; 0ms fg
Proc disp_clean_up_k:
CPU: 0ms usr + 20ms krn ; 0ms fg
Proc healthd:
CPU: 0ms usr + 100ms krn ; 0ms fg
Proc ueventd:
CPU: 0ms usr + 10ms krn ; 0ms fg
Proc bat_thread_kthr:
CPU: 0ms usr + 520ms krn ; 0ms fg
Proc disp_config_upd:
CPU: 0ms usr + 440ms krn ; 0ms fg
Proc ion_mm_heap:
CPU: 0ms usr + 20ms krn ; 0ms fg
Proc disp_ovl_kthrea:
CPU: 0ms usr + 110ms krn ; 0ms fg
1000:
User activity: 6 other, 1 button, 1 touch
Wake lock NetworkStats: 78ms partial (1 times) realtime
Wake lock ActivityManager-Launch: 78ms partial (1 times) realtime
Wake lock AlarmManager: 87ms partial (2 times) realtime
TOTAL wake: 243ms partial realtime
Sensor 0: 2m 22s 369ms realtime (0 times)
Vibrator: 100ms realtime (1 times)
Foreground activities: 129ms realtime (1 times)
Proc com.mediatek.schpwronoff:
CPU: 0ms usr + 10ms krn ; 0ms fg
Proc surfaceflinger:
CPU: 950ms usr + 1s 30ms krn ; 0ms fg
Proc com.android.settings:
CPU: 0ms usr + 0ms krn ; 730ms fg
Proc system_server:
CPU: 2s 680ms usr + 2s 230ms krn ; 0ms fg
Proc aal:
CPU: 60ms usr + 180ms krn ; 0ms fg
Proc servicemanager:
CPU: 0ms usr + 10ms krn ; 0ms fg
1001:
Proc com.android.phone:
CPU: 50ms usr + 20ms krn ; 0ms fg
1010:
Proc wpa_supplicant:
CPU: 10ms usr + 30ms krn ; 0ms fg
1013:
Wake lock AudioMix: 9s 52ms partial (4 times) realtime
Proc mediaserver:
CPU: 20ms usr + 30ms krn ; 0ms fg
1023:
Proc sdcard:
CPU: 0ms usr + 20ms krn ; 0ms fg
2000:
Proc adbd:
CPU: 110ms usr + 380ms krn ; 0ms fg
9997:
Proc em_svr:
CPU: 0ms usr + 40ms krn ; 0ms fg
u0a5:
Proc android.process.media:
CPU: 60ms usr + 0ms krn ; 0ms fg
Apk com.android.providers.media:
Service com.android.providers.media.MtpService:
Created for: 0ms uptime
Starts: 1, launches: 1
u0a8:
Wi-Fi network: 5.35KB received, 1.92KB sent
Wake lock Wakeful StateMachine: GeofencerStateMachine: 1ms partial (1 times) realtime
Wake lock GCoreFlp: 80ms partial (3 times) realtime
Wake lock UlrDispSvcFastWL: 166ms partial (2 times) realtime
Wake lock GCM_HB_ALARM: 4ms partial (1 times) realtime
Wake lock Event Log Service: 75ms partial (1 times) realtime
Wake lock GCM_CONN: 5ms partial (1 times) realtime
Wake lock Event Log Handoff: 7ms partial (1 times) realtime
Wake lock AlarmManager: 23ms partial (2 times) realtime
TOTAL wake: 361ms partial realtime
Proc com.google.android.gms:
CPU: 100ms usr + 40ms krn ; 0ms fg
Proc com.google.process.gapps:
CPU: 180ms usr + 70ms krn ; 0ms fg
Proc com.google.android.gms.persistent:
CPU: 1s 130ms usr + 300ms krn ; 0ms fg
Apk com.google.android.gms:
2 wakeup alarms
Service com.google.android.gms.config.ConfigService:
Created for: 0ms uptime
Starts: 0, launches: 1
Service com.google.android.gms.checkin.EventLogService:
Created for: 85ms uptime
Starts: 1, launches: 1
Service com.google.android.gms.gcm.http.GoogleHttpService:
Created for: 0ms uptime
Starts: 0, launches: 1
Service com.google.android.location.reporting.service.DispatchingService:
Created for: 268ms uptime
Starts: 1, launches: 1
Service com.google.android.gms.usagereporting.service.UsageReportingService:
Created for: 0ms uptime
Starts: 0, launches: 1
u0a13:
Proc com.android.systemui:
CPU: 810ms usr + 300ms krn ; 0ms fg
u0a18:
Proc com.lenovo.safecenter.hd:
CPU: 360ms usr + 120ms krn ; 0ms fg
u0a19:
Proc com.lenovo.lps.cloud.sync.row:
CPU: 0ms usr + 0ms krn ; 0ms fg
1 proc starts
u0a20:
Proc com.lenovo.lewea:
CPU: 40ms usr + 10ms krn ; 0ms fg
Apk com.lenovo.lewea:
Service com.lenovo.weather.service.UpdateAppWidgetService:
Created for: 84ms uptime
Starts: 2, launches: 2
u0a23:
Wake lock AlarmManager: 1ms partial (1 times) realtime
Wake lock PUSH_SERVICE_WAKE_LOCK: 3ms partial (1 times) realtime
TOTAL wake: 4ms partial realtime
Proc com.lenovo.lsf.device:
CPU: 30ms usr + 0ms krn ; 0ms fg
u0a24:
Wake lock AlarmManager: 32ms partial (1 times) realtime
Proc com.lenovo.ue.service:
CPU: 40ms usr + 10ms krn ; 0ms fg
u0a42:
(nothing executed)
u0a43:
Wake lock AlarmManager: 7ms partial (1 times) realtime
u0a58:
Proc com.google.android.inputmethod.latin:
CPU: 20ms usr + 0ms krn ; 0ms fg
u0a65:
(nothing executed)
u0a74:
Proc com.google.android.apps.plus:
CPU: 50ms usr + 30ms krn ; 0ms fg
Apk com.google.android.apps.plus:
(nothing executed)
u0a114:
Wi-Fi network: 243.13KB received, 14.51KB sent
Wake lock WindowManager: 2m 22s 191ms full (1 times) realtime
Foreground activities: 2m 22s 208ms realtime (1 times)
Proc com.devstring.imageframe:
CPU: 6s 300ms usr + 810ms krn ; 0ms fg
Statistics since last unplugged:
Time on battery: 2m 22s 369ms (86.9%) realtime, 2m 22s 369ms (86.9%) uptime
Total run time: 2m 43s 811ms realtime, 2m 43s 811ms uptime,
Screen on: 0ms (0.0%), Input events: 0, Active phone call: 0ms (0.0%)
Screen brightnesses: No activity
Mobile total received: 0B, Total sent: 0B
Wi-Fi total received: 249.09KB, Total sent: 18.02KB
Total full wakelock time: 2m 22s 191ms , Total partial wakelock time: 9s 697ms
Signal levels: No activity
Signal scanning time: 0ms
Radio types: none 2m 22s 369ms (100.0%) 0x
Radio data uptime when unplugged: 0 ms
Wifi on: 2m 22s 369ms (100.0%), Wifi running: 2m 22s 369ms (100.0%), Bluetooth on: 0ms (0.0%)
Device is currently plugged into power
Last discharge cycle start level: 100
Last discharge cycle end level: 100
Amount discharged while screen on: 0
Amount discharged while screen off: 0
All partial wake locks:
Wake lock 1013 AudioMix: 9s 52ms (4 times) realtime
Wake lock u0a8 UlrDispSvcFastWL: 166ms (2 times) realtime
Wake lock 1000 AlarmManager: 87ms (2 times) realtime
Wake lock u0a8 GCoreFlp: 80ms (3 times) realtime
Wake lock 1000 NetworkStats: 78ms (1 times) realtime
Wake lock 1000 ActivityManager-Launch: 78ms (1 times) realtime
Wake lock u0a8 Event Log Service: 75ms (1 times) realtime
Wake lock u0a24 AlarmManager: 32ms (1 times) realtime
Wake lock u0a8 AlarmManager: 23ms (2 times) realtime
Wake lock u0a43 AlarmManager: 7ms (1 times) realtime
Wake lock u0a8 Event Log Handoff: 7ms (1 times) realtime
Wake lock u0a8 GCM_CONN: 5ms (1 times) realtime
Wake lock u0a8 GCM_HB_ALARM: 4ms (1 times) realtime
Wake lock u0a23 PUSH_SERVICE_WAKE_LOCK: 3ms (1 times) realtime
Wake lock u0a23 AlarmManager: 1ms (1 times) realtime
Wake lock u0a8 Wakeful StateMachine: GeofencerStateMachine: 1ms (1 times) realtime
0:
Wi-Fi network: 632B received, 1.59KB sent
Proc /init:
CPU: 20ms usr + 80ms krn ; 0ms fg
Proc ksoftirqd/0:
CPU: 10ms usr + 0ms krn ; 0ms fg
Proc mtk charger_hv_:
CPU: 0ms usr + 20ms krn ; 0ms fg
Proc vold:
CPU: 0ms usr + 10ms krn ; 0ms fg
Proc jbd2/mmcblk0p7-:
CPU: 0ms usr + 20ms krn ; 0ms fg
Proc pmic_thread_kth:
CPU: 0ms usr + 450ms krn ; 0ms fg
Proc kthreadd:
CPU: 0ms usr + 10ms krn ; 0ms fg
Proc btif_rxd:
CPU: 10ms usr + 0ms krn ; 0ms fg
Proc netd:
CPU: 10ms usr + 10ms krn ; 0ms fg
Proc mmcqd/0:
CPU: 0ms usr + 50ms krn ; 0ms fg
Proc kworker/u:0:
CPU: 0ms usr + 270ms krn ; 0ms fg
Proc kworker/u:2:
CPU: 0ms usr + 120ms krn ; 0ms fg
Proc kworker/0:2:
CPU: 0ms usr + 500ms krn ; 0ms fg
Proc zygote:
CPU: 20ms usr + 30ms krn ; 0ms fg
Proc flush-179:0:
CPU: 10ms usr + 0ms krn ; 0ms fg
Proc tx_thread:
CPU: 0ms usr + 100ms krn ; 0ms fg
Proc disp_clean_up_k:
CPU: 0ms usr + 20ms krn ; 0ms fg
Proc healthd:
CPU: 0ms usr + 100ms krn ; 0ms fg
Proc ueventd:
CPU: 0ms usr + 10ms krn ; 0ms fg
Proc bat_thread_kthr:
CPU: 0ms usr + 520ms krn ; 0ms fg
Proc disp_config_upd:
CPU: 0ms usr + 440ms krn ; 0ms fg
Proc ion_mm_heap:
CPU: 0ms usr + 20ms krn ; 0ms fg
Proc disp_ovl_kthrea:
CPU: 0ms usr + 110ms krn ; 0ms fg
1000:
User activity: 6 other, 1 button, 1 touch
Wake lock NetworkStats: 78ms partial (1 times) realtime
Wake lock ActivityManager-Launch: 78ms partial (1 times) realtime
Wake lock AlarmManager: 87ms partial (2 times) realtime
TOTAL wake: 243ms partial realtime
Sensor 0: 2m 22s 369ms realtime (0 times)
Vibrator: 100ms realtime (1 times)
Foreground activities: 129ms realtime (1 times)
Proc com.mediatek.schpwronoff:
CPU: 0ms usr + 10ms krn ; 0ms fg
Proc surfaceflinger:
CPU: 950ms usr + 1s 30ms krn ; 0ms fg
Proc com.android.settings:
CPU: 0ms usr + 0ms krn ; 730ms fg
Proc system_server:
CPU: 2s 680ms usr + 2s 230ms krn ; 0ms fg
Proc aal:
CPU: 60ms usr + 180ms krn ; 0ms fg
Proc servicemanager:
CPU: 0ms usr + 10ms krn ; 0ms fg
1001:
Proc com.android.phone:
CPU: 50ms usr + 20ms krn ; 0ms fg
1010:
Proc wpa_supplicant:
CPU: 10ms usr + 30ms krn ; 0ms fg
1013:
Wake lock AudioMix: 9s 52ms partial (4 times) realtime
Proc mediaserver:
CPU: 20ms usr + 30ms krn ; 0ms fg
1023:
Proc sdcard:
CPU: 0ms usr + 20ms krn ; 0ms fg
2000:
Proc adbd:
CPU: 110ms usr + 380ms krn ; 0ms fg
9997:
Proc em_svr:
CPU: 0ms usr + 40ms krn ; 0ms fg
u0a5:
Proc android.process.media:
CPU: 60ms usr + 0ms krn ; 0ms fg
Apk com.android.providers.media:
Service com.android.providers.media.MtpService:
Created for: 0ms uptime
Starts: 1, launches: 1
u0a8:
Wi-Fi network: 5.35KB received, 1.92KB sent
Wake lock Wakeful StateMachine: GeofencerStateMachine: 1ms partial (1 times) realtime
Wake lock GCoreFlp: 80ms partial (3 times) realtime
Wake lock UlrDispSvcFastWL: 166ms partial (2 times) realtime
Wake lock GCM_HB_ALARM: 4ms partial (1 times) realtime
Wake lock Event Log Service: 75ms partial (1 times) realtime
Wake lock GCM_CONN: 5ms partial (1 times) realtime
Wake lock Event Log Handoff: 7ms partial (1 times) realtime
Wake lock AlarmManager: 23ms partial (2 times) realtime
TOTAL wake: 361ms partial realtime
Proc com.google.android.gms:
CPU: 100ms usr + 40ms krn ; 0ms fg
Proc com.google.process.gapps:
CPU: 180ms usr + 70ms krn ; 0ms fg
Proc com.google.android.gms.persistent:
CPU: 1s 130ms usr + 300ms krn ; 0ms fg
Apk com.google.android.gms:
2 wakeup alarms
Service com.google.android.gms.config.ConfigService:
Created for: 0ms uptime
Starts: 0, launches: 1
Service com.google.android.gms.checkin.EventLogService:
Created for: 85ms uptime
Starts: 1, launches: 1
Service com.google.android.gms.gcm.http.GoogleHttpService:
Created for: 0ms uptime
Starts: 0, launches: 1
Service com.google.android.location.reporting.service.DispatchingService:
Created for: 268ms uptime
Starts: 1, launches: 1
Service com.google.android.gms.usagereporting.service.UsageReportingService:
Created for: 0ms uptime
Starts: 0, launches: 1
u0a13:
Proc com.android.systemui:
CPU: 810ms usr + 300ms krn ; 0ms fg
u0a18:
Proc com.lenovo.safecenter.hd:
CPU: 360ms usr + 120ms krn ; 0ms fg
u0a19:
Proc com.lenovo.lps.cloud.sync.row:
CPU: 0ms usr + 0ms krn ; 0ms fg
1 proc starts
u0a20:
Proc com.lenovo.lewea:
CPU: 40ms usr + 10ms krn ; 0ms fg
Apk com.lenovo.lewea:
Service com.lenovo.weather.service.UpdateAppWidgetService:
Created for: 84ms uptime
Starts: 2, launches: 2
u0a23:
Wake lock AlarmManager: 1ms partial (1 times) realtime
Wake lock PUSH_SERVICE_WAKE_LOCK: 3ms partial (1 times) realtime
TOTAL wake: 4ms partial realtime
Proc com.lenovo.lsf.device:
CPU: 30ms usr + 0ms krn ; 0ms fg
u0a24:
Wake lock AlarmManager: 32ms partial (1 times) realtime
Proc com.lenovo.ue.service:
CPU: 40ms usr + 10ms krn ; 0ms fg
u0a42:
(nothing executed)
u0a43:
Wake lock AlarmManager: 7ms partial (1 times) realtime
u0a58:
Proc com.google.android.inputmethod.latin:
CPU: 20ms usr + 0ms krn ; 0ms fg
u0a65:
(nothing executed)
u0a74:
Proc com.google.android.apps.plus:
CPU: 50ms usr + 30ms krn ; 0ms fg
Apk com.google.android.apps.plus:
(nothing executed)
u0a114:
Wi-Fi network: 243.13KB received, 14.51KB sent
Wake lock WindowManager: 2m 22s 191ms full (1 times) realtime
Foreground activities: 2m 22s 208ms realtime (1 times)
Proc com.devstring.imageframe:
CPU: 6s 300ms usr + 810ms krn ; 0ms fg
Command:
adb shell dumpsys batterystats > batterystats.txt
python historian.py batterystats.txt > batterystats.html
batterystats.html shows cannot find end time
I have referred to Displaying "Cannot find endtime" on Using hisorian.py
EDIT1
When I'm testing with a different device . no such error is generated. But every time this devices battery stats is giving no end time error
EDIT 2 Different versions of android have different dumpsys formats and the battery historian seems to be compatible with the newer version. To generate the chart I commentent line 646 to 649 i.e
#if not self._end_time:
#print "cannot find end time"
#sys.exit(1)
Although its a hack, my device is Android 4.4 and its battery dumpsys does not give app wise battery usage but android 5.2 devices do so.
回答1:
Looks as if something within the parse_end_time
function try and except statement is causing _end_time
to not get defined, I'm looking here. Line 646 is where the actual error is being produced. If I had to take a guess, I'd say it's this line line = line.split("dumpstate: ", 1)[1]
. Looks like line
is coming from your input file for line in fileinput.input(input_file):
, does your batterystats.txt have this dumpstate line? You could try commenting out lines 646-648 that stop the script and see if having the "end time" is really necessary or not.
Edit: Whoops, your batterystats.txt was included- and no "dumpstate" line... Which means that if "dumpstate:" in line:
(line 640) was never True, and _end_time
was never defined. Hope this helps you in some way. Let me know.
回答2:
Although its late but, for current version of battery-historian.py
solution is to use Android 5.0+ API, different versions supported different formats of battery statistics log. Current historian.py
is working well with 5.0+, below versions and it will crash or will not display charts (this is tested on 6.0).
If you know python, and how to read battery stats file, you can edit code for your flavour of android, but it is time consuming task. You can also write your own parser in another language but it will be like re-inventing the wheel.
One thing I did not try was to clone an older version of battery-historian
repo, maybe if there is available, it might work with older version of android depending how old the repo is. (not tested)
UPDATE:
On looking at the commit history of battery-historian repo, I can see there are commits as old as June 2014, while Android L (5.0) Developer Preview release was in August 2014, so there is a fair chance that commits older than Android 5.0 will work on devices that are <5.0.
回答3:
This is not the exact solution for the above question but it will help to monitor the same stuff that you are trying to figure out with dumpsys batterystats. Please go through this link in which Colt has mentioned the other way round to get the stats.Colt's Unofficial guide to getting started with Battery Historian
And in his comment he has mentioned
Historian only works from the bugreport content
Using Battery Historian The battery historian tool will process a battery stats dump, and create the visual report for you.
Recording data adb shell dumpsys
batterystats --reset
Reset the battery data"Do your work here" Pro-Tip: Unplug your device for this work, that way you’ll see true battery draw numbers. (remember to plug it back in before the next step!)
Grab the data
adb bugreport >bugreport.txt
Convert to battery historian
python historian.py bugreport.txt >out.html
I'd be grateful for any feedback or criticism that I can learn from or use to help me improve my answer. Thank you
来源:https://stackoverflow.com/questions/34487749/battery-historian-cannot-find-end-time-android