platform_system_core/bootstat
Josh Gao 69d2f98197 adb: fix fd double close, Subprocess lifetime issue.
This commit fixes two somewhat related issues in shell_service.

  - The fd returned by StartSubprocess is owned by a unique_fd
    contained in the Subprocess object, but also gets closed by the
    caller. Resolve this by duping the returned file descriptor.

  - A Subprocess object can be destroyed immediately after its initial
    construction in StartSubprocess if we're sufficiently unlucky.
    Split up the fork/exec and "start management thread" steps, so that
    we can safely do everything we need to do on the Subprocess before
    handing it over to the thread that'll eventually destroy it.

Also includes squashed patches from AOSP master that allow for use of
unique_fd inside adb.

Bug: http://b/29254462
Change-Id: Id9cf0b7e7a7293bee7176919edc758597691c636
(cherry picked from commit c0e6e40cc9)
(cherry picked from commit 54c72aaccc)
(cherry picked from commit 2c5d1d7cd9)
(cherry picked from commit 2a7b86337f)
(cherry picked from commit 13ea01db45)
(cherry picked from commit 344778da41)
2016-06-20 14:51:05 -07:00
..
Android.mk bootstat: Track record inconsistencies w/ a debug metric, bootstat_mtime_matches_content. 2016-03-23 10:41:03 -07:00
README.md bootstat: Record the time since factory reset on init. 2016-02-24 13:19:46 -08:00
boot_event_record_store.cpp Revert "Revert "bootstat: Handle v1 record files which do not contain file contents."" 2016-03-28 13:37:16 -07:00
boot_event_record_store.h Revert "Revert "bootstat: Handle v1 record files which do not contain file contents."" 2016-03-28 13:37:16 -07:00
boot_event_record_store_test.cpp adb: fix fd double close, Subprocess lifetime issue. 2016-06-20 14:51:05 -07:00
bootstat.cpp bootstat: Differentiate system update boot times. 2016-04-11 10:17:46 -07:00
bootstat.rc bootstat: Disambiguate boot time on encrypted devices. 2016-03-14 14:27:35 -07:00
event_log_list_builder.cpp bootstat: Fix the build on git_mnc-dr1.5-dev-plus-aosp by adding missing 2016-01-22 11:07:51 -08:00
event_log_list_builder.h bootstat: Fix the base includes to be AOSP-friendly. 2016-01-20 01:28:48 +00:00
event_log_list_builder_test.cpp system/core: Add initial implementation of the bootstat command. 2016-01-19 15:10:38 -08:00
histogram_logger.cpp bootstat: Track record inconsistencies w/ a debug metric, bootstat_mtime_matches_content. 2016-03-23 10:41:03 -07:00
histogram_logger.h bootstat: Track record inconsistencies w/ a debug metric, bootstat_mtime_matches_content. 2016-03-23 10:41:03 -07:00
testrunner.cpp bootstat: Fix the base includes to be AOSP-friendly. 2016-01-20 01:28:48 +00:00
uptime_parser.cpp bootstat: Disambiguate boot time on encrypted devices. 2016-03-14 14:27:35 -07:00
uptime_parser.h bootstat: Disambiguate boot time on encrypted devices. 2016-03-14 14:27:35 -07:00

README.md

bootstat

The bootstat command records boot events (e.g., firmware_loaded, boot_complete) and the relative time at which these events occurred. The command also aggregates boot event metrics locally and logs the metrics for analysis.

Usage: bootstat [options]
options include:
  -h, --help            Show this help
  -l, --log             Log all metrics to logstorage
  -p, --print           Dump the boot event records to the console
  -r, --record          Record the timestamp of a named boot event
  --record_boot_reason  Record the reason why the device booted
  --record_time_since_factory_reset Record the time since the device was reset

Relative time

The timestamp recorded by bootstat is the uptime of the system, i.e., the number of seconds since the system booted.

Recording boot events

To record the relative time of an event during the boot phase, call bootstat with the -r option and the name of the boot event.

$ bootstat -r boot_complete

The relative time at which the command runs is recorded along with the name of the boot event to be persisted.

Logging boot events

To log the persisted boot events, call bootstat with the -l option.

$ bootstat -l

bootstat logs all boot events recorded using the -r option to the EventLog using the Tron histogram. These logs may be uploaded by interested parties for aggregation and analysis of boot time across different devices and versions.

Printing boot events

To print the set of persisted boot events, call bootstat with the -p option.

$ bootstat -p
Boot events:
------------
boot_complete   71