| syntax = "proto2"; |
| |
| package android.os.statsd.wearpas; |
| |
| option java_package = "com.android.os.wearpas"; |
| |
| import "frameworks/proto_logging/stats/atoms.proto"; |
| import "frameworks/proto_logging/stats/atom_field_options.proto"; |
| |
| extend Atom { |
| optional WearAdaptiveSuspendStatsReported wear_adaptive_suspend_stats_reported = 619 [(module) = "wearpas"]; |
| |
| optional WearPowerAnomalyServiceOperationalStatsReported wear_power_anomaly_service_operational_stats_reported = 620 [(module) = "wearpas"]; |
| |
| optional WearPowerAnomalyServiceEventStatsReported wear_power_anomaly_service_event_stats_reported = 621 [(module) = "wearpas"]; |
| } |
| |
| /** |
| * Logs cumulative stats about the Adaptive Suspend algorithm |
| */ |
| message WearAdaptiveSuspendStatsReported { |
| /* Elapsed time covered by the data in this interval */ |
| optional int32 data_interval_millis = 1; |
| |
| /* Number of suspend attempts during this interval */ |
| optional int32 total_suspend_attempts = 2; |
| |
| /** |
| * Number of suspend attempts that failed during this interval, a subset of |
| * total_suspend_attempts |
| */ |
| optional int32 total_failed_suspends = 3; |
| |
| /** |
| * Number of successful suspends with duration < configured break-even during |
| * this interval. |
| */ |
| optional int32 total_short_suspends = 4; |
| |
| /** |
| * Time spent in suspend with duration >= configured break-even, |
| * during this interval. |
| */ |
| optional int32 time_suspended_long_millis = 5; |
| |
| /** |
| * Time spent in suspend with duration < configured break-even, |
| * during this interval |
| */ |
| optional int32 time_suspended_short_millis = 6; |
| |
| /** |
| * The break-even time configured from the server based on local offline power |
| * testing. |
| */ |
| optional int32 break_even_millis = 7; |
| |
| /** |
| * Time spent doing suspend/resume work for all successful suspends during |
| * this interval, regardless of short vs long suspend duration. |
| */ |
| optional int32 time_suspending_success_millis = 8; |
| |
| /** |
| * Time spent doing suspend/resume work for all failed suspend attempts during |
| * this interval. |
| */ |
| optional int32 time_suspending_fail_millis = 9; |
| |
| /** |
| * Number of times suspend backoff started during this interval. |
| */ |
| optional int32 new_backoffs = 10; |
| |
| /** |
| * Number of times suspend backoff continued, either multiplying the backoff |
| * or remaining at the max backoff, during this interval. |
| */ |
| optional int32 backoff_continuations = 11; |
| |
| /** |
| * Time spent in backoff during this interval. i.e. Total of individual |
| * backoff durations, each of which is measured from the moment a "new |
| * backoff" is initiated to the time beginning of the successful suspend that |
| * causes backoff to end, which will be some time before the backoff is |
| * actually ended. |
| */ |
| optional int32 time_backed_off_millis = 12; |
| |
| /** |
| * A randomly selected suspend duration, to establish aggregate distributions |
| */ |
| optional int32 sampled_suspend_duration_millis = 13; |
| } |
| |
| /** |
| * Logs cumulative stats about the Power Anomaly Service |
| */ |
| message WearPowerAnomalyServiceOperationalStatsReported { |
| /* Duration of the monitoring operation */ |
| optional int32 monitoring_duration_millis = 1; |
| |
| /* Elapsed time between the start of the previous operation and this one */ |
| optional int32 interval_duration_millis = 2; |
| |
| /* Current flash storage size used by PAS */ |
| optional int32 persist_size = 3; |
| |
| /** |
| * 1 if PAS had to start from cold (i.e. perform initialization), 0 if it was |
| * still resident in memory from a previous operation. This is an int32 for |
| * cumulative metrics. |
| */ |
| optional int32 cold_start = 4; |
| |
| /* Number of data provider errors encountered */ |
| optional int32 data_provider_error_count = 5; |
| |
| /* Number of rule evaluation errors encountered */ |
| optional int32 rule_evaluation_error_count = 6; |
| |
| /* Number of reaction handling errors encountered */ |
| optional int32 reaction_error_count = 7; |
| |
| /** |
| * Number of infrastructure errors encountered (e.g. storage, cross-app comms, |
| * config access, etc) |
| */ |
| optional int32 infrastructure_error_count = 8; |
| |
| /** |
| * Total number of new anomalies detected during the just-completed operation |
| */ |
| optional int32 new_anomaly_count = 9; |
| |
| /** |
| * Total anomalies active at the end of the just-completed operation |
| * (including previously detected anomalies) |
| */ |
| optional int32 active_anomaly_count = 10; |
| } |
| |
| /** |
| * Logs event stats about the Power Anomaly Service |
| */ |
| message WearPowerAnomalyServiceEventStatsReported { |
| enum EntityType { |
| UNDEFINED = 0; |
| POWER_RAIL = 1; |
| SUBSYSTEM_RESIDENCY = 2; |
| KERNEL_SUSPEND = 3; |
| KERNEL_WAKE_REASON = 4; |
| CPU_TIME = 5; |
| KERNEL_WAKESOURCE = 6; |
| NATIVE_WAKELOCK = 7; |
| FRAMEWORK_WAKELOCK = 8; |
| COULOMB_COUNTER = 9; |
| NOTIFICATIONS = 10; |
| USAGE_SCALAR = 11; |
| USAGE_RESIDENCY = 12; |
| BLUETOOTH = 13; |
| } |
| |
| enum Status { |
| STATUS_UNSPECIFIED = 0; |
| |
| /** |
| * If the triggered anomaly rule does not have additional reactions beyond |
| * "WW stats" and "bugreport", this will be sent once upon detection. |
| */ |
| NEW_NO_REACTIONS = 1; |
| |
| /** |
| * If the triggered anomaly rule does have additional reactions, this will |
| * be sent once upon detection and be followed by one of |
| * {RESOLVED_POST_REACTIONS, UNRESOLVED_POST_REACTIONS} |
| */ |
| NEW_REACTIONS_PENDING = 2; |
| |
| /** |
| * Following an anomaly with additional reactions, this will be sent if the |
| * reactions have resolved the anomaly. |
| */ |
| RESOLVED_POST_REACTIONS = 3; |
| |
| /** |
| * Following an anomaly with additional reactions, this will be sent if the |
| * reactions have not resolved the anomaly. |
| */ |
| UNRESOLVED_POST_REACTIONS = 4; |
| |
| /** |
| * Following an anomaly with bugreport triggering enabled, this will be sent |
| * if a bugreport is actually triggered (e.g. if rate limiting allows). |
| */ |
| BUGREPORT_TRIGGERED = 5; |
| } |
| |
| /* Power entity type for which an anomaly was detected */ |
| optional EntityType entity_type = 1; |
| |
| /* Name of the power entity showing anomalous behavior */ |
| optional string entity_name = 2; |
| |
| /** |
| * Anomaly rule ID (from the PAS configuration rules distributed via |
| * Phenotype) |
| */ |
| optional int32 rule_id = 3; |
| |
| /** |
| * Resource ID (cross-device) for standard Google stock apps/resources |
| * (ONLY FACTORY GOOGLE FLASHED APPS). Mapping is stored server-side. |
| */ |
| optional int32 resource_holder_id = 4; |
| |
| /* The current status of the anomaly */ |
| optional Status status = 5; |
| } |