Improve PackageManager snapshot statistics
Bug: 184751735
This makes some small improvements to the snapshot statistics.
The change emphasizes long rebuild times over short snapshot
lifetimes.
1. The pm_snapshot_rebuild "elapsed" field is renamed "lifetime".
This is the number of times the previous snapshot (the snapshot
that was replaced by this rebuild) was used.
2. The pm_snapshot_stats cumulative build time is now a long.
Wrap-around of the 32-bit int was seen during testing. Also, the
"quick_rebuilds" has been renamed to "short_lived".
3. pm_snapshot_rebuild events are only logged for long rebuild times.
Short lifetimes are still counted but do not generate their own
events. Also, any rebuild time that is greater than the current
maximum rebuild time is logged, even if the number of logged events
is greater than the limit.
4. Snapshot statistics are included in the package manager dump. Two
sets of statistics are presented: there is a set of 10, rolling
over every minute, and a set of two, rolling over every week.
The snapshot statistics are part of the default "package" dumpsys
output and can be selected individually with "package snapshot".
5. The SnapshotStatistics class is now in its own file. At the
momement, the class has code that is specific to
PackageManagerService, but it should be possible to make the class
more generic in the future, if desired.
See the bug for sample output.
Test: manual steps -
* Create a bug report and verify that the new statistics are present.
* Verify that pm_snapshot_rebuild events are generated for long
rebuild times.
Change-Id: I3197d6b76e86ecfcdaff36f47e8a6b5d4a6e456d
4 files changed