blob: d74b41d307f2c3085d3428cc6f0a5b29e0a28bb0 [file] [log] [blame]
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;
}