diff options
| author | 2023-03-14 19:27:57 +0000 | |
|---|---|---|
| committer | 2023-03-14 19:27:57 +0000 | |
| commit | 6e33d9db30c1e8d84e712efee44fae2cda06ab78 (patch) | |
| tree | a59eb7a0e293046e08f41bd82bf97afb80ce1d67 | |
| parent | 1f28d59a8c7c6e9ffa29f53ef537d07a833b6e1d (diff) | |
| parent | 03175f43d18c592931e3e8ff4c7c73972da68fda (diff) | |
Merge "Add bound_top, bound_fgs and frozen states to ProcessStats." into tm-qpr-dev am: 03175f43d1
Original change: https://googleplex-android-review.googlesource.com/c/platform/frameworks/base/+/21778684
Change-Id: Ia62dc3881a697faa59436bdda66f650c5bcf8387
Signed-off-by: Automerger Merge Worker <android-build-automerger-merge-worker@system.gserviceaccount.com>
5 files changed, 112 insertions, 72 deletions
diff --git a/core/java/com/android/internal/app/procstats/DumpUtils.java b/core/java/com/android/internal/app/procstats/DumpUtils.java index bce0d6076d24..f6bcc4661fd6 100644 --- a/core/java/com/android/internal/app/procstats/DumpUtils.java +++ b/core/java/com/android/internal/app/procstats/DumpUtils.java @@ -27,12 +27,12 @@ import static com.android.internal.app.procstats.ProcessStats.ADJ_SCREEN_MOD;  import static com.android.internal.app.procstats.ProcessStats.ADJ_SCREEN_OFF;  import static com.android.internal.app.procstats.ProcessStats.ADJ_SCREEN_ON;  import static com.android.internal.app.procstats.ProcessStats.STATE_BACKUP; -import static com.android.internal.app.procstats.ProcessStats.STATE_BOUND_TOP_OR_FGS; -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_BOUND_FGS; +import static com.android.internal.app.procstats.ProcessStats.STATE_BOUND_TOP; +import static com.android.internal.app.procstats.ProcessStats.STATE_CACHED;  import static com.android.internal.app.procstats.ProcessStats.STATE_COUNT;  import static com.android.internal.app.procstats.ProcessStats.STATE_FGS; +import static com.android.internal.app.procstats.ProcessStats.STATE_FROZEN;  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; @@ -72,7 +72,8 @@ public final class DumpUtils {          STATE_NAMES = new String[STATE_COUNT];          STATE_NAMES[STATE_PERSISTENT]               = "Persist";          STATE_NAMES[STATE_TOP]                      = "Top"; -        STATE_NAMES[STATE_BOUND_TOP_OR_FGS]         = "BTopFgs"; +        STATE_NAMES[STATE_BOUND_FGS]                = "BFgs"; +        STATE_NAMES[STATE_BOUND_TOP]                = "BTop";          STATE_NAMES[STATE_FGS]                      = "Fgs";          STATE_NAMES[STATE_IMPORTANT_FOREGROUND]     = "ImpFg";          STATE_NAMES[STATE_IMPORTANT_BACKGROUND]     = "ImpBg"; @@ -83,14 +84,14 @@ public final class DumpUtils {          STATE_NAMES[STATE_HEAVY_WEIGHT]             = "HeavyWt";          STATE_NAMES[STATE_HOME]                     = "Home";          STATE_NAMES[STATE_LAST_ACTIVITY]            = "LastAct"; -        STATE_NAMES[STATE_CACHED_ACTIVITY]          = "CchAct"; -        STATE_NAMES[STATE_CACHED_ACTIVITY_CLIENT]   = "CchCAct"; -        STATE_NAMES[STATE_CACHED_EMPTY]             = "CchEmty"; +        STATE_NAMES[STATE_CACHED]                   = "Cached"; +        STATE_NAMES[STATE_FROZEN]                   = "Frozen";          STATE_LABELS = new String[STATE_COUNT];          STATE_LABELS[STATE_PERSISTENT]              = "Persistent";          STATE_LABELS[STATE_TOP]                     = "       Top"; -        STATE_LABELS[STATE_BOUND_TOP_OR_FGS]        = "Bnd TopFgs"; +        STATE_LABELS[STATE_BOUND_FGS]               = "   Bnd Fgs"; +        STATE_LABELS[STATE_BOUND_TOP]               = "   Bnd Top";          STATE_LABELS[STATE_FGS]                     = "       Fgs";          STATE_LABELS[STATE_IMPORTANT_FOREGROUND]    = "    Imp Fg";          STATE_LABELS[STATE_IMPORTANT_BACKGROUND]    = "    Imp Bg"; @@ -101,16 +102,16 @@ public final class DumpUtils {          STATE_LABELS[STATE_HEAVY_WEIGHT]            = " Heavy Wgt";          STATE_LABELS[STATE_HOME]                    = "    (Home)";          STATE_LABELS[STATE_LAST_ACTIVITY]           = "(Last Act)"; -        STATE_LABELS[STATE_CACHED_ACTIVITY]         = " (Cch Act)"; -        STATE_LABELS[STATE_CACHED_ACTIVITY_CLIENT]  = "(Cch CAct)"; -        STATE_LABELS[STATE_CACHED_EMPTY]            = "(Cch Emty)"; +        STATE_LABELS[STATE_CACHED]                  = "  (Cached)"; +        STATE_LABELS[STATE_FROZEN]                  = "    Frozen";          STATE_LABEL_CACHED                          = "  (Cached)";          STATE_LABEL_TOTAL                           = "     TOTAL";          STATE_NAMES_CSV = new String[STATE_COUNT];          STATE_NAMES_CSV[STATE_PERSISTENT]               = "pers";          STATE_NAMES_CSV[STATE_TOP]                      = "top"; -        STATE_NAMES_CSV[STATE_BOUND_TOP_OR_FGS]         = "btopfgs"; +        STATE_NAMES_CSV[STATE_BOUND_FGS]                = "bfgs"; +        STATE_NAMES_CSV[STATE_BOUND_TOP]                = "btop";          STATE_NAMES_CSV[STATE_FGS]                      = "fgs";          STATE_NAMES_CSV[STATE_IMPORTANT_FOREGROUND]     = "impfg";          STATE_NAMES_CSV[STATE_IMPORTANT_BACKGROUND]     = "impbg"; @@ -121,14 +122,14 @@ public final class DumpUtils {          STATE_NAMES_CSV[STATE_HEAVY_WEIGHT]             = "heavy";          STATE_NAMES_CSV[STATE_HOME]                     = "home";          STATE_NAMES_CSV[STATE_LAST_ACTIVITY]            = "lastact"; -        STATE_NAMES_CSV[STATE_CACHED_ACTIVITY]          = "cch-activity"; -        STATE_NAMES_CSV[STATE_CACHED_ACTIVITY_CLIENT]   = "cch-aclient"; -        STATE_NAMES_CSV[STATE_CACHED_EMPTY]             = "cch-empty"; +        STATE_NAMES_CSV[STATE_CACHED]                   = "cached"; +        STATE_NAMES_CSV[STATE_FROZEN]                   = "frzn";          STATE_TAGS = new String[STATE_COUNT];          STATE_TAGS[STATE_PERSISTENT]                = "p";          STATE_TAGS[STATE_TOP]                       = "t"; -        STATE_TAGS[STATE_BOUND_TOP_OR_FGS]          = "d"; +        STATE_TAGS[STATE_BOUND_FGS]                 = "y"; +        STATE_TAGS[STATE_BOUND_TOP]                 = "z";          STATE_TAGS[STATE_FGS]                       = "g";          STATE_TAGS[STATE_IMPORTANT_FOREGROUND]      = "f";          STATE_TAGS[STATE_IMPORTANT_BACKGROUND]      = "b"; @@ -139,15 +140,14 @@ public final class DumpUtils {          STATE_TAGS[STATE_HEAVY_WEIGHT]              = "w";          STATE_TAGS[STATE_HOME]                      = "h";          STATE_TAGS[STATE_LAST_ACTIVITY]             = "l"; -        STATE_TAGS[STATE_CACHED_ACTIVITY]           = "a"; -        STATE_TAGS[STATE_CACHED_ACTIVITY_CLIENT]    = "c"; -        STATE_TAGS[STATE_CACHED_EMPTY]              = "e"; +        STATE_TAGS[STATE_CACHED]                    = "a"; +        STATE_TAGS[STATE_FROZEN]                    = "e";          STATE_PROTO_ENUMS = new int[STATE_COUNT];          STATE_PROTO_ENUMS[STATE_PERSISTENT] = ProcessStatsEnums.PROCESS_STATE_PERSISTENT;          STATE_PROTO_ENUMS[STATE_TOP] = ProcessStatsEnums.PROCESS_STATE_TOP; -        STATE_PROTO_ENUMS[STATE_BOUND_TOP_OR_FGS] = -                ProcessStatsEnums.PROCESS_STATE_BOUND_TOP_OR_FGS; +        STATE_PROTO_ENUMS[STATE_BOUND_FGS] = ProcessStatsEnums.PROCESS_STATE_BOUND_FGS; +        STATE_PROTO_ENUMS[STATE_BOUND_TOP] = ProcessStatsEnums.PROCESS_STATE_BOUND_TOP;          STATE_PROTO_ENUMS[STATE_FGS] = ProcessStatsEnums.PROCESS_STATE_FGS;          STATE_PROTO_ENUMS[STATE_IMPORTANT_FOREGROUND] =                  ProcessStatsEnums.PROCESS_STATE_IMPORTANT_FOREGROUND; @@ -161,10 +161,8 @@ public final class DumpUtils {          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; +        STATE_PROTO_ENUMS[STATE_CACHED] = ProcessStatsEnums.PROCESS_STATE_CACHED_ACTIVITY; +        STATE_PROTO_ENUMS[STATE_FROZEN] = ProcessStatsEnums.PROCESS_STATE_FROZEN;          // Remap states, as defined by ProcessStats.java, to a reduced subset of states for data          // aggregation / size reduction purposes. @@ -173,7 +171,9 @@ public final class DumpUtils {                  ProcessStatsEnums.AGGREGATED_PROCESS_STATE_PERSISTENT;          PROCESS_STATS_STATE_TO_AGGREGATED_STATE[STATE_TOP] =                  ProcessStatsEnums.AGGREGATED_PROCESS_STATE_TOP; -        PROCESS_STATS_STATE_TO_AGGREGATED_STATE[STATE_BOUND_TOP_OR_FGS] = +        PROCESS_STATS_STATE_TO_AGGREGATED_STATE[STATE_BOUND_FGS] = +                ProcessStatsEnums.AGGREGATED_PROCESS_STATE_BOUND_TOP_OR_FGS; +        PROCESS_STATS_STATE_TO_AGGREGATED_STATE[STATE_BOUND_TOP] =                  ProcessStatsEnums.AGGREGATED_PROCESS_STATE_BOUND_TOP_OR_FGS;          PROCESS_STATS_STATE_TO_AGGREGATED_STATE[STATE_FGS] =                  ProcessStatsEnums.AGGREGATED_PROCESS_STATE_FGS; @@ -196,11 +196,9 @@ public final class DumpUtils {                  ProcessStatsEnums.AGGREGATED_PROCESS_STATE_CACHED;          PROCESS_STATS_STATE_TO_AGGREGATED_STATE[STATE_LAST_ACTIVITY] =                  ProcessStatsEnums.AGGREGATED_PROCESS_STATE_CACHED; -        PROCESS_STATS_STATE_TO_AGGREGATED_STATE[STATE_CACHED_ACTIVITY] = -                ProcessStatsEnums.AGGREGATED_PROCESS_STATE_CACHED; -        PROCESS_STATS_STATE_TO_AGGREGATED_STATE[STATE_CACHED_ACTIVITY_CLIENT] = +        PROCESS_STATS_STATE_TO_AGGREGATED_STATE[STATE_CACHED] =                  ProcessStatsEnums.AGGREGATED_PROCESS_STATE_CACHED; -        PROCESS_STATS_STATE_TO_AGGREGATED_STATE[STATE_CACHED_EMPTY] = +        PROCESS_STATS_STATE_TO_AGGREGATED_STATE[STATE_FROZEN] =                  ProcessStatsEnums.AGGREGATED_PROCESS_STATE_CACHED;      } diff --git a/core/java/com/android/internal/app/procstats/ProcessState.java b/core/java/com/android/internal/app/procstats/ProcessState.java index 818a50366115..fff778c616ee 100644 --- a/core/java/com/android/internal/app/procstats/ProcessState.java +++ b/core/java/com/android/internal/app/procstats/ProcessState.java @@ -28,10 +28,9 @@ 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_USS_MINIMUM;  import static com.android.internal.app.procstats.ProcessStats.STATE_BACKUP; -import static com.android.internal.app.procstats.ProcessStats.STATE_BOUND_TOP_OR_FGS; -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_BOUND_FGS; +import static com.android.internal.app.procstats.ProcessStats.STATE_BOUND_TOP; +import static com.android.internal.app.procstats.ProcessStats.STATE_CACHED;  import static com.android.internal.app.procstats.ProcessStats.STATE_COUNT;  import static com.android.internal.app.procstats.ProcessStats.STATE_FGS;  import static com.android.internal.app.procstats.ProcessStats.STATE_HEAVY_WEIGHT; @@ -85,9 +84,9 @@ public final class ProcessState {          STATE_PERSISTENT,               // ActivityManager.PROCESS_STATE_PERSISTENT          STATE_PERSISTENT,               // ActivityManager.PROCESS_STATE_PERSISTENT_UI          STATE_TOP,                      // ActivityManager.PROCESS_STATE_TOP -        STATE_BOUND_TOP_OR_FGS,         // ActivityManager.PROCESS_STATE_BOUND_TOP +        STATE_BOUND_TOP,                // ActivityManager.PROCESS_STATE_BOUND_TOP          STATE_FGS,                      // ActivityManager.PROCESS_STATE_FOREGROUND_SERVICE -        STATE_BOUND_TOP_OR_FGS,         // ActivityManager.PROCESS_STATE_BOUND_FOREGROUND_SERVICE +        STATE_BOUND_FGS,                // ActivityManager.PROCESS_STATE_BOUND_FOREGROUND_SERVICE          STATE_IMPORTANT_FOREGROUND,     // ActivityManager.PROCESS_STATE_IMPORTANT_FOREGROUND          STATE_IMPORTANT_BACKGROUND,     // ActivityManager.PROCESS_STATE_IMPORTANT_BACKGROUND          STATE_IMPORTANT_BACKGROUND,     // ActivityManager.PROCESS_STATE_TRANSIENT_BACKGROUND @@ -98,10 +97,10 @@ public final class ProcessState {          STATE_HEAVY_WEIGHT,             // ActivityManager.PROCESS_STATE_HEAVY_WEIGHT          STATE_HOME,                     // ActivityManager.PROCESS_STATE_HOME          STATE_LAST_ACTIVITY,            // ActivityManager.PROCESS_STATE_LAST_ACTIVITY -        STATE_CACHED_ACTIVITY,          // ActivityManager.PROCESS_STATE_CACHED_ACTIVITY -        STATE_CACHED_ACTIVITY_CLIENT,   // ActivityManager.PROCESS_STATE_CACHED_ACTIVITY_CLIENT -        STATE_CACHED_ACTIVITY,          // ActivityManager.PROCESS_STATE_CACHED_RECENT -        STATE_CACHED_EMPTY,             // ActivityManager.PROCESS_STATE_CACHED_EMPTY +        STATE_CACHED,                   // ActivityManager.PROCESS_STATE_CACHED_ACTIVITY +        STATE_CACHED,                   // ActivityManager.PROCESS_STATE_CACHED_ACTIVITY_CLIENT +        STATE_CACHED,                   // ActivityManager.PROCESS_STATE_CACHED_RECENT +        STATE_CACHED,                   // ActivityManager.PROCESS_STATE_CACHED_EMPTY      };      public static final Comparator<ProcessState> COMPARATOR = new Comparator<ProcessState>() { @@ -926,8 +925,11 @@ public final class ProcessState {                  screenStates, memStates, new int[] { STATE_PERSISTENT }, now, totalTime, true);          dumpProcessSummaryDetails(pw, prefix, DumpUtils.STATE_LABELS[STATE_TOP],                  screenStates, memStates, new int[] {STATE_TOP}, now, totalTime, true); -        dumpProcessSummaryDetails(pw, prefix, DumpUtils.STATE_LABELS[STATE_BOUND_TOP_OR_FGS], -                screenStates, memStates, new int[] { STATE_BOUND_TOP_OR_FGS}, now, totalTime, +        dumpProcessSummaryDetails(pw, prefix, DumpUtils.STATE_LABELS[STATE_BOUND_TOP], +                screenStates, memStates, new int[] { STATE_BOUND_TOP }, now, totalTime, +                true); +        dumpProcessSummaryDetails(pw, prefix, DumpUtils.STATE_LABELS[STATE_BOUND_FGS], +                screenStates, memStates, new int[] { STATE_BOUND_FGS }, now, totalTime,                  true);          dumpProcessSummaryDetails(pw, prefix, DumpUtils.STATE_LABELS[STATE_FGS],                  screenStates, memStates, new int[] { STATE_FGS}, now, totalTime, @@ -953,9 +955,6 @@ public final class ProcessState {                  screenStates, memStates, new int[] {STATE_HOME}, now, totalTime, true);          dumpProcessSummaryDetails(pw, prefix, DumpUtils.STATE_LABELS[STATE_LAST_ACTIVITY],                  screenStates, memStates, new int[] {STATE_LAST_ACTIVITY}, now, totalTime, true); -        dumpProcessSummaryDetails(pw, prefix, DumpUtils.STATE_LABEL_CACHED, -                screenStates, memStates, new int[] {STATE_CACHED_ACTIVITY, -                        STATE_CACHED_ACTIVITY_CLIENT, STATE_CACHED_EMPTY}, now, totalTime, true);      }      public void dumpProcessState(PrintWriter pw, String prefix, @@ -1563,7 +1562,10 @@ public final class ProcessState {                  case STATE_TOP:                      topMs += duration;                      break; -                case STATE_BOUND_TOP_OR_FGS: +                case STATE_BOUND_FGS: +                    boundFgsMs += duration; +                    break; +                case STATE_BOUND_TOP:                      boundTopMs += duration;                      break;                  case STATE_FGS: @@ -1583,13 +1585,10 @@ public final class ProcessState {                  case STATE_PERSISTENT:                      otherMs += duration;                      break; -                case STATE_CACHED_ACTIVITY: -                case STATE_CACHED_ACTIVITY_CLIENT: -                case STATE_CACHED_EMPTY: +                case STATE_CACHED:                      cachedMs += duration;                      break; -                    // TODO (b/261910877) Add support for tracking boundFgsMs and -                    // frozenMs. +                    // TODO (b/261910877) Add support for tracking frozenMs.              }          }          statsEventOutput.write( diff --git a/core/java/com/android/internal/app/procstats/ProcessStats.java b/core/java/com/android/internal/app/procstats/ProcessStats.java index f3ed09a861e3..3ce234b4167b 100644 --- a/core/java/com/android/internal/app/procstats/ProcessStats.java +++ b/core/java/com/android/internal/app/procstats/ProcessStats.java @@ -81,21 +81,21 @@ public final class ProcessStats implements Parcelable {      public static final int STATE_NOTHING = -1;      public static final int STATE_PERSISTENT = 0;      public static final int STATE_TOP = 1; -    public static final int STATE_BOUND_TOP_OR_FGS = 2; +    public static final int STATE_BOUND_TOP = 2;      public static final int STATE_FGS = 3; -    public static final int STATE_IMPORTANT_FOREGROUND = 4; -    public static final int STATE_IMPORTANT_BACKGROUND = 5; -    public static final int STATE_BACKUP = 6; -    public static final int STATE_SERVICE = 7; -    public static final int STATE_SERVICE_RESTARTING = 8; -    public static final int STATE_RECEIVER = 9; -    public static final int STATE_HEAVY_WEIGHT = 10; -    public static final int STATE_HOME = 11; -    public static final int STATE_LAST_ACTIVITY = 12; -    public static final int STATE_CACHED_ACTIVITY = 13; -    public static final int STATE_CACHED_ACTIVITY_CLIENT = 14; -    public static final int STATE_CACHED_EMPTY = 15; -    public static final int STATE_COUNT = STATE_CACHED_EMPTY+1; +    public static final int STATE_BOUND_FGS = 4; +    public static final int STATE_IMPORTANT_FOREGROUND = 5; +    public static final int STATE_IMPORTANT_BACKGROUND = 6; +    public static final int STATE_BACKUP = 7; +    public static final int STATE_SERVICE = 8; +    public static final int STATE_SERVICE_RESTARTING = 9; +    public static final int STATE_RECEIVER = 10; +    public static final int STATE_HEAVY_WEIGHT = 11; +    public static final int STATE_HOME = 12; +    public static final int STATE_LAST_ACTIVITY = 13; +    public static final int STATE_CACHED = 14; +    public static final int STATE_FROZEN = 15; +    public static final int STATE_COUNT = STATE_FROZEN + 1;      public static final int PSS_SAMPLE_COUNT = 0;      public static final int PSS_MINIMUM = 1; @@ -154,9 +154,10 @@ public final class ProcessStats implements Parcelable {      public static final int[] ALL_SCREEN_ADJ = new int[] { ADJ_SCREEN_OFF, ADJ_SCREEN_ON };      public static final int[] NON_CACHED_PROC_STATES = new int[] { -            STATE_PERSISTENT, STATE_TOP, STATE_BOUND_TOP_OR_FGS, STATE_FGS, +            STATE_PERSISTENT, STATE_TOP, STATE_FGS,              STATE_IMPORTANT_FOREGROUND, STATE_IMPORTANT_BACKGROUND, STATE_BACKUP, -            STATE_SERVICE, STATE_SERVICE_RESTARTING, STATE_RECEIVER, STATE_HEAVY_WEIGHT +            STATE_SERVICE, STATE_SERVICE_RESTARTING, STATE_RECEIVER, STATE_HEAVY_WEIGHT, +            STATE_BOUND_TOP, STATE_BOUND_FGS      };      public static final int[] BACKGROUND_PROC_STATES = new int[] { @@ -165,11 +166,11 @@ public final class ProcessStats implements Parcelable {      };      public static final int[] ALL_PROC_STATES = new int[] { STATE_PERSISTENT, -            STATE_TOP, STATE_BOUND_TOP_OR_FGS, STATE_FGS, STATE_IMPORTANT_FOREGROUND, +            STATE_TOP, STATE_FGS, STATE_IMPORTANT_FOREGROUND,              STATE_IMPORTANT_BACKGROUND, STATE_BACKUP,              STATE_SERVICE, STATE_SERVICE_RESTARTING, STATE_RECEIVER, -            STATE_HEAVY_WEIGHT, STATE_HOME, STATE_LAST_ACTIVITY, STATE_CACHED_ACTIVITY, -            STATE_CACHED_ACTIVITY_CLIENT, STATE_CACHED_EMPTY +            STATE_HEAVY_WEIGHT, STATE_HOME, STATE_LAST_ACTIVITY, STATE_CACHED, +            STATE_BOUND_TOP, STATE_BOUND_FGS, STATE_FROZEN      };      // Should report process stats. diff --git a/core/tests/coretests/src/com/android/internal/app/procstats/ProcessStatsTest.java b/core/tests/coretests/src/com/android/internal/app/procstats/ProcessStatsTest.java index 9b9a84b79da3..d4276efe39c2 100644 --- a/core/tests/coretests/src/com/android/internal/app/procstats/ProcessStatsTest.java +++ b/core/tests/coretests/src/com/android/internal/app/procstats/ProcessStatsTest.java @@ -23,6 +23,8 @@ import static org.mockito.ArgumentMatchers.eq;  import static org.mockito.Mockito.verify;  import static org.mockito.MockitoAnnotations.initMocks; +import android.app.ActivityManager; +  import androidx.test.filters.SmallTest;  import com.android.internal.util.FrameworkStatsLog; @@ -128,6 +130,34 @@ public class ProcessStatsTest extends TestCase {      }      @SmallTest +    public void testDumpBoundFgsDuration() throws Exception { +        ProcessStats processStats = new ProcessStats(); +        ProcessState processState = +                processStats.getProcessStateLocked( +                        APP_1_PACKAGE_NAME, APP_1_UID, APP_1_VERSION, APP_1_PROCESS_NAME); +        processState.setState(ActivityManager.PROCESS_STATE_BOUND_FOREGROUND_SERVICE, +                ProcessStats.ADJ_MEM_FACTOR_NORMAL, NOW_MS, /* pkgList */ null); +        processState.commitStateTime(NOW_MS + TimeUnit.SECONDS.toMillis(DURATION_SECS)); +        processStats.dumpProcessState(FrameworkStatsLog.PROCESS_STATE, mStatsEventOutput); +        verify(mStatsEventOutput) +                .write( +                        eq(FrameworkStatsLog.PROCESS_STATE), +                        eq(APP_1_UID), +                        eq(APP_1_PROCESS_NAME), +                        anyInt(), +                        anyInt(), +                        eq(0), +                        eq(0), +                        eq(0), +                        eq(0), +                        eq(DURATION_SECS), +                        eq(0), +                        eq(0), +                        eq(0), +                        eq(0)); +    } + +    @SmallTest      public void testDumpProcessAssociation() throws Exception {          ProcessStats processStats = new ProcessStats();          AssociationState associationState = diff --git a/services/core/java/com/android/server/am/ProcessStatsService.java b/services/core/java/com/android/server/am/ProcessStatsService.java index 7371d07183a9..7d9de91cac85 100644 --- a/services/core/java/com/android/server/am/ProcessStatsService.java +++ b/services/core/java/com/android/server/am/ProcessStatsService.java @@ -69,7 +69,7 @@ public final class ProcessStatsService extends IProcessStats.Stub {      // define the encoding of that data in an integer.      static final int MAX_HISTORIC_STATES = 8;   // Maximum number of historic states we will keep. -    static final String STATE_FILE_PREFIX = "state-"; // Prefix to use for state filenames. +    static final String STATE_FILE_PREFIX = "state-v2-"; // Prefix to use for state filenames.      static final String STATE_FILE_SUFFIX = ".bin"; // Suffix to use for state filenames.      static final String STATE_FILE_CHECKIN_SUFFIX = ".ci"; // State files that have checked in.      static long WRITE_PERIOD = 30*60*1000;      // Write file every 30 minutes or so. @@ -462,6 +462,10 @@ public final class ProcessStatsService extends IProcessStats.Stub {              File file = files[i];              String fileStr = file.getPath();              if (DEBUG) Slog.d(TAG, "Collecting: " + fileStr); +            if (!file.getName().startsWith(STATE_FILE_PREFIX)) { +                if (DEBUG) Slog.d(TAG, "Skipping: mismatching prefix"); +                continue; +            }              if (!inclCheckedIn && fileStr.endsWith(STATE_FILE_CHECKIN_SUFFIX)) {                  if (DEBUG) Slog.d(TAG, "Skipping: already checked in");                  continue; @@ -478,6 +482,14 @@ public final class ProcessStatsService extends IProcessStats.Stub {      @GuardedBy("mFileLock")      private void trimHistoricStatesWriteLF() { +        File[] files = mBaseDir.listFiles(); +        if (files != null) { +            for (int i = 0; i < files.length; i++) { +                if (!files[i].getName().startsWith(STATE_FILE_PREFIX)) { +                    files[i].delete(); +                } +            } +        }          ArrayList<String> filesArray = getCommittedFilesLF(MAX_HISTORIC_STATES, false, true);          if (filesArray == null) {              return;  |