diff options
| author | 2021-08-06 23:43:14 +0000 | |
|---|---|---|
| committer | 2021-08-06 23:43:14 +0000 | |
| commit | 4fdec46a8d2ac96fe67de4e02556d2a14a4ecaac (patch) | |
| tree | 5d7d74eb5f8b3de1ff9f999efe855a6ea62b7fa2 | |
| parent | c3d7c82b545c20fe72ee3043163f625edafc17e8 (diff) | |
| parent | ccdd40e58707e8d0fde902b89ef151488d133833 (diff) | |
Merge "Enable Freezer by default" into sc-dev am: ccdd40e587
Original change: https://googleplex-android-review.googlesource.com/c/platform/frameworks/base/+/15475121
Change-Id: I8670ecda39cbae6bb3c5cffe4be5c4630629b5e7
| -rw-r--r-- | services/core/java/com/android/server/am/CachedAppOptimizer.java | 6 | ||||
| -rw-r--r-- | services/tests/mockingservicestests/src/com/android/server/am/CachedAppOptimizerTest.java | 38 |
2 files changed, 23 insertions, 21 deletions
diff --git a/services/core/java/com/android/server/am/CachedAppOptimizer.java b/services/core/java/com/android/server/am/CachedAppOptimizer.java index 7c336d768006..f32aa2295cb8 100644 --- a/services/core/java/com/android/server/am/CachedAppOptimizer.java +++ b/services/core/java/com/android/server/am/CachedAppOptimizer.java @@ -101,7 +101,7 @@ public final class CachedAppOptimizer { // Defaults for phenotype flags. @VisibleForTesting static final Boolean DEFAULT_USE_COMPACTION = false; - @VisibleForTesting static final Boolean DEFAULT_USE_FREEZER = false; + @VisibleForTesting static final Boolean DEFAULT_USE_FREEZER = true; @VisibleForTesting static final int DEFAULT_COMPACT_ACTION_1 = COMPACT_ACTION_FILE; @VisibleForTesting static final int DEFAULT_COMPACT_ACTION_2 = COMPACT_ACTION_FULL; @VisibleForTesting static final long DEFAULT_COMPACT_THROTTLE_1 = 5_000; @@ -276,7 +276,7 @@ public final class CachedAppOptimizer { DEFAULT_COMPACT_THROTTLE_MAX_OOM_ADJ; @GuardedBy("mPhenotypeFlagLock") private volatile boolean mUseCompaction = DEFAULT_USE_COMPACTION; - private volatile boolean mUseFreezer = DEFAULT_USE_FREEZER; + private volatile boolean mUseFreezer = false; // set to DEFAULT in init() @GuardedBy("this") private int mFreezerDisableCount = 1; // Freezer is initially disabled, until enabled private final Random mRandom = new Random(); @@ -678,6 +678,8 @@ public final class CachedAppOptimizer { KEY_USE_FREEZER, DEFAULT_USE_FREEZER)) { mUseFreezer = isFreezerSupported(); updateFreezerDebounceTimeout(); + } else { + mUseFreezer = false; } final boolean useFreezer = mUseFreezer; diff --git a/services/tests/mockingservicestests/src/com/android/server/am/CachedAppOptimizerTest.java b/services/tests/mockingservicestests/src/com/android/server/am/CachedAppOptimizerTest.java index 20a58426f1eb..a883293b13b9 100644 --- a/services/tests/mockingservicestests/src/com/android/server/am/CachedAppOptimizerTest.java +++ b/services/tests/mockingservicestests/src/com/android/server/am/CachedAppOptimizerTest.java @@ -173,8 +173,6 @@ public final class CachedAppOptimizerTest { CachedAppOptimizer.DEFAULT_COMPACT_FULL_RSS_THROTTLE_KB); assertThat(mCachedAppOptimizerUnderTest.mFullDeltaRssThrottleKb).isEqualTo( CachedAppOptimizer.DEFAULT_COMPACT_FULL_DELTA_RSS_THROTTLE_KB); - assertThat(mCachedAppOptimizerUnderTest.useFreezer()).isEqualTo( - CachedAppOptimizer.DEFAULT_USE_FREEZER); assertThat(mCachedAppOptimizerUnderTest.mCompactThrottleMinOomAdj).isEqualTo( CachedAppOptimizer.DEFAULT_COMPACT_THROTTLE_MIN_OOM_ADJ); assertThat(mCachedAppOptimizerUnderTest.mCompactThrottleMaxOomAdj).isEqualTo( @@ -188,6 +186,10 @@ public final class CachedAppOptimizerTest { } assertThat(mCachedAppOptimizerUnderTest.mProcStateThrottle) .containsExactlyElementsIn(expected); + + Assume.assumeTrue(mCachedAppOptimizerUnderTest.isFreezerSupported()); + assertThat(mCachedAppOptimizerUnderTest.useFreezer()).isEqualTo( + CachedAppOptimizer.DEFAULT_USE_FREEZER); } @Test @@ -244,9 +246,8 @@ public final class CachedAppOptimizerTest { CachedAppOptimizer.DEFAULT_COMPACT_THROTTLE_MAX_OOM_ADJ - 10), false); DeviceConfig.setProperty(DeviceConfig.NAMESPACE_ACTIVITY_MANAGER, CachedAppOptimizer.KEY_COMPACT_PROC_STATE_THROTTLE, "1,2,3", false); - assertThat(mCachedAppOptimizerUnderTest.useFreezer()).isEqualTo( - CachedAppOptimizer.DEFAULT_USE_FREEZER); - DeviceConfig.setProperty(DeviceConfig.NAMESPACE_ACTIVITY_MANAGER, + assertThat(mCachedAppOptimizerUnderTest.useFreezer()).isFalse(); + DeviceConfig.setProperty(DeviceConfig.NAMESPACE_ACTIVITY_MANAGER_NATIVE_BOOT, CachedAppOptimizer.KEY_USE_FREEZER, CachedAppOptimizer.DEFAULT_USE_FREEZER ? "false" : "true", false); @@ -291,7 +292,8 @@ public final class CachedAppOptimizerTest { CachedAppOptimizer.DEFAULT_COMPACT_FULL_RSS_THROTTLE_KB + 1); assertThat(mCachedAppOptimizerUnderTest.mProcStateThrottle).containsExactly(1, 2, 3); - if (mCachedAppOptimizerUnderTest.isFreezerSupported()) { + Assume.assumeTrue(CachedAppOptimizer.isFreezerSupported()); + if (CachedAppOptimizer.isFreezerSupported()) { if (CachedAppOptimizer.DEFAULT_USE_FREEZER) { assertThat(mCachedAppOptimizerUnderTest.useFreezer()).isFalse(); } else { @@ -325,15 +327,15 @@ public final class CachedAppOptimizerTest { @Test public void useFreeze_doesNotListenToDeviceConfigChanges() throws InterruptedException { - Assume.assumeTrue(mCachedAppOptimizerUnderTest.isFreezerSupported()); + Assume.assumeTrue(CachedAppOptimizer.isFreezerSupported()); - assertThat(mCachedAppOptimizerUnderTest.useFreezer()).isEqualTo( - CachedAppOptimizer.DEFAULT_USE_FREEZER); + assertThat(mCachedAppOptimizerUnderTest.useFreezer()).isFalse(); // The freezer DeviceConfig property is read at boot only - DeviceConfig.setProperty(DeviceConfig.NAMESPACE_ACTIVITY_MANAGER, + DeviceConfig.setProperty(DeviceConfig.NAMESPACE_ACTIVITY_MANAGER_NATIVE_BOOT, CachedAppOptimizer.KEY_USE_FREEZER, "true", false); mCachedAppOptimizerUnderTest.init(); + assertThat(mCachedAppOptimizerUnderTest.useFreezer()).isTrue(); mCountDown = new CountDownLatch(1); // No notifications should get to the cached app optimizer. @@ -346,14 +348,13 @@ public final class CachedAppOptimizerTest { // Set the flag the other way without rebooting. It shall not change. mCountDown = new CountDownLatch(1); - DeviceConfig.setProperty(DeviceConfig.NAMESPACE_ACTIVITY_MANAGER, + DeviceConfig.setProperty(DeviceConfig.NAMESPACE_ACTIVITY_MANAGER_NATIVE_BOOT, CachedAppOptimizer.KEY_USE_FREEZER, "false", false); assertThat(mCountDown.await(5, TimeUnit.SECONDS)).isTrue(); assertThat(mCachedAppOptimizerUnderTest.useFreezer()).isTrue(); - // Now, set the flag to false and restart the cached app optimizer - DeviceConfig.setProperty(DeviceConfig.NAMESPACE_ACTIVITY_MANAGER, + DeviceConfig.setProperty(DeviceConfig.NAMESPACE_ACTIVITY_MANAGER_NATIVE_BOOT, CachedAppOptimizer.KEY_USE_FREEZER, "false", false); mCachedAppOptimizerUnderTest.init(); @@ -380,18 +381,17 @@ public final class CachedAppOptimizerTest { @Test public void useFreeze_listensToDeviceConfigChangesBadValues() throws InterruptedException { - assertThat(mCachedAppOptimizerUnderTest.useFreezer()).isEqualTo( - CachedAppOptimizer.DEFAULT_USE_FREEZER); + Assume.assumeTrue(CachedAppOptimizer.isFreezerSupported()); + assertThat(mCachedAppOptimizerUnderTest.useFreezer()).isFalse(); // When we push an invalid flag value... - DeviceConfig.setProperty(DeviceConfig.NAMESPACE_ACTIVITY_MANAGER, + DeviceConfig.setProperty(DeviceConfig.NAMESPACE_ACTIVITY_MANAGER_NATIVE_BOOT, CachedAppOptimizer.KEY_USE_FREEZER, "foobar", false); mCachedAppOptimizerUnderTest.init(); - // Then we set the default. - assertThat(mCachedAppOptimizerUnderTest.useFreezer()).isEqualTo( - CachedAppOptimizer.DEFAULT_USE_FREEZER); + // DeviceConfig treats invalid value as false + assertThat(mCachedAppOptimizerUnderTest.useFreezer()).isFalse(); } @Test |