blob: ad7299d9a45c9980b9091ab244a462697cc7eee6 [file] [log] [blame]
/*
* Copyright (C) 2017 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.
*/
syntax = "proto2";
package android.service.procstats;
option java_multiple_files = true;
option java_outer_classname = "ProcessStatsServiceProto";
import "frameworks/base/core/proto/android/util/common.proto";
import "frameworks/base/core/proto/android/service/procstats_enum.proto";
import "frameworks/base/core/proto/android/privacy.proto";
/**
* Data from ProcStatsService Dumpsys
*
* Next Tag: 4
*/
message ProcessStatsServiceDumpProto {
option (android.msg_privacy).dest = DEST_AUTOMATIC;
optional ProcessStatsSectionProto procstats_now = 1;
optional ProcessStatsSectionProto procstats_over_3hrs = 2;
optional ProcessStatsSectionProto procstats_over_24hrs = 3;
}
/**
* Data model from /frameworks/base/core/java/com/android/internal/app/procstats/ProcessStats.java
* This proto is defined based on the writeToParcel method.
*
* Next Tag: 11
*/
message ProcessStatsSectionProto {
option (android.msg_privacy).dest = DEST_AUTOMATIC;
// Elapsed realtime at start of report.
optional int64 start_realtime_ms = 1;
// Elapsed realtime at end of report.
optional int64 end_realtime_ms = 2;
// CPU uptime at start of report.
optional int64 start_uptime_ms = 3;
// CPU uptime at end of report.
optional int64 end_uptime_ms = 4;
// System runtime library. e.g. "libdvm.so", "libart.so".
optional string runtime = 5;
// whether kernel reports swapped pss.
optional bool has_swapped_pss = 6;
// Data completeness. e.g. "complete", "partial", shutdown", or "sysprops".
enum Status {
STATUS_UNKNOWN = 0;
STATUS_COMPLETE = 1;
STATUS_PARTIAL = 2;
STATUS_SHUTDOWN = 3;
STATUS_SYSPROPS = 4;
}
repeated Status status = 7;
// Number of pages available of various types and sizes, representation fragmentation.
repeated ProcessStatsAvailablePagesProto available_pages = 10;
// Stats for each process.
repeated ProcessStatsProto process_stats = 8;
// Stats for each package.
repeated ProcessStatsPackageProto package_stats = 9;
}
// Next Tag: 5
message ProcessStatsAvailablePagesProto {
option (android.msg_privacy).dest = DEST_AUTOMATIC;
// Node these pages are in (as per /proc/pagetypeinfo)
optional int32 node = 1;
// Zone these pages are in (as per /proc/pagetypeinfo)
optional string zone = 2;
// Label for the type of these pages (as per /proc/pagetypeinfo)
optional string label = 3;
// Distribution of number of pages available by order size. First entry in array is
// order 0, second is order 1, etc. Each order increase is a doubling of page size.
repeated int32 pages_per_order = 4;
}
// Next Tag: 10
message ProcessStatsStateProto {
option (android.msg_privacy).dest = DEST_AUTOMATIC;
optional ScreenState screen_state = 1;
optional MemoryState memory_state = 2;
// this enum list is from frameworks/base/core/java/com/android/internal/app/procstats/ProcessStats.java
// and not frameworks/base/core/java/android/app/ActivityManager.java
optional ProcessState process_state = 3;
// Millisecond uptime duration spent in this state
optional int64 duration_ms = 4;
// Millisecond elapsed realtime duration spent in this state
optional int64 realtime_duration_ms = 9;
// # of samples taken
optional int32 sample_size = 5;
// PSS is memory reserved for this process
optional android.util.AggStats pss = 6;
// USS is memory shared between processes, divided evenly for accounting
optional android.util.AggStats uss = 7;
// RSS is memory resident for this process
optional android.util.AggStats rss = 8;
}
// Next Tag: 7
message ProcessStatsProto {
option (android.msg_privacy).dest = DEST_AUTOMATIC;
// Name of process.
optional string process = 1;
// Uid of the process.
optional int32 uid = 2;
// Information about how often kills occurred
message Kill {
option (android.msg_privacy).dest = DEST_AUTOMATIC;
// Count of excessive CPU kills
optional int32 cpu = 1;
// Count of kills when cached
optional int32 cached = 2;
// PSS stats during cached kill
optional android.util.AggStats cached_pss = 3;
}
optional Kill kill = 3;
// Time and memory spent in various states.
repeated ProcessStatsStateProto states = 5;
// Total time process has been running... screen_state, memory_state, and process_state
// will not be set.
optional ProcessStatsStateProto total_running_state = 6;
}
// Next Tag: 4
message PackageServiceOperationStatsProto {
option (android.msg_privacy).dest = DEST_AUTOMATIC;
// Operate enum: Started, Foreground, Bound, Executing
optional ServiceOperationState operation = 1;
// Number of times the service was in this operation.
optional int32 count = 2;
// Information about a state the service can be in.
message StateStats {
option (android.msg_privacy).dest = DEST_AUTOMATIC;
// Screen state enum.
optional android.service.procstats.ScreenState screen_state = 1;
// Memory state enum.
optional android.service.procstats.MemoryState memory_state = 2;
// duration in milliseconds.
optional int64 duration_ms = 3;
// Millisecond elapsed realtime duration spent in this state
optional int64 realtime_duration_ms = 4;
}
repeated StateStats state_stats = 3;
}
// Next Tag: 3
message PackageServiceStatsProto {
option (android.msg_privacy).dest = DEST_AUTOMATIC;
// Name of service component.
optional string service_name = 1;
// The operation stats.
// The package_name, package_uid, package_version, service_name will not be set to save space.
repeated PackageServiceOperationStatsProto operation_stats = 2;
}
// Next Tag: 8
message PackageAssociationSourceProcessStatsProto {
option (android.msg_privacy).dest = DEST_AUTOMATIC;
// Uid of the process.
optional int32 process_uid = 1;
// Process name.
optional string process_name = 2;
// Package name.
optional string package_name = 7;
// Total count of the times this association appeared.
optional int32 total_count = 3;
// Millisecond uptime total duration this association was around.
optional int64 total_duration_ms = 4;
// Total count of the times this association became actively impacting its target process.
optional int32 active_count = 5;
// Information on one source in this association.
message StateStats {
option (android.msg_privacy).dest = DEST_AUTOMATIC;
// Process state enum.
optional android.service.procstats.ProcessState process_state = 1;
// Millisecond uptime duration spent in this state
optional int64 duration_ms = 2;
// Millisecond elapsed realtime duration spent in this state
optional int64 realtime_duration_ms = 3;
}
repeated StateStats active_state_stats = 6;
}
// Next Tag: 7
message PackageAssociationProcessStatsProto {
option (android.msg_privacy).dest = DEST_AUTOMATIC;
// Name of the target component.
optional string component_name = 1;
// Total count of the times this association appeared.
optional int32 total_count = 3;
// Millisecond uptime total duration this association was around.
optional int64 total_duration_ms = 4;
// Total count of the times this association became actively impacting its target process.
optional int32 active_count = 5;
// Millisecond uptime total duration this association was around.
optional int64 active_duration_ms = 6;
// Information on one source in this association.
repeated PackageAssociationSourceProcessStatsProto sources = 2;
}
// Next Tag: 7
message ProcessStatsPackageProto {
option (android.msg_privacy).dest = DEST_AUTOMATIC;
// Name of package.
optional string package = 1;
// Uid of the package.
optional int32 uid = 2;
// Version of the package.
optional int64 version = 3;
// Stats for each process running with the package loaded in to it.
repeated ProcessStatsProto process_stats = 4;
// Stats for each of the package's services.
repeated PackageServiceStatsProto service_stats = 5;
// Stats for each association with the package.
repeated PackageAssociationProcessStatsProto association_stats = 6;
}