![]() Report kernel_panic,sysrq,livelock,<state> reboot reason via last dmesg (pstore console). Add ro.llk.killtest property, which will allow reliable ABA platforms to drop kill test and go directly to kernel panic. This should also allow some manual unit testing of the canonical boot reason report. New canonical boot reasons from llkd are: - kernel_panic,sysrq,livelock,alarm llkd itself locked up (Hail Mary) - kernel_panic,sysrq,livelock,driver uninterrruptible D state - kernel_panic,sysrq,livelock,zombie uninterrruptible Z state Manual test assumptions: - llkd is built by the platform and landed on system partition - unit test is built and landed in /data/nativetest (could land in /data/nativetest64, adjust test correspondingly) - llkd not enabled, ro.llk.enable and ro.llk.killtest are not set by platform allowing test to adjust all the configuration properties and start llkd. - or, llkd is enabled, ro.llk.enable is true, and killtest is disabled, ro.llk.killtest is false, setup by the platform. This breaks the go/apct generic operations of the unit test for llk.zombie and llk.driver as kernel panic results requiring manual intervention otherwise. If test moves to go/apct, then we will be forced to bypass these tests under this condition (but allow them to run if ro.llk.killtest is "off" so specific testing above/below can be run). for i in driver zombie; do adb shell su root setprop ro.llk.killtest off adb shell /data/nativetest/llkd_unit_test/llkd_unit_test --gtest_filter=llkd.${i} adb wait-for-device adb shell su root setprop ro.llk.killtest off sleep 60 adb shell getprop sys.boot.reason adb shell /data/nativetest/llkd_unit_test/llkd_unit_test --gtest_filter=llkd.${i} done Test: llkd_unit_test (see test assumptions) Bug: 33808187 Bug: 72838192 Change-Id: I2b24875376ddfdbc282ba3da5c5b3567de85dbc0 |
||
---|---|---|
.. | ||
.clang-format | ||
Android.bp | ||
AndroidTest.xml | ||
OWNERS | ||
README.md | ||
boot_event_record_store.cpp | ||
boot_event_record_store.h | ||
boot_event_record_store_test.cpp | ||
boot_reason_test.sh | ||
bootstat-debug.rc | ||
bootstat.cpp | ||
bootstat.rc | ||
testrunner.cpp |
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