Merge "Refine procstats metric protos."
This commit is contained in:
committed by
Android (Google) Code Review
commit
b29199a6c1
@@ -20,8 +20,8 @@ package com.android.internal.app.procstats;
|
||||
import android.os.Parcel;
|
||||
import android.os.SystemClock;
|
||||
import android.os.UserHandle;
|
||||
import android.service.procstats.ProcessStatsAssociationStateProto;
|
||||
import android.service.procstats.ProcessStatsStateProto;
|
||||
import android.service.procstats.PackageAssociationProcessStatsProto;
|
||||
import android.service.procstats.PackageAssociationSourceProcessStatsProto;
|
||||
import android.util.ArrayMap;
|
||||
import android.util.Slog;
|
||||
import android.util.TimeUtils;
|
||||
@@ -662,22 +662,23 @@ public final class AssociationState {
|
||||
public void writeToProto(ProtoOutputStream proto, long fieldId, long now) {
|
||||
final long token = proto.start(fieldId);
|
||||
|
||||
proto.write(ProcessStatsAssociationStateProto.COMPONENT_NAME, mName);
|
||||
proto.write(PackageAssociationProcessStatsProto.COMPONENT_NAME, mName);
|
||||
|
||||
final int NSRC = mSources.size();
|
||||
for (int isrc = 0; isrc < NSRC; isrc++) {
|
||||
final SourceKey key = mSources.keyAt(isrc);
|
||||
final SourceState src = mSources.valueAt(isrc);
|
||||
final long sourceToken = proto.start(ProcessStatsAssociationStateProto.SOURCES);
|
||||
proto.write(ProcessStatsAssociationStateProto.Source.PROCESS, key.mProcess);
|
||||
proto.write(ProcessStatsAssociationStateProto.Source.UID, key.mUid);
|
||||
proto.write(ProcessStatsAssociationStateProto.Source.TOTAL_COUNT, src.mCount);
|
||||
final long sourceToken = proto.start(PackageAssociationProcessStatsProto.SOURCES);
|
||||
proto.write(PackageAssociationSourceProcessStatsProto.PROCESS_NAME, key.mProcess);
|
||||
proto.write(PackageAssociationSourceProcessStatsProto.PROCESS_UID, key.mUid);
|
||||
proto.write(PackageAssociationSourceProcessStatsProto.TOTAL_COUNT, src.mCount);
|
||||
long duration = src.mDuration;
|
||||
if (src.mNesting > 0) {
|
||||
duration += now - src.mStartUptime;
|
||||
}
|
||||
proto.write(ProcessStatsAssociationStateProto.Source.TOTAL_DURATION_MS, duration);
|
||||
proto.write(PackageAssociationSourceProcessStatsProto.TOTAL_DURATION_MS, duration);
|
||||
if (src.mActiveCount != 0) {
|
||||
proto.write(ProcessStatsAssociationStateProto.Source.ACTIVE_COUNT,
|
||||
proto.write(PackageAssociationSourceProcessStatsProto.ACTIVE_COUNT,
|
||||
src.mActiveCount);
|
||||
}
|
||||
final long timeNow = src.mActiveStartUptime != 0 ? (now-src.mActiveStartUptime) : 0;
|
||||
@@ -690,16 +691,26 @@ public final class AssociationState {
|
||||
duration += timeNow;
|
||||
}
|
||||
final int procState = SparseMappingTable.getIdFromKey(dkey);
|
||||
DumpUtils.printProcStateDurationProto(proto,
|
||||
ProcessStatsAssociationStateProto.Source.ACTIVE_STATES,
|
||||
procState, duration);
|
||||
final long stateToken = proto.start(
|
||||
PackageAssociationSourceProcessStatsProto.ACTIVE_STATE_STATS);
|
||||
DumpUtils.printProto(proto,
|
||||
PackageAssociationSourceProcessStatsProto.StateStats.PROCESS_STATE,
|
||||
DumpUtils.STATE_PROTO_ENUMS, procState, 1);
|
||||
proto.write(PackageAssociationSourceProcessStatsProto.StateStats.DURATION_MS,
|
||||
duration);
|
||||
proto.end(stateToken);
|
||||
}
|
||||
} else {
|
||||
duration = src.mActiveDuration + timeNow;
|
||||
if (duration != 0) {
|
||||
DumpUtils.printProcStateDurationProto(proto,
|
||||
ProcessStatsAssociationStateProto.Source.ACTIVE_STATES,
|
||||
src.mActiveProcState, duration);
|
||||
final long stateToken = proto.start(
|
||||
PackageAssociationSourceProcessStatsProto.ACTIVE_STATE_STATS);
|
||||
DumpUtils.printProto(proto,
|
||||
PackageAssociationSourceProcessStatsProto.StateStats.PROCESS_STATE,
|
||||
DumpUtils.STATE_PROTO_ENUMS, src.mActiveProcState, 1);
|
||||
proto.write(PackageAssociationSourceProcessStatsProto.StateStats.DURATION_MS,
|
||||
duration);
|
||||
proto.end(stateToken);
|
||||
}
|
||||
}
|
||||
proto.end(sourceToken);
|
||||
|
||||
@@ -17,6 +17,7 @@
|
||||
package com.android.internal.app.procstats;
|
||||
|
||||
import android.os.UserHandle;
|
||||
import android.service.procstats.ProcessStatsEnums;
|
||||
import android.service.procstats.ProcessStatsStateProto;
|
||||
import android.util.TimeUtils;
|
||||
import android.util.proto.ProtoOutputStream;
|
||||
@@ -107,20 +108,24 @@ public final class DumpUtils {
|
||||
STATE_TAGS[STATE_CACHED_EMPTY] = "e";
|
||||
|
||||
STATE_PROTO_ENUMS = new int[STATE_COUNT];
|
||||
STATE_PROTO_ENUMS[STATE_PERSISTENT] = ProcessStatsStateProto.PERSISTENT;
|
||||
STATE_PROTO_ENUMS[STATE_TOP] = ProcessStatsStateProto.TOP;
|
||||
STATE_PROTO_ENUMS[STATE_IMPORTANT_FOREGROUND] = ProcessStatsStateProto.IMPORTANT_FOREGROUND;
|
||||
STATE_PROTO_ENUMS[STATE_IMPORTANT_BACKGROUND] = ProcessStatsStateProto.IMPORTANT_BACKGROUND;
|
||||
STATE_PROTO_ENUMS[STATE_BACKUP] = ProcessStatsStateProto.BACKUP;
|
||||
STATE_PROTO_ENUMS[STATE_SERVICE] = ProcessStatsStateProto.SERVICE;
|
||||
STATE_PROTO_ENUMS[STATE_SERVICE_RESTARTING] = ProcessStatsStateProto.SERVICE_RESTARTING;
|
||||
STATE_PROTO_ENUMS[STATE_RECEIVER] = ProcessStatsStateProto.RECEIVER;
|
||||
STATE_PROTO_ENUMS[STATE_HEAVY_WEIGHT] = ProcessStatsStateProto.HEAVY_WEIGHT;
|
||||
STATE_PROTO_ENUMS[STATE_HOME] = ProcessStatsStateProto.HOME;
|
||||
STATE_PROTO_ENUMS[STATE_LAST_ACTIVITY] = ProcessStatsStateProto.LAST_ACTIVITY;
|
||||
STATE_PROTO_ENUMS[STATE_CACHED_ACTIVITY] = ProcessStatsStateProto.CACHED_ACTIVITY;
|
||||
STATE_PROTO_ENUMS[STATE_CACHED_ACTIVITY_CLIENT] = ProcessStatsStateProto.CACHED_ACTIVITY_CLIENT;
|
||||
STATE_PROTO_ENUMS[STATE_CACHED_EMPTY] = ProcessStatsStateProto.CACHED_EMPTY;
|
||||
STATE_PROTO_ENUMS[STATE_PERSISTENT] = ProcessStatsEnums.PROCESS_STATE_PERSISTENT;
|
||||
STATE_PROTO_ENUMS[STATE_TOP] = ProcessStatsEnums.PROCESS_STATE_TOP;
|
||||
STATE_PROTO_ENUMS[STATE_IMPORTANT_FOREGROUND] =
|
||||
ProcessStatsEnums.PROCESS_STATE_IMPORTANT_FOREGROUND;
|
||||
STATE_PROTO_ENUMS[STATE_IMPORTANT_BACKGROUND] =
|
||||
ProcessStatsEnums.PROCESS_STATE_IMPORTANT_BACKGROUND;
|
||||
STATE_PROTO_ENUMS[STATE_BACKUP] = ProcessStatsEnums.PROCESS_STATE_BACKUP;
|
||||
STATE_PROTO_ENUMS[STATE_SERVICE] = ProcessStatsEnums.PROCESS_STATE_SERVICE;
|
||||
STATE_PROTO_ENUMS[STATE_SERVICE_RESTARTING] =
|
||||
ProcessStatsEnums.PROCESS_STATE_SERVICE_RESTARTING;
|
||||
STATE_PROTO_ENUMS[STATE_RECEIVER] = ProcessStatsEnums.PROCESS_STATE_RECEIVER;
|
||||
STATE_PROTO_ENUMS[STATE_HEAVY_WEIGHT] = ProcessStatsEnums.PROCESS_STATE_HEAVY_WEIGHT;
|
||||
STATE_PROTO_ENUMS[STATE_HOME] = ProcessStatsEnums.PROCESS_STATE_HOME;
|
||||
STATE_PROTO_ENUMS[STATE_LAST_ACTIVITY] = ProcessStatsEnums.PROCESS_STATE_LAST_ACTIVITY;
|
||||
STATE_PROTO_ENUMS[STATE_CACHED_ACTIVITY] = ProcessStatsEnums.PROCESS_STATE_CACHED_ACTIVITY;
|
||||
STATE_PROTO_ENUMS[STATE_CACHED_ACTIVITY_CLIENT] =
|
||||
ProcessStatsEnums.PROCESS_STATE_CACHED_ACTIVITY_CLIENT;
|
||||
STATE_PROTO_ENUMS[STATE_CACHED_EMPTY] = ProcessStatsEnums.PROCESS_STATE_CACHED_EMPTY;
|
||||
}
|
||||
|
||||
public static final String[] ADJ_SCREEN_NAMES_CSV = new String[] {
|
||||
@@ -138,8 +143,8 @@ public final class DumpUtils {
|
||||
};
|
||||
|
||||
static final int[] ADJ_SCREEN_PROTO_ENUMS = new int[] {
|
||||
ProcessStatsStateProto.OFF,
|
||||
ProcessStatsStateProto.ON
|
||||
ProcessStatsEnums.SCREEN_STATE_OFF,
|
||||
ProcessStatsEnums.SCREEN_STATE_ON
|
||||
};
|
||||
|
||||
static final String[] ADJ_MEM_TAGS = new String[] {
|
||||
@@ -147,10 +152,10 @@ public final class DumpUtils {
|
||||
};
|
||||
|
||||
static final int[] ADJ_MEM_PROTO_ENUMS = new int[] {
|
||||
ProcessStatsStateProto.NORMAL,
|
||||
ProcessStatsStateProto.MODERATE,
|
||||
ProcessStatsStateProto.LOW,
|
||||
ProcessStatsStateProto.CRITICAL
|
||||
ProcessStatsEnums.MEMORY_STATE_NORMAL,
|
||||
ProcessStatsEnums.MEMORY_STATE_MODERATE,
|
||||
ProcessStatsEnums.MEMORY_STATE_LOW,
|
||||
ProcessStatsEnums.MEMORY_STATE_CRITICAL
|
||||
};
|
||||
|
||||
static final String CSV_SEP = "\t";
|
||||
@@ -278,7 +283,6 @@ public final class DumpUtils {
|
||||
DumpUtils.STATE_PROTO_ENUMS, procState, 1);
|
||||
proto.write(ProcessStatsStateProto.DURATION_MS, duration);
|
||||
proto.end(stateToken);
|
||||
|
||||
}
|
||||
|
||||
public static void printProcStateTagAndValue(PrintWriter pw, int state, long value) {
|
||||
|
||||
@@ -31,36 +31,38 @@ import android.util.TimeUtils;
|
||||
import android.util.proto.ProtoOutputStream;
|
||||
import android.util.proto.ProtoUtils;
|
||||
|
||||
import com.android.internal.app.procstats.ProcessStats.PackageState;
|
||||
import com.android.internal.app.procstats.ProcessStats.ProcessStateHolder;
|
||||
import com.android.internal.app.procstats.ProcessStats.TotalMemoryUseCollection;
|
||||
import static com.android.internal.app.procstats.ProcessStats.PSS_SAMPLE_COUNT;
|
||||
import static com.android.internal.app.procstats.ProcessStats.PSS_MINIMUM;
|
||||
|
||||
import static com.android.internal.app.procstats.ProcessStats.PSS_AVERAGE;
|
||||
import static com.android.internal.app.procstats.ProcessStats.PSS_COUNT;
|
||||
import static com.android.internal.app.procstats.ProcessStats.PSS_MAXIMUM;
|
||||
import static com.android.internal.app.procstats.ProcessStats.PSS_RSS_MINIMUM;
|
||||
import static com.android.internal.app.procstats.ProcessStats.PSS_MINIMUM;
|
||||
import static com.android.internal.app.procstats.ProcessStats.PSS_RSS_AVERAGE;
|
||||
import static com.android.internal.app.procstats.ProcessStats.PSS_RSS_MAXIMUM;
|
||||
import static com.android.internal.app.procstats.ProcessStats.PSS_USS_MINIMUM;
|
||||
import static com.android.internal.app.procstats.ProcessStats.PSS_RSS_MINIMUM;
|
||||
import static com.android.internal.app.procstats.ProcessStats.PSS_SAMPLE_COUNT;
|
||||
import static com.android.internal.app.procstats.ProcessStats.PSS_USS_AVERAGE;
|
||||
import static com.android.internal.app.procstats.ProcessStats.PSS_USS_MAXIMUM;
|
||||
import static com.android.internal.app.procstats.ProcessStats.PSS_COUNT;
|
||||
import static com.android.internal.app.procstats.ProcessStats.STATE_NOTHING;
|
||||
import static com.android.internal.app.procstats.ProcessStats.STATE_PERSISTENT;
|
||||
import static com.android.internal.app.procstats.ProcessStats.STATE_TOP;
|
||||
import static com.android.internal.app.procstats.ProcessStats.STATE_IMPORTANT_FOREGROUND;
|
||||
import static com.android.internal.app.procstats.ProcessStats.STATE_IMPORTANT_BACKGROUND;
|
||||
import static com.android.internal.app.procstats.ProcessStats.PSS_USS_MINIMUM;
|
||||
import static com.android.internal.app.procstats.ProcessStats.STATE_BACKUP;
|
||||
import static com.android.internal.app.procstats.ProcessStats.STATE_HEAVY_WEIGHT;
|
||||
import static com.android.internal.app.procstats.ProcessStats.STATE_SERVICE;
|
||||
import static com.android.internal.app.procstats.ProcessStats.STATE_SERVICE_RESTARTING;
|
||||
import static com.android.internal.app.procstats.ProcessStats.STATE_RECEIVER;
|
||||
import static com.android.internal.app.procstats.ProcessStats.STATE_HOME;
|
||||
import static com.android.internal.app.procstats.ProcessStats.STATE_LAST_ACTIVITY;
|
||||
import static com.android.internal.app.procstats.ProcessStats.STATE_CACHED_ACTIVITY;
|
||||
import static com.android.internal.app.procstats.ProcessStats.STATE_CACHED_ACTIVITY_CLIENT;
|
||||
import static com.android.internal.app.procstats.ProcessStats.STATE_CACHED_EMPTY;
|
||||
import static com.android.internal.app.procstats.ProcessStats.STATE_COUNT;
|
||||
import static com.android.internal.app.procstats.ProcessStats.STATE_HEAVY_WEIGHT;
|
||||
import static com.android.internal.app.procstats.ProcessStats.STATE_HOME;
|
||||
import static com.android.internal.app.procstats.ProcessStats.STATE_IMPORTANT_BACKGROUND;
|
||||
import static com.android.internal.app.procstats.ProcessStats.STATE_IMPORTANT_FOREGROUND;
|
||||
import static com.android.internal.app.procstats.ProcessStats.STATE_LAST_ACTIVITY;
|
||||
import static com.android.internal.app.procstats.ProcessStats.STATE_NOTHING;
|
||||
import static com.android.internal.app.procstats.ProcessStats.STATE_PERSISTENT;
|
||||
import static com.android.internal.app.procstats.ProcessStats.STATE_RECEIVER;
|
||||
import static com.android.internal.app.procstats.ProcessStats.STATE_SERVICE;
|
||||
import static com.android.internal.app.procstats.ProcessStats.STATE_SERVICE_RESTARTING;
|
||||
import static com.android.internal.app.procstats.ProcessStats.STATE_TOP;
|
||||
|
||||
import com.android.internal.app.procstats.ProcessStats.PackageState;
|
||||
import com.android.internal.app.procstats.ProcessStats.ProcessStateHolder;
|
||||
import com.android.internal.app.procstats.ProcessStats.TotalMemoryUseCollection;
|
||||
|
||||
import java.io.PrintWriter;
|
||||
import java.util.Comparator;
|
||||
|
||||
@@ -2126,12 +2126,14 @@ public final class ProcessStats implements Parcelable {
|
||||
|
||||
for (int is = 0; is < mServices.size(); is++) {
|
||||
final ServiceState serviceState = mServices.valueAt(is);
|
||||
serviceState.writeToProto(proto, ProcessStatsPackageProto.PROCESS_STATS, now);
|
||||
serviceState.writeToProto(proto, ProcessStatsPackageProto.SERVICE_STATS,
|
||||
now);
|
||||
}
|
||||
|
||||
for (int ia=0; ia<mAssociations.size(); ia++) {
|
||||
final AssociationState ascState = mAssociations.valueAt(ia);
|
||||
ascState.writeToProto(proto, ProcessStatsPackageProto.ASSOCIATION_STATS, now);
|
||||
ascState.writeToProto(proto, ProcessStatsPackageProto.ASSOCIATION_STATS,
|
||||
now);
|
||||
}
|
||||
|
||||
proto.end(token);
|
||||
|
||||
@@ -19,16 +19,13 @@ package com.android.internal.app.procstats;
|
||||
|
||||
import android.os.Parcel;
|
||||
import android.os.SystemClock;
|
||||
import android.service.procstats.ProcessStatsProto;
|
||||
import android.service.procstats.ProcessStatsServiceStateProto;
|
||||
import android.service.procstats.ProcessStatsStateProto;
|
||||
import android.service.procstats.PackageServiceOperationStatsProto;
|
||||
import android.service.procstats.PackageServiceStatsProto;
|
||||
import android.service.procstats.ProcessStatsEnums;
|
||||
import android.util.Slog;
|
||||
import android.util.SparseLongArray;
|
||||
import android.util.TimeUtils;
|
||||
import android.util.proto.ProtoOutputStream;
|
||||
import android.util.proto.ProtoUtils;
|
||||
|
||||
import static com.android.internal.app.procstats.ProcessStats.PSS_SAMPLE_COUNT;
|
||||
import static com.android.internal.app.procstats.ProcessStats.STATE_NOTHING;
|
||||
|
||||
import java.io.PrintWriter;
|
||||
@@ -559,29 +556,45 @@ public final class ServiceState {
|
||||
|
||||
public void writeToProto(ProtoOutputStream proto, long fieldId, long now) {
|
||||
final long token = proto.start(fieldId);
|
||||
proto.write(ProcessStatsServiceStateProto.SERVICE_NAME, mName);
|
||||
writeTypeToProto(proto, ProcessStatsServiceStateProto.RUNNING_OP,
|
||||
proto.write(PackageServiceStatsProto.SERVICE_NAME, mName);
|
||||
|
||||
writeTypeToProto(proto, PackageServiceStatsProto.OPERATION_STATS,
|
||||
ProcessStatsEnums.SERVICE_OPERATION_STATE_RUNNING,
|
||||
ServiceState.SERVICE_RUN, mRunCount, mRunState, mRunStartTime, now);
|
||||
writeTypeToProto(proto, ProcessStatsServiceStateProto.STARTED_OP,
|
||||
|
||||
writeTypeToProto(proto, PackageServiceStatsProto.OPERATION_STATS,
|
||||
ProcessStatsEnums.SERVICE_OPERATION_STATE_STARTED,
|
||||
ServiceState.SERVICE_STARTED, mStartedCount, mStartedState, mStartedStartTime, now);
|
||||
writeTypeToProto(proto, ProcessStatsServiceStateProto.FOREGROUND_OP,
|
||||
|
||||
writeTypeToProto(proto, PackageServiceStatsProto.OPERATION_STATS,
|
||||
ProcessStatsEnums.SERVICE_OPERATION_STATE_FOREGROUND,
|
||||
ServiceState.SERVICE_FOREGROUND, mForegroundCount, mForegroundState,
|
||||
mForegroundStartTime, now);
|
||||
writeTypeToProto(proto, ProcessStatsServiceStateProto.BOUND_OP,
|
||||
|
||||
writeTypeToProto(proto, PackageServiceStatsProto.OPERATION_STATS,
|
||||
ProcessStatsEnums.SERVICE_OPERATION_STATE_BOUND,
|
||||
ServiceState.SERVICE_BOUND, mBoundCount, mBoundState, mBoundStartTime, now);
|
||||
writeTypeToProto(proto, ProcessStatsServiceStateProto.EXECUTING_OP,
|
||||
|
||||
writeTypeToProto(proto, PackageServiceStatsProto.OPERATION_STATS,
|
||||
ProcessStatsEnums.SERVICE_OPERATION_STATE_EXECUTING,
|
||||
ServiceState.SERVICE_EXEC, mExecCount, mExecState, mExecStartTime, now);
|
||||
|
||||
proto.end(token);
|
||||
}
|
||||
|
||||
public void writeTypeToProto(ProtoOutputStream proto, long fieldId, int serviceType,
|
||||
/**
|
||||
* write the metrics to proto for each operation type.
|
||||
*/
|
||||
public void writeTypeToProto(ProtoOutputStream proto, long fieldId, int opType, int serviceType,
|
||||
int opCount, int curState, long curStartTime, long now) {
|
||||
if (opCount <= 0) {
|
||||
return;
|
||||
}
|
||||
final long token = proto.start(fieldId);
|
||||
|
||||
proto.write(ProcessStatsServiceStateProto.OperationInfo.COUNT, opCount);
|
||||
proto.write(PackageServiceOperationStatsProto.OPERATION, opType);
|
||||
proto.write(PackageServiceOperationStatsProto.COUNT, opCount);
|
||||
|
||||
boolean didCurState = false;
|
||||
final int N = mDurations.getKeyCount();
|
||||
for (int i=0; i<N; i++) {
|
||||
@@ -597,21 +610,22 @@ public final class ServiceState {
|
||||
didCurState = true;
|
||||
time += now - curStartTime;
|
||||
}
|
||||
final long stateToken = proto.start(ProcessStatsServiceStateProto.OperationInfo.STATES);
|
||||
final long stateToken = proto.start(PackageServiceOperationStatsProto.STATE_STATS);
|
||||
DumpUtils.printProcStateAdjTagProto(proto,
|
||||
ProcessStatsStateProto.SCREEN_STATE,
|
||||
ProcessStatsStateProto.MEMORY_STATE,
|
||||
PackageServiceOperationStatsProto.StateStats.SCREEN_STATE,
|
||||
PackageServiceOperationStatsProto.StateStats.MEMORY_STATE,
|
||||
type);
|
||||
proto.write(ProcessStatsStateProto.DURATION_MS, time);
|
||||
proto.write(PackageServiceOperationStatsProto.StateStats.DURATION_MS, time);
|
||||
proto.end(stateToken);
|
||||
}
|
||||
if (!didCurState && curState != STATE_NOTHING) {
|
||||
final long stateToken = proto.start(ProcessStatsServiceStateProto.OperationInfo.STATES);
|
||||
final long stateToken = proto.start(PackageServiceOperationStatsProto.STATE_STATS);
|
||||
DumpUtils.printProcStateAdjTagProto(proto,
|
||||
ProcessStatsStateProto.SCREEN_STATE,
|
||||
ProcessStatsStateProto.MEMORY_STATE,
|
||||
PackageServiceOperationStatsProto.StateStats.SCREEN_STATE,
|
||||
PackageServiceOperationStatsProto.StateStats.MEMORY_STATE,
|
||||
curState);
|
||||
proto.write(ProcessStatsStateProto.DURATION_MS, now - curStartTime);
|
||||
proto.write(PackageServiceOperationStatsProto.StateStats.DURATION_MS,
|
||||
now - curStartTime);
|
||||
proto.end(stateToken);
|
||||
}
|
||||
|
||||
|
||||
@@ -21,6 +21,7 @@ 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/libs/incident/proto/android/privacy.proto";
|
||||
|
||||
/**
|
||||
@@ -86,55 +87,12 @@ message ProcessStatsSectionProto {
|
||||
message ProcessStatsStateProto {
|
||||
option (android.msg_privacy).dest = DEST_AUTOMATIC;
|
||||
|
||||
enum ScreenState {
|
||||
SCREEN_UNKNOWN = 0;
|
||||
OFF = 1;
|
||||
ON = 2;
|
||||
}
|
||||
optional ScreenState screen_state = 1;
|
||||
|
||||
enum MemoryState {
|
||||
MEMORY_UNKNOWN = 0;
|
||||
NORMAL = 1; // normal.
|
||||
MODERATE = 2; // moderate memory pressure.
|
||||
LOW = 3; // low memory.
|
||||
CRITICAL = 4; // critical memory.
|
||||
}
|
||||
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
|
||||
enum ProcessState {
|
||||
PROCESS_UNKNOWN = 0;
|
||||
// Persistent system process.
|
||||
PERSISTENT = 1;
|
||||
// Top activity; actually any visible activity.
|
||||
TOP = 2;
|
||||
// Important foreground process (ime, wallpaper, etc).
|
||||
IMPORTANT_FOREGROUND = 3;
|
||||
// Important background process.
|
||||
IMPORTANT_BACKGROUND = 4;
|
||||
// Performing backup operation.
|
||||
BACKUP = 5;
|
||||
// Background process running a service.
|
||||
SERVICE = 6;
|
||||
// Process not running, but would be if there was enough RAM.
|
||||
SERVICE_RESTARTING = 7;
|
||||
// Process running a receiver.
|
||||
RECEIVER = 8;
|
||||
// Heavy-weight process (currently not used).
|
||||
HEAVY_WEIGHT = 9;
|
||||
// Process hosting home/launcher app when not on top.
|
||||
HOME = 10;
|
||||
// Process hosting the last app the user was in.
|
||||
LAST_ACTIVITY = 11;
|
||||
// Cached process hosting a previous activity.
|
||||
CACHED_ACTIVITY = 12;
|
||||
// Cached process hosting a client activity.
|
||||
CACHED_ACTIVITY_CLIENT = 13;
|
||||
// Cached process that is empty.
|
||||
CACHED_EMPTY = 14;
|
||||
}
|
||||
optional ProcessState process_state = 3;
|
||||
|
||||
// Millisecond uptime duration spent in this state
|
||||
@@ -189,74 +147,85 @@ message ProcessStatsProto {
|
||||
optional ProcessStatsStateProto total_running_state = 6;
|
||||
}
|
||||
|
||||
// Next Tag: 7
|
||||
message ProcessStatsServiceStateProto {
|
||||
// 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;
|
||||
|
||||
// Information about a state the service can be in.
|
||||
message OperationInfo {
|
||||
option (android.msg_privacy).dest = DEST_AUTOMATIC;
|
||||
|
||||
// Number of times the service was in this operation.
|
||||
optional int32 count = 1;
|
||||
|
||||
// Time this operation was active in various states. process_state will not be set;
|
||||
// includes only uptime, not memory info.
|
||||
repeated ProcessStatsStateProto states = 2;
|
||||
}
|
||||
|
||||
// Information about when the service was operating as running (that is how long it was
|
||||
// running for any reason, such as the finer-grained started, bound, and executing times
|
||||
// also reported in this proto).
|
||||
optional OperationInfo running_op = 2;
|
||||
|
||||
// Information about when the service was operating as started.
|
||||
optional OperationInfo started_op = 3;
|
||||
|
||||
// Information about when the service was operating as foreground.
|
||||
optional OperationInfo foreground_op = 4;
|
||||
|
||||
// Information about when the service was operating as bound.
|
||||
optional OperationInfo bound_op = 5;
|
||||
|
||||
// Information about when the service was operating as executing.
|
||||
optional OperationInfo executing_op = 6;
|
||||
// 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: 7
|
||||
message ProcessStatsAssociationStateProto {
|
||||
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;
|
||||
|
||||
// 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: 3
|
||||
message PackageAssociationProcessStatsProto {
|
||||
option (android.msg_privacy).dest = DEST_AUTOMATIC;
|
||||
|
||||
// Name of the target component.
|
||||
optional string component_name = 1;
|
||||
|
||||
// Information on one source in this association.
|
||||
message Source {
|
||||
option (android.msg_privacy).dest = DEST_AUTOMATIC;
|
||||
|
||||
// Name of source process.
|
||||
optional string process = 1;
|
||||
|
||||
// Uid of the source process.
|
||||
optional int32 uid = 2;
|
||||
|
||||
// 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;
|
||||
|
||||
// Time association was active in various states. screen_state and memory_state will not
|
||||
// be set; includes only uptime, not memory info.
|
||||
repeated ProcessStatsStateProto active_states = 6;
|
||||
}
|
||||
repeated Source sources = 3;
|
||||
repeated PackageAssociationSourceProcessStatsProto sources = 2;
|
||||
}
|
||||
|
||||
// Next Tag: 7
|
||||
@@ -276,8 +245,8 @@ message ProcessStatsPackageProto {
|
||||
repeated ProcessStatsProto process_stats = 4;
|
||||
|
||||
// Stats for each of the package's services.
|
||||
repeated ProcessStatsServiceStateProto service_stats = 5;
|
||||
repeated PackageServiceStatsProto service_stats = 5;
|
||||
|
||||
// Stats for each association with the package.
|
||||
repeated ProcessStatsAssociationStateProto association_stats = 6;
|
||||
repeated PackageAssociationProcessStatsProto association_stats = 6;
|
||||
}
|
||||
|
||||
78
core/proto/android/service/procstats_enum.proto
Normal file
78
core/proto/android/service/procstats_enum.proto
Normal file
@@ -0,0 +1,78 @@
|
||||
/*
|
||||
* Copyright (C) 2018 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 = "ProcessStatsEnums";
|
||||
|
||||
enum ScreenState {
|
||||
SCREEN_STATE_UNKNOWN = 0;
|
||||
SCREEN_STATE_OFF = 1;
|
||||
SCREEN_STATE_ON = 2;
|
||||
}
|
||||
|
||||
enum MemoryState {
|
||||
MEMORY_STATE_UNKNOWN = 0;
|
||||
MEMORY_STATE_NORMAL = 1; // normal.
|
||||
MEMORY_STATE_MODERATE = 2; // moderate memory pressure.
|
||||
MEMORY_STATE_LOW = 3; // low memory.
|
||||
MEMORY_STATE_CRITICAL = 4; // critical memory.
|
||||
}
|
||||
|
||||
// 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
|
||||
enum ProcessState {
|
||||
PROCESS_STATE_UNKNOWN = 0;
|
||||
// Persistent system process.
|
||||
PROCESS_STATE_PERSISTENT = 1;
|
||||
// Top activity; actually any visible activity.
|
||||
PROCESS_STATE_TOP = 2;
|
||||
// Important foreground process (ime, wallpaper, etc).
|
||||
PROCESS_STATE_IMPORTANT_FOREGROUND = 3;
|
||||
// Important background process.
|
||||
PROCESS_STATE_IMPORTANT_BACKGROUND = 4;
|
||||
// Performing backup operation.
|
||||
PROCESS_STATE_BACKUP = 5;
|
||||
// Background process running a service.
|
||||
PROCESS_STATE_SERVICE = 6;
|
||||
// Process not running, but would be if there was enough RAM.
|
||||
PROCESS_STATE_SERVICE_RESTARTING = 7;
|
||||
// Process running a receiver.
|
||||
PROCESS_STATE_RECEIVER = 8;
|
||||
// Heavy-weight process (currently not used).
|
||||
PROCESS_STATE_HEAVY_WEIGHT = 9;
|
||||
// Process hosting home/launcher app when not on top.
|
||||
PROCESS_STATE_HOME = 10;
|
||||
// Process hosting the last app the user was in.
|
||||
PROCESS_STATE_LAST_ACTIVITY = 11;
|
||||
// Cached process hosting a previous activity.
|
||||
PROCESS_STATE_CACHED_ACTIVITY = 12;
|
||||
// Cached process hosting a client activity.
|
||||
PROCESS_STATE_CACHED_ACTIVITY_CLIENT = 13;
|
||||
// Cached process that is empty.
|
||||
PROCESS_STATE_CACHED_EMPTY = 14;
|
||||
}
|
||||
|
||||
enum ServiceOperationState {
|
||||
SERVICE_OPERATION_STATE_UNKNOWN = 0;
|
||||
SERVICE_OPERATION_STATE_RUNNING = 1;
|
||||
SERVICE_OPERATION_STATE_STARTED = 2;
|
||||
SERVICE_OPERATION_STATE_FOREGROUND = 3;
|
||||
SERVICE_OPERATION_STATE_BOUND = 4;
|
||||
SERVICE_OPERATION_STATE_EXECUTING = 5;
|
||||
}
|
||||
Reference in New Issue
Block a user