| # CrOS bootstat |
| |
| This is the Chromium OS 'bootstat' utility. The utility is used |
| to generate timestamps and other performance statistics during |
| system boot. |
| |
| ## CLI Specification |
| |
| ### bootstat |
| |
| ```sh |
| bootstat <event-name> |
| ``` |
| |
| This command gathers and records the contents of `/proc/uptime` and disk |
| statistics for the boot disk (the full disk, not the boot partition), and |
| associates the data with the passed in `<event-name>`. |
| |
| ### bootstat_get_last |
| |
| ```sh |
| bootstat_get_last <event-name> [ <stat> [before <value>] ... ] |
| ``` |
| |
| Print on standard output the value of the selected statistics recorded when |
| the specified event occurred. These are the available statistics: |
| |
| * `time`: Total time since kernel startup at the time of the event. |
| * `time-ms`: Total time since kernel startup at the time of the event |
| converted to milliseconds. |
| * `read-sectors`: Total sectors read from any partition of the boot device |
| since kernel startup. |
| * `write-sectors`: Total sectors written to any partition of the boot device |
| since kernel startup. |
| |
| If multiple statistics are requested, they are reported in order, one |
| per line. If no statistics are listed on the command line, the |
| default is to report `time`. |
| |
| If an event has occurred more than once since kernel startup, only |
| the statistics from the last occurrence are reported. |
| |
| If the `before` <value> option is specified after the statistics name the |
| reported event will be from the last occurrence having value less than the |
| specified `before` value. This way for time events it returns the last event |
| happened before the specified time. For the sectors count statistics it will |
| return values that are strictly less than the value specified. |
| |
| ## API Specification |
| |
| The C and C++ API is defined in [`bootstat.h`](./bootstat.h). |
| See that header for specification details. |
| |
| ## Design and Implementation Details |
| |
| Uptime data are stored in a file named `/run/bootstat/uptime-<event-name>`; |
| disk statistics are stored in a file named `/run/bootstat/disk-<event-name>`. |
| This convention is a concession to pre-existing code that depends on |
| these files existing with these specific names, including the |
| [platform.BootPerf] test, the boot-complete upstart job, |
| and the Chrome code to report boot time on the login screen. |
| |
| New code should treat the file names as an implementation detail, |
| not as the interface. You should not add new code that depends on |
| the file names; instead, you should enhance the bootstat command |
| and/or library to provide access to the data you need. |
| |
| [platform.BootPerf]: https://chromium.googlesource.com/chromiumos/platform/tast-tests/+/HEAD/src/chromiumos/tast/remote/bundles/cros/platform/boot_perf.go |