diff options
| author | 2022-11-10 16:53:32 -0800 | |
|---|---|---|
| committer | 2022-11-15 09:03:03 -0800 | |
| commit | b3be3d5bea85f5722ba16492ee446df9f310a5a9 (patch) | |
| tree | e001c47326f754dd16cd4c5c1d59a4a9b635ce9c | |
| parent | 84d812ffb4d5ed049137afb9aa19f4de17ec8e7d (diff) | |
AMS: Add Phenotype key for proactive kills
KEY_PROACTIVE_KILLS_ENABLED controls whether proactive kills
are enabled or not.
Bug: 249601646
Test: adb shell device_config put activity_manager proactive_kills_enabled true
Test: adb shell device_config get activity_manager proactive_kills_enabled
Change-Id: I173058d77e18294a882714591dcea96dae06c12f
Signed-off-by: Kalesh Singh <kaleshsingh@google.com>
| -rw-r--r-- | services/core/java/com/android/server/am/ActivityManagerConstants.java | 20 | ||||
| -rw-r--r-- | services/core/java/com/android/server/am/OomAdjuster.java | 2 |
2 files changed, 21 insertions, 1 deletions
diff --git a/services/core/java/com/android/server/am/ActivityManagerConstants.java b/services/core/java/com/android/server/am/ActivityManagerConstants.java index 16fe121fecb7..4f207a76a4d5 100644 --- a/services/core/java/com/android/server/am/ActivityManagerConstants.java +++ b/services/core/java/com/android/server/am/ActivityManagerConstants.java @@ -249,6 +249,11 @@ final class ActivityManagerConstants extends ContentObserver { private static final String KEY_MAX_PHANTOM_PROCESSES = "max_phantom_processes"; /** + * Enables proactive killing of cached apps + */ + private static final String KEY_PROACTIVE_KILLS_ENABLED = "proactive_kills_enabled"; + + /** * Default value for mFlagBackgroundActivityStartsEnabled if not explicitly set in * Settings.Global. This allows it to be set experimentally unless it has been * enabled/disabled in developer options. Defaults to false. @@ -874,6 +879,8 @@ final class ActivityManagerConstants extends ContentObserver { */ private static final long DEFAULT_MIN_ASSOC_LOG_DURATION = 5 * 60 * 1000; // 5 mins + private static final boolean DEFAULT_PROACTIVE_KILLS_ENABLED = false; + private static final String KEY_MIN_ASSOC_LOG_DURATION = "min_assoc_log_duration"; public static long MIN_ASSOC_LOG_DURATION = DEFAULT_MIN_ASSOC_LOG_DURATION; @@ -904,6 +911,7 @@ final class ActivityManagerConstants extends ContentObserver { public static boolean BINDER_HEAVY_HITTER_AUTO_SAMPLER_ENABLED; public static int BINDER_HEAVY_HITTER_AUTO_SAMPLER_BATCHSIZE; public static float BINDER_HEAVY_HITTER_AUTO_SAMPLER_THRESHOLD; + public static boolean PROACTIVE_KILLS_ENABLED = DEFAULT_PROACTIVE_KILLS_ENABLED; private final OnPropertiesChangedListener mOnDeviceConfigChangedListener = new OnPropertiesChangedListener() { @@ -1040,6 +1048,9 @@ final class ActivityManagerConstants extends ContentObserver { case KEY_MAX_SERVICE_CONNECTIONS_PER_PROCESS: updateMaxServiceConnectionsPerProcess(); break; + case KEY_PROACTIVE_KILLS_ENABLED: + updateProactiveKillsEnabled(); + break; default: break; } @@ -1660,6 +1671,13 @@ final class ActivityManagerConstants extends ContentObserver { CUR_TRIM_CACHED_PROCESSES = (MAX_CACHED_PROCESSES-rawMaxEmptyProcesses)/3; } + private void updateProactiveKillsEnabled() { + PROACTIVE_KILLS_ENABLED = DeviceConfig.getBoolean( + DeviceConfig.NAMESPACE_ACTIVITY_MANAGER, + KEY_PROACTIVE_KILLS_ENABLED, + DEFAULT_PROACTIVE_KILLS_ENABLED); + } + private void updateMinAssocLogDuration() { MIN_ASSOC_LOG_DURATION = DeviceConfig.getLong( DeviceConfig.NAMESPACE_ACTIVITY_MANAGER, KEY_MIN_ASSOC_LOG_DURATION, @@ -1860,6 +1878,8 @@ final class ActivityManagerConstants extends ContentObserver { pw.print("="); pw.println(mNetworkAccessTimeoutMs); pw.print(" "); pw.print(KEY_MAX_SERVICE_CONNECTIONS_PER_PROCESS); pw.print("="); pw.println(mMaxServiceConnectionsPerProcess); + pw.print(" "); pw.print(KEY_PROACTIVE_KILLS_ENABLED); + pw.print("="); pw.println(PROACTIVE_KILLS_ENABLED); pw.println(); if (mOverrideMaxCachedProcesses >= 0) { diff --git a/services/core/java/com/android/server/am/OomAdjuster.java b/services/core/java/com/android/server/am/OomAdjuster.java index 3c0fd8f5e496..96e6ace5c56f 100644 --- a/services/core/java/com/android/server/am/OomAdjuster.java +++ b/services/core/java/com/android/server/am/OomAdjuster.java @@ -1148,7 +1148,7 @@ public class OomAdjuster { int numEmpty = 0; int numTrimming = 0; - boolean proactiveKillsEnabled = false; // TODO: Configure from phenotype + boolean proactiveKillsEnabled = mConstants.PROACTIVE_KILLS_ENABLED; double lowSwapThresholdPercent = 0.10; // TODO: Configure from phenotype double freeSwapPercent = proactiveKillsEnabled ? getFreeSwapPercent() : 1.00; ProcessRecord lruCachedApp = null; |