Loading core/java/com/android/internal/app/procstats/AssociationState.java +26 −15 Original line number Diff line number Diff line Loading @@ -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; Loading Loading @@ -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; Loading @@ -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); Loading core/java/com/android/internal/app/procstats/DumpUtils.java +25 −21 Original line number Diff line number Diff line Loading @@ -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; Loading Loading @@ -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[] { Loading @@ -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[] { Loading @@ -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"; Loading Loading @@ -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) { Loading core/java/com/android/internal/app/procstats/ProcessState.java +21 −19 Original line number Diff line number Diff line Loading @@ -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; Loading core/java/com/android/internal/app/procstats/ProcessStats.java +4 −2 Original line number Diff line number Diff line Loading @@ -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); Loading core/java/com/android/internal/app/procstats/ServiceState.java +36 −22 Original line number Diff line number Diff line Loading @@ -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; Loading Loading @@ -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++) { Loading @@ -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); } Loading Loading
core/java/com/android/internal/app/procstats/AssociationState.java +26 −15 Original line number Diff line number Diff line Loading @@ -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; Loading Loading @@ -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; Loading @@ -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); Loading
core/java/com/android/internal/app/procstats/DumpUtils.java +25 −21 Original line number Diff line number Diff line Loading @@ -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; Loading Loading @@ -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[] { Loading @@ -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[] { Loading @@ -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"; Loading Loading @@ -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) { Loading
core/java/com/android/internal/app/procstats/ProcessState.java +21 −19 Original line number Diff line number Diff line Loading @@ -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; Loading
core/java/com/android/internal/app/procstats/ProcessStats.java +4 −2 Original line number Diff line number Diff line Loading @@ -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); Loading
core/java/com/android/internal/app/procstats/ServiceState.java +36 −22 Original line number Diff line number Diff line Loading @@ -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; Loading Loading @@ -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++) { Loading @@ -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); } Loading