• Home
  • Line#
  • Scopes#
  • Navigate#
  • Raw
  • Download
1/*
2 * Copyright (C) 2017 The Android Open Source Project
3 *
4 * Licensed under the Apache License, Version 2.0 (the "License");
5 * you may not use this file except in compliance with the License.
6 * You may obtain a copy of the License at
7 *
8 *      http://www.apache.org/licenses/LICENSE-2.0
9 *
10 * Unless required by applicable law or agreed to in writing, software
11 * distributed under the License is distributed on an "AS IS" BASIS,
12 * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
13 * See the License for the specific language governing permissions and
14 * limitations under the License.
15 */
16
17syntax = "proto2";
18package android.service.procstats;
19
20option java_multiple_files = true;
21option java_outer_classname = "ProcessStatsServiceProto";
22
23import "frameworks/base/core/proto/android/util/common.proto";
24import "frameworks/base/core/proto/android/privacy.proto";
25import "frameworks/proto_logging/stats/enums/service/procstats_enum.proto";
26
27/**
28 * Data from ProcStatsService Dumpsys
29 *
30 * Next Tag: 4
31 */
32message ProcessStatsServiceDumpProto {
33    option (android.msg_privacy).dest = DEST_AUTOMATIC;
34
35    optional ProcessStatsSectionProto procstats_now = 1;
36
37    optional ProcessStatsSectionProto procstats_over_3hrs = 2;
38
39    optional ProcessStatsSectionProto procstats_over_24hrs = 3;
40}
41
42/**
43 * Data model from /frameworks/base/core/java/com/android/internal/app/procstats/ProcessStats.java
44 * This proto is defined based on the writeToParcel method.
45 *
46 * Next Tag: 11
47 */
48message ProcessStatsSectionProto {
49    option (android.msg_privacy).dest = DEST_AUTOMATIC;
50
51    // Elapsed realtime at start of report.
52    optional int64 start_realtime_ms = 1;
53
54    // Elapsed realtime at end of report.
55    optional int64 end_realtime_ms = 2;
56
57    // CPU uptime at start of report.
58    optional int64 start_uptime_ms = 3;
59
60    // CPU uptime at end of report.
61    optional int64 end_uptime_ms = 4;
62
63    // System runtime library. e.g. "libdvm.so", "libart.so".
64    optional string runtime = 5;
65
66    // whether kernel reports swapped pss.
67    optional bool has_swapped_pss = 6;
68
69    // Data completeness. e.g. "complete", "partial", shutdown", or "sysprops".
70    enum Status {
71        STATUS_UNKNOWN = 0;
72        STATUS_COMPLETE = 1;
73        STATUS_PARTIAL = 2;
74        STATUS_SHUTDOWN = 3;
75        STATUS_SYSPROPS = 4;
76    }
77    repeated Status status = 7;
78
79    // Number of pages available of various types and sizes, representation fragmentation.
80    repeated ProcessStatsAvailablePagesProto available_pages = 10;
81
82    // Stats for each process.
83    repeated ProcessStatsProto process_stats = 8;
84
85    // Stats for each package.
86    repeated ProcessStatsPackageProto package_stats = 9;
87}
88
89// Next Tag: 5
90message ProcessStatsAvailablePagesProto {
91    option (android.msg_privacy).dest = DEST_AUTOMATIC;
92
93    // Node these pages are in (as per /proc/pagetypeinfo)
94    optional int32 node = 1;
95
96    // Zone these pages are in (as per /proc/pagetypeinfo)
97    optional string zone = 2;
98
99    // Label for the type of these pages (as per /proc/pagetypeinfo)
100    optional string label = 3;
101
102    // Distribution of number of pages available by order size.  First entry in array is
103    // order 0, second is order 1, etc.  Each order increase is a doubling of page size.
104    repeated int32 pages_per_order = 4;
105}
106
107// Next Tag: 13
108message ProcessStatsStateProto {
109    option (android.msg_privacy).dest = DEST_AUTOMATIC;
110
111    optional ScreenState screen_state = 1;
112
113    optional MemoryState memory_state = 2;
114
115    // this enum list is from frameworks/base/core/java/com/android/internal/app/procstats/ProcessStats.java
116    // and not frameworks/base/core/java/android/app/ActivityManager.java
117    optional ProcessState process_state = 3 [deprecated = true];
118
119    // the AggregatedProcessState needs to keep sync with ProcessStateAggregated
120    optional AggregatedProcessState process_state_aggregated = 10;
121
122    // Millisecond uptime duration spent in this state
123    optional int64 duration_ms = 4 [deprecated = true];
124    // Same as above, but with minute resolution so it fits into an int32.
125    optional int32 duration_minutes = 11;
126
127    // Millisecond elapsed realtime duration spent in this state
128    optional int64 realtime_duration_ms = 9 [deprecated = true];
129    // Same as above, but with minute resolution so it fits into an int32.
130    optional int32 realtime_duration_minutes = 12;
131
132    // # of samples taken
133    optional int32 sample_size = 5;
134
135    // PSS is memory reserved for this process
136    optional android.util.AggStats pss = 6;
137
138    // USS is memory shared between processes, divided evenly for accounting
139    optional android.util.AggStats uss = 7;
140
141    // RSS is memory resident for this process
142    optional android.util.AggStats rss = 8;
143}
144
145// Next Tag: 8
146message ProcessStatsProto {
147    option (android.msg_privacy).dest = DEST_AUTOMATIC;
148
149    // Name of process.
150    optional string process = 1;
151
152    // Uid of the process.
153    optional int32 uid = 2;
154
155    // Information about how often kills occurred
156    message Kill {
157        option (android.msg_privacy).dest = DEST_AUTOMATIC;
158
159      // Count of excessive CPU kills
160      optional int32 cpu = 1;
161
162      // Count of kills when cached
163      optional int32 cached = 2;
164
165      // PSS stats during cached kill
166      optional android.util.AggStats cached_pss = 3;
167    }
168    optional Kill kill = 3;
169
170    // Time and memory spent in various states.
171    repeated ProcessStatsStateProto states = 5;
172
173    // Total time process has been running...  screen_state, memory_state, and process_state
174    // will not be set.
175    optional ProcessStatsStateProto total_running_state = 6;
176
177    // Association data for this process in this state;
178    // each entry here is one association.
179    repeated ProcessStatsAssociationProto assocs = 7;
180}
181
182// Next Tag: 6
183message ProcessStatsAssociationProto {
184    // Procss Name of the associated process/package
185    optional string assoc_process_name = 1;
186
187    // Package Name of the associated process/package
188    optional string assoc_package_name = 2 [deprecated = true];
189
190    // UID of the associated process/package
191    optional int32 assoc_uid = 5;
192
193    // Total count of the times this association appeared.
194    optional int32 total_count = 3;
195
196    // Uptime total duration in seconds this association was around.
197    optional int32 total_duration_secs = 4;
198}
199
200// Next Tag: 4
201message PackageServiceOperationStatsProto {
202    option (android.msg_privacy).dest = DEST_AUTOMATIC;
203
204    // Operate enum: Started, Foreground, Bound, Executing
205    optional ServiceOperationState operation = 1;
206
207    // Number of times the service was in this operation.
208    optional int32 count = 2;
209
210    // Information about a state the service can be in.
211    message StateStats {
212        option (android.msg_privacy).dest = DEST_AUTOMATIC;
213
214        // Screen state enum.
215        optional android.service.procstats.ScreenState screen_state = 1;
216        // Memory state enum.
217        optional android.service.procstats.MemoryState memory_state = 2;
218
219        // duration in milliseconds.
220        optional int64 duration_ms = 3;
221        // Millisecond elapsed realtime duration spent in this state
222        optional int64 realtime_duration_ms = 4;
223    }
224    repeated StateStats state_stats = 3;
225}
226
227// Next Tag: 3
228message PackageServiceStatsProto {
229    option (android.msg_privacy).dest = DEST_AUTOMATIC;
230
231    // Name of service component.
232    optional string service_name = 1;
233
234    // The operation stats.
235    // The package_name, package_uid, package_version, service_name will not be set to save space.
236    repeated PackageServiceOperationStatsProto operation_stats = 2;
237}
238
239// Next Tag: 8
240message PackageAssociationSourceProcessStatsProto {
241    option (android.msg_privacy).dest = DEST_AUTOMATIC;
242
243    // Uid of the process.
244    optional int32 process_uid = 1;
245    // Process name.
246    optional string process_name = 2;
247    // Package name.
248    optional string package_name = 7;
249
250    // Total count of the times this association appeared.
251    optional int32 total_count = 3;
252
253    // Millisecond uptime total duration this association was around.
254    optional int64 total_duration_ms = 4;
255
256    // Total count of the times this association became actively impacting its target process.
257    optional int32 active_count = 5;
258
259    // Information on one source in this association.
260    message StateStats {
261        option (android.msg_privacy).dest = DEST_AUTOMATIC;
262
263        // Process state enum.
264        optional android.service.procstats.ProcessState process_state = 1;
265        // Millisecond uptime duration spent in this state
266        optional int64 duration_ms = 2;
267        // Millisecond elapsed realtime duration spent in this state
268        optional int64 realtime_duration_ms = 3;
269    }
270    repeated StateStats active_state_stats = 6;
271}
272
273// Next Tag: 7
274message PackageAssociationProcessStatsProto {
275    option (android.msg_privacy).dest = DEST_AUTOMATIC;
276
277    // Name of the target component.
278    optional string component_name = 1;
279
280    // Total count of the times this association appeared.
281    optional int32 total_count = 3;
282
283    // Millisecond uptime total duration this association was around.
284    optional int64 total_duration_ms = 4;
285
286    // Total count of the times this association became actively impacting its target process.
287    optional int32 active_count = 5;
288
289    // Millisecond uptime total duration this association was around.
290    optional int64 active_duration_ms = 6;
291
292    // Information on one source in this association.
293    repeated PackageAssociationSourceProcessStatsProto sources = 2;
294}
295
296// Next Tag: 7
297message ProcessStatsPackageProto {
298    option (android.msg_privacy).dest = DEST_AUTOMATIC;
299
300    // Name of package.
301    optional string package = 1;
302
303    // Uid of the package.
304    optional int32 uid = 2;
305
306    // Version of the package.
307    optional int64 version = 3;
308
309    // Stats for each process running with the package loaded in to it.
310    repeated ProcessStatsProto process_stats = 4;
311
312    // Stats for each of the package's services.
313    repeated PackageServiceStatsProto service_stats = 5;
314
315    // Stats for each association with the package.
316    repeated PackageAssociationProcessStatsProto association_stats = 6;
317}
318