diff options
| author | 2019-02-08 19:17:10 +0000 | |
|---|---|---|
| committer | 2019-02-08 19:17:10 +0000 | |
| commit | cf1ab294397c53e759efa7f27bfd62b36c9340c8 (patch) | |
| tree | f950572a0ada02fadbc14db2e81b9b2904135ee4 | |
| parent | f4b2b512bec99c2d57f370bcfc019d7ee8f5974d (diff) | |
| parent | 0567ec6323863e66a2eced7fbd3775443a42c68f (diff) | |
Merge "Add a constant for low perceptible adj"
4 files changed, 29 insertions, 17 deletions
diff --git a/services/core/java/com/android/server/am/ActivityManagerService.java b/services/core/java/com/android/server/am/ActivityManagerService.java index 8c246eb554c5..60a45bfe04bb 100644 --- a/services/core/java/com/android/server/am/ActivityManagerService.java +++ b/services/core/java/com/android/server/am/ActivityManagerService.java @@ -6549,7 +6549,7 @@ public class ActivityManagerService extends IActivityManager.Stub conn = incProviderCountLocked(r, cpr, token, callingUid, callingPackage, callingTag, stable); if (conn != null && (conn.stableCount+conn.unstableCount) == 1) { - if (cpr.proc != null && r.setAdj <= ProcessList.PERCEPTIBLE_APP_ADJ) { + if (cpr.proc != null && r.setAdj <= ProcessList.PERCEPTIBLE_LOW_APP_ADJ) { // If this is a perceptible app accessing the provider, // make sure to count it as being accessed and thus // back up on the LRU list. This is good because @@ -10828,6 +10828,7 @@ public class ActivityManagerService extends IActivityManager.Stub printOomLevel(pw, "FOREGROUND_APP_ADJ", ProcessList.FOREGROUND_APP_ADJ); printOomLevel(pw, "VISIBLE_APP_ADJ", ProcessList.VISIBLE_APP_ADJ); printOomLevel(pw, "PERCEPTIBLE_APP_ADJ", ProcessList.PERCEPTIBLE_APP_ADJ); + printOomLevel(pw, "PERCEPTIBLE_LOW_APP_ADJ", ProcessList.PERCEPTIBLE_LOW_APP_ADJ); printOomLevel(pw, "BACKUP_APP_ADJ", ProcessList.BACKUP_APP_ADJ); printOomLevel(pw, "HEAVY_WEIGHT_APP_ADJ", ProcessList.HEAVY_WEIGHT_APP_ADJ); printOomLevel(pw, "SERVICE_ADJ", ProcessList.SERVICE_ADJ); @@ -10878,16 +10879,17 @@ public class ActivityManagerService extends IActivityManager.Stub pw.println(" Total number of kills: " + cnt); return reportLmkKillAtOrBelow(pw, ProcessList.CACHED_APP_MAX_ADJ) && - reportLmkKillAtOrBelow(pw, ProcessList.CACHED_APP_MIN_ADJ) && - reportLmkKillAtOrBelow(pw, ProcessList.SERVICE_B_ADJ) && - reportLmkKillAtOrBelow(pw, ProcessList.PREVIOUS_APP_ADJ) && - reportLmkKillAtOrBelow(pw, ProcessList.HOME_APP_ADJ) && - reportLmkKillAtOrBelow(pw, ProcessList.SERVICE_ADJ) && - reportLmkKillAtOrBelow(pw, ProcessList.HEAVY_WEIGHT_APP_ADJ) && - reportLmkKillAtOrBelow(pw, ProcessList.BACKUP_APP_ADJ) && - reportLmkKillAtOrBelow(pw, ProcessList.PERCEPTIBLE_APP_ADJ) && - reportLmkKillAtOrBelow(pw, ProcessList.VISIBLE_APP_ADJ) && - reportLmkKillAtOrBelow(pw, ProcessList.FOREGROUND_APP_ADJ); + reportLmkKillAtOrBelow(pw, ProcessList.CACHED_APP_MIN_ADJ) && + reportLmkKillAtOrBelow(pw, ProcessList.SERVICE_B_ADJ) && + reportLmkKillAtOrBelow(pw, ProcessList.PREVIOUS_APP_ADJ) && + reportLmkKillAtOrBelow(pw, ProcessList.HOME_APP_ADJ) && + reportLmkKillAtOrBelow(pw, ProcessList.SERVICE_ADJ) && + reportLmkKillAtOrBelow(pw, ProcessList.HEAVY_WEIGHT_APP_ADJ) && + reportLmkKillAtOrBelow(pw, ProcessList.BACKUP_APP_ADJ) && + reportLmkKillAtOrBelow(pw, ProcessList.PERCEPTIBLE_LOW_APP_ADJ) && + reportLmkKillAtOrBelow(pw, ProcessList.PERCEPTIBLE_APP_ADJ) && + reportLmkKillAtOrBelow(pw, ProcessList.VISIBLE_APP_ADJ) && + reportLmkKillAtOrBelow(pw, ProcessList.FOREGROUND_APP_ADJ); } /** @@ -11760,7 +11762,8 @@ public class ActivityManagerService extends IActivityManager.Stub ProcessList.NATIVE_ADJ, ProcessList.SYSTEM_ADJ, ProcessList.PERSISTENT_PROC_ADJ, ProcessList.PERSISTENT_SERVICE_ADJ, ProcessList.FOREGROUND_APP_ADJ, - ProcessList.VISIBLE_APP_ADJ, ProcessList.PERCEPTIBLE_APP_ADJ, + ProcessList.VISIBLE_APP_ADJ, + ProcessList.PERCEPTIBLE_APP_ADJ, ProcessList.PERCEPTIBLE_LOW_APP_ADJ, ProcessList.BACKUP_APP_ADJ, ProcessList.HEAVY_WEIGHT_APP_ADJ, ProcessList.SERVICE_ADJ, ProcessList.HOME_APP_ADJ, ProcessList.PREVIOUS_APP_ADJ, ProcessList.SERVICE_B_ADJ, ProcessList.CACHED_APP_MIN_ADJ @@ -11768,7 +11771,7 @@ public class ActivityManagerService extends IActivityManager.Stub static final String[] DUMP_MEM_OOM_LABEL = new String[] { "Native", "System", "Persistent", "Persistent Service", "Foreground", - "Visible", "Perceptible", + "Visible", "Perceptible", "Perceptible Low", "Heavy Weight", "Backup", "A Services", "Home", "Previous", "B Services", "Cached" @@ -11776,7 +11779,7 @@ public class ActivityManagerService extends IActivityManager.Stub static final String[] DUMP_MEM_OOM_COMPACT_LABEL = new String[] { "native", "sys", "pers", "persvc", "fore", - "vis", "percept", + "vis", "percept", "perceptl", "heavy", "backup", "servicea", "home", "prev", "serviceb", "cached" diff --git a/services/core/java/com/android/server/am/OomAdjuster.java b/services/core/java/com/android/server/am/OomAdjuster.java index 639465e500f6..93a71e5a2ed4 100644 --- a/services/core/java/com/android/server/am/OomAdjuster.java +++ b/services/core/java/com/android/server/am/OomAdjuster.java @@ -1207,8 +1207,8 @@ public final class OomAdjuster { } } else if ((cr.flags & Context.BIND_ADJUST_BELOW_PERCEPTIBLE) != 0 && clientAdj < ProcessList.PERCEPTIBLE_APP_ADJ - && adj > ProcessList.PERCEPTIBLE_APP_ADJ + 1) { - newAdj = ProcessList.PERCEPTIBLE_APP_ADJ + 1; + && adj > ProcessList.PERCEPTIBLE_LOW_APP_ADJ) { + newAdj = ProcessList.PERCEPTIBLE_LOW_APP_ADJ; } else if ((cr.flags&Context.BIND_NOT_VISIBLE) != 0 && clientAdj < ProcessList.PERCEPTIBLE_APP_ADJ && adj > ProcessList.PERCEPTIBLE_APP_ADJ) { @@ -1593,7 +1593,7 @@ public final class OomAdjuster { // " adj=" + adj + " curAdj=" + app.curAdj + " maxAdj=" + app.maxAdj); if (adj > app.maxAdj) { adj = app.maxAdj; - if (app.maxAdj <= ProcessList.PERCEPTIBLE_APP_ADJ) { + if (app.maxAdj <= ProcessList.PERCEPTIBLE_LOW_APP_ADJ) { schedGroup = ProcessList.SCHED_GROUP_DEFAULT; } } diff --git a/services/core/java/com/android/server/am/ProcessList.java b/services/core/java/com/android/server/am/ProcessList.java index 6ae671f539da..f01305eab761 100644 --- a/services/core/java/com/android/server/am/ProcessList.java +++ b/services/core/java/com/android/server/am/ProcessList.java @@ -183,6 +183,10 @@ public final class ProcessList { // is not entirely fatal but is generally a bad idea. static final int BACKUP_APP_ADJ = 300; + // This is a process bound by the system that's more important than services but not so + // perceptible that it affects the user immediately if killed. + static final int PERCEPTIBLE_LOW_APP_ADJ = 250; + // This is a process only hosting components that are perceptible to the // user, and we really want to avoid killing them, but they are not // immediately visible. An example is background music playback. @@ -717,6 +721,9 @@ public final class ProcessList { } else if (setAdj >= ProcessList.BACKUP_APP_ADJ) { return buildOomTag("bkup ", "bkup", null, setAdj, ProcessList.BACKUP_APP_ADJ, compact); + } else if (setAdj >= ProcessList.PERCEPTIBLE_LOW_APP_ADJ) { + return buildOomTag("prcl ", "prcl", null, setAdj, + ProcessList.PERCEPTIBLE_LOW_APP_ADJ, compact); } else if (setAdj >= ProcessList.PERCEPTIBLE_APP_ADJ) { return buildOomTag("prcp ", "prcp", null, setAdj, ProcessList.PERCEPTIBLE_APP_ADJ, compact); diff --git a/services/core/java/com/android/server/am/ProcessRecord.java b/services/core/java/com/android/server/am/ProcessRecord.java index 5dccaf14e1f1..fcc857b7a75d 100644 --- a/services/core/java/com/android/server/am/ProcessRecord.java +++ b/services/core/java/com/android/server/am/ProcessRecord.java @@ -713,6 +713,8 @@ final class ProcessRecord implements WindowProcessListener { adj = ProcessList.VISIBLE_APP_ADJ; } else if (adj < ProcessList.PERCEPTIBLE_APP_ADJ) { adj = ProcessList.PERCEPTIBLE_APP_ADJ; + } else if (adj < ProcessList.PERCEPTIBLE_LOW_APP_ADJ) { + adj = ProcessList.PERCEPTIBLE_LOW_APP_ADJ; } else if (adj < ProcessList.CACHED_APP_MIN_ADJ) { adj = ProcessList.CACHED_APP_MIN_ADJ; } else if (adj < ProcessList.CACHED_APP_MAX_ADJ) { |