262 lines
7.8 KiB
Protocol Buffer
262 lines
7.8 KiB
Protocol Buffer
/*
|
|
* Copyright (C) 2021 The Android Open Source Project
|
|
*
|
|
* Licensed under the Apache License, Version 2.0 (the "License");
|
|
* you may not use this file except in compliance with the License.
|
|
* You may obtain a copy of the License at
|
|
*
|
|
* http://www.apache.org/licenses/LICENSE-2.0
|
|
*
|
|
* Unless required by applicable law or agreed to in writing, software
|
|
* distributed under the License is distributed on an "AS IS" BASIS,
|
|
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
|
* See the License for the specific language governing permissions and
|
|
* limitations under the License.
|
|
*/
|
|
|
|
// Partial clone of frameworks/proto_logging/stats/atoms.proto. CarWatchdogService only uses small
|
|
// number of atoms.
|
|
|
|
syntax = "proto2";
|
|
|
|
package android.car.watchdog;
|
|
option java_package = "com.android.car.watchdog";
|
|
option java_outer_classname = "AtomsProto";
|
|
|
|
/**
|
|
* Logs the current state of an application/process before it is killed.
|
|
*
|
|
* Keep in sync with proto file at frameworks/proto_logging/stats/atoms.proto
|
|
*/
|
|
message CarWatchdogKillStatsReported {
|
|
// Linux process uid for the package.
|
|
optional int32 uid = 1;
|
|
|
|
// State of the uid when it was killed.
|
|
enum UidState {
|
|
UNKNOWN_UID_STATE = 0;
|
|
BACKGROUND_MODE = 1;
|
|
FOREGROUND_MODE = 2;
|
|
}
|
|
optional UidState uid_state = 2;
|
|
|
|
// System state indicating whether the system was in normal mode or garage mode.
|
|
enum SystemState {
|
|
UNKNOWN_SYSTEM_STATE = 0;
|
|
USER_INTERACTION_MODE = 1;
|
|
USER_NO_INTERACTION_MODE = 2;
|
|
GARAGE_MODE = 3;
|
|
}
|
|
optional SystemState system_state = 3;
|
|
|
|
// Reason for killing the application.
|
|
// Keep in sync with proto file at packages/services/Car/cpp/watchdog/proto
|
|
enum KillReason {
|
|
UNKNOWN_KILL_REASON = 0;
|
|
KILLED_ON_ANR = 1;
|
|
KILLED_ON_IO_OVERUSE = 2;
|
|
KILLED_ON_MEMORY_OVERUSE = 3;
|
|
}
|
|
optional KillReason kill_reason = 4;
|
|
|
|
// Stats of the processes owned by the application when the application was killed.
|
|
// The process stack traces are not collected when the application was killed due to IO_OVERUSE.
|
|
optional CarWatchdogProcessStats process_stats = 5;
|
|
|
|
// The application's I/O overuse stats logged only when the kill reason is KILLED_ON_IO_OVERUSE.
|
|
optional CarWatchdogIoOveruseStats io_overuse_stats = 6;
|
|
}
|
|
|
|
/**
|
|
* Logs the I/O overuse stats for an application on detecting I/O overuse.
|
|
*
|
|
* Keep in sync with proto file at frameworks/proto_logging/stats/atoms.proto
|
|
*/
|
|
message CarWatchdogIoOveruseStatsReported {
|
|
// Linux process uid for the package.
|
|
optional int32 uid = 1;
|
|
|
|
// The application's I/O overuse stats.
|
|
optional CarWatchdogIoOveruseStats io_overuse_stats = 2;
|
|
}
|
|
|
|
/**
|
|
* Logs I/O overuse stats for a package.
|
|
*
|
|
* Keep in sync with proto file at frameworks/proto_logging/stats/atoms.proto
|
|
*/
|
|
message CarWatchdogIoOveruseStats {
|
|
enum Period {
|
|
UNKNOWN_PERIOD = 0;
|
|
DAILY = 1;
|
|
WEEKLY = 2;
|
|
}
|
|
|
|
// Threshold and usage stats period.
|
|
optional Period period = 1;
|
|
|
|
// Threshold in-terms of write bytes defined for the package.
|
|
optional CarWatchdogPerStateBytes threshold = 2;
|
|
|
|
// Number of write bytes in each state for the specified period.
|
|
optional CarWatchdogPerStateBytes written_bytes = 3;
|
|
|
|
// Application or service uptime during the aforemetioned period.
|
|
optional uint64 uptime_millis = 4;
|
|
};
|
|
|
|
/**
|
|
* Logs bytes attributed to each application and system states.
|
|
*
|
|
* Keep in sync with proto file at frameworks/proto_logging/stats/atoms.proto
|
|
*/
|
|
message CarWatchdogPerStateBytes {
|
|
// Number of bytes attributed to the application foreground.
|
|
optional int64 foreground_bytes = 1;
|
|
|
|
// Number of bytes attributed to the application background.
|
|
optional int64 background_bytes = 2;
|
|
|
|
// Number of bytes attributed to the garage mode.
|
|
optional int64 garage_mode_bytes = 3;
|
|
}
|
|
|
|
/**
|
|
* Logs each CarWatchdogProcessStat in CarWatchdogProcessStats.
|
|
*
|
|
* Keep in sync with proto file at frameworks/proto_logging/stats/atoms.proto
|
|
*/
|
|
message CarWatchdogProcessStats {
|
|
// Records the stats of the processes owned by an application.
|
|
repeated CarWatchdogProcessStat process_stat = 1;
|
|
}
|
|
|
|
/**
|
|
* Logs a process's stats.
|
|
*
|
|
* Keep in sync with proto file at frameworks/proto_logging/stats/atoms.proto
|
|
*/
|
|
message CarWatchdogProcessStat {
|
|
// Command name of the process.
|
|
optional string process_name = 1;
|
|
|
|
// Process uptime.
|
|
optional uint64 uptime_millis = 2;
|
|
|
|
// Number of major page faults caused by the process and its children.
|
|
optional uint64 major_page_faults = 3;
|
|
|
|
// Peak virtual memory size in kb.
|
|
optional uint64 vm_peak_kb = 4;
|
|
|
|
// Virtual memory size in kb.
|
|
optional uint64 vm_size_kb = 5;
|
|
|
|
// Peak resident set size (high water mark) in kb.
|
|
optional uint64 vm_hwm_kb = 6;
|
|
|
|
// Resident set size in kb.
|
|
optional uint64 vm_rss_kb = 7;
|
|
}
|
|
|
|
/**
|
|
* Logs total I/O usage summary for all applications and services running in the system.
|
|
*
|
|
* Keep in sync with proto file at
|
|
* packages/services/Car/service/src/com/android/car/watchdog/proto/atoms.proto
|
|
*
|
|
* Pulled from:
|
|
* packages/services/Car/service/src/com/android/car/watchdog/WatchdogPerfHandler.java
|
|
*/
|
|
message CarWatchdogSystemIoUsageSummary {
|
|
// I/O usage summary for the system.
|
|
optional CarWatchdogIoUsageSummary io_usage_summary = 1;
|
|
|
|
// Start time of the event in milliseconds since epoch.
|
|
// Note: This field must be a top-level field as it is used to slice the metrics.
|
|
optional int64 start_time_millis = 2;
|
|
}
|
|
|
|
/**
|
|
* Logs I/O usage summary for an UID.
|
|
*
|
|
* Keep in sync with proto file at
|
|
* packages/services/Car/service/src/com/android/car/watchdog/proto/atoms.proto
|
|
*
|
|
* Pulled from:
|
|
* packages/services/Car/service/src/com/android/car/watchdog/WatchdogPerfHandler.java
|
|
*/
|
|
message CarWatchdogUidIoUsageSummary {
|
|
// UID of the application/service whose usage summary are recorded.
|
|
optional int32 uid = 1;
|
|
|
|
// I/O usage summary for the UID.
|
|
optional CarWatchdogIoUsageSummary io_usage_summary = 2;
|
|
|
|
// Start time of the event in milliseconds since epoch.
|
|
// Note: This field must be a top-level field as it is used to slice the metrics.
|
|
optional int64 start_time_millis = 3;
|
|
}
|
|
|
|
/**
|
|
* Logs I/O usage summary for a time period.
|
|
*
|
|
* Keep in sync with proto file at
|
|
* packages/services/Car/service/src/com/android/car/watchdog/proto/atoms.proto
|
|
*
|
|
* Pulled from:
|
|
* packages/services/Car/service/src/com/android/car/watchdog/WatchdogPerfHandler.java
|
|
*/
|
|
message CarWatchdogIoUsageSummary {
|
|
// Summary event time period.
|
|
optional CarWatchdogEventTimePeriod event_time_period = 1;
|
|
|
|
// Daily I/O usage summary for the period. Logs summary entries only for days with I/O usage.
|
|
// The entries are ordered beginning from the event_time_period.start_time_millis.
|
|
repeated CarWatchdogDailyIoUsageSummary daily_io_usage_summary = 2;
|
|
}
|
|
|
|
/**
|
|
* Logs a car watchdog event's time period.
|
|
*
|
|
* Keep in sync with proto file at
|
|
* packages/services/Car/service/src/com/android/car/watchdog/proto/atoms.proto
|
|
*
|
|
* Pulled from:
|
|
* packages/services/Car/service/src/com/android/car/watchdog/WatchdogPerfHandler.java
|
|
*/
|
|
message CarWatchdogEventTimePeriod {
|
|
enum Period {
|
|
UNKNOWN_PERIOD = 0;
|
|
WEEKLY = 1;
|
|
BIWEEKLY = 2;
|
|
MONTHLY = 3;
|
|
}
|
|
|
|
// Deprecated field - Start time of the event in milliseconds since epoch.
|
|
optional uint64 start_time_millis = 1 [deprecated = true];
|
|
|
|
// Period for the event.
|
|
optional Period period = 2;
|
|
}
|
|
|
|
/**
|
|
* Logs daily I/O usage summary.
|
|
*
|
|
* Keep in sync with proto file at
|
|
* packages/services/Car/service/src/com/android/car/watchdog/proto/atoms.proto
|
|
*
|
|
* Pulled from:
|
|
* packages/services/Car/service/src/com/android/car/watchdog/WatchdogPerfHandler.java
|
|
*/
|
|
message CarWatchdogDailyIoUsageSummary {
|
|
// Total bytes written to disk during a day.
|
|
optional CarWatchdogPerStateBytes written_bytes = 1;
|
|
|
|
// Total uptime for the system or service or application during a day.
|
|
optional uint64 uptime_millis = 2;
|
|
|
|
// Total disk I/O overuses during a day.
|
|
optional int32 overuse_count = 3;
|
|
}
|