From 31e2b362a93eaafc06b03b4b46eb8ada4b6d9319 Mon Sep 17 00:00:00 2001 From: Tim Murray Date: Fri, 15 Jan 2021 13:22:48 -0800 Subject: [PATCH 1/3] CachedAppOptimizer: don't take AM lock when freezer is not enabled Freezing and unfreezing don't reqiure the AM lock when freezer is not enabled. Test: boot, no lock contention on unfreezeTemporarily Bug: 161866124 Change-Id: Ic650456aa8938db38b368042ce3f42fa43e7a130 --- .../java/com/android/server/am/CachedAppOptimizer.java | 10 ++++++---- 1 file changed, 6 insertions(+), 4 deletions(-) diff --git a/services/core/java/com/android/server/am/CachedAppOptimizer.java b/services/core/java/com/android/server/am/CachedAppOptimizer.java index dd09a1c856826..8c53dcdb26986 100644 --- a/services/core/java/com/android/server/am/CachedAppOptimizer.java +++ b/services/core/java/com/android/server/am/CachedAppOptimizer.java @@ -722,10 +722,12 @@ public final class CachedAppOptimizer { // This will ensure app will be out of the freezer for at least FREEZE_TIMEOUT_MS void unfreezeTemporarily(ProcessRecord app) { - synchronized (mAm) { - if (app.frozen) { - unfreezeAppLocked(app); - freezeAppAsync(app); + if (mUseFreezer) { + synchronized (mAm) { + if (app.frozen) { + unfreezeAppLocked(app); + freezeAppAsync(app); + } } } } From a93181541fda109dee2073272a7ac57b40db857e Mon Sep 17 00:00:00 2001 From: Tim Murray Date: Fri, 15 Jan 2021 11:12:56 -0800 Subject: [PATCH 2/3] ActivityManagerService: don't compact system at BOOT_COMPLETED Skip compaction at BOOT_COMPLETED since that can trigger during post-unlock initialization. Test: boot, no system compaction during unlock Bug: 161866124 Change-Id: I27aa48605c8f0c29098768e5487c1c43f96cb6c9 --- .../core/java/com/android/server/am/ActivityManagerService.java | 1 - 1 file changed, 1 deletion(-) diff --git a/services/core/java/com/android/server/am/ActivityManagerService.java b/services/core/java/com/android/server/am/ActivityManagerService.java index 05f2fa096e4d0..f9e75c8996f7b 100644 --- a/services/core/java/com/android/server/am/ActivityManagerService.java +++ b/services/core/java/com/android/server/am/ActivityManagerService.java @@ -4645,7 +4645,6 @@ public class ActivityManagerService extends IActivityManager.Stub String data, Bundle extras, boolean ordered, boolean sticky, int sendingUser) { synchronized (ActivityManagerService.this) { - mOomAdjuster.mCachedAppOptimizer.compactAllSystem(); mAppProfiler.requestPssAllProcsLocked( SystemClock.uptimeMillis(), true, false); } From 097788086569bc464ee888f959d1413fa38e862b Mon Sep 17 00:00:00 2001 From: Tim Murray Date: Fri, 15 Jan 2021 10:33:08 -0800 Subject: [PATCH 3/3] BackgroundDexOptService: defer post-boot job further Delay the post-boot dexopt job to avoid mmap_sem contention caused by mapping dex files. Test: boot, dexopt starts later Bug: 161866124 Change-Id: Iaceb2b7c34c7b923778a8a603d7b9666ea9a20c4 --- .../java/com/android/server/pm/BackgroundDexOptService.java | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/services/core/java/com/android/server/pm/BackgroundDexOptService.java b/services/core/java/com/android/server/pm/BackgroundDexOptService.java index e0b57e4ce42f4..402f6467e82d6 100644 --- a/services/core/java/com/android/server/pm/BackgroundDexOptService.java +++ b/services/core/java/com/android/server/pm/BackgroundDexOptService.java @@ -118,8 +118,8 @@ public class BackgroundDexOptService extends JobService { // Schedule a one-off job which scans installed packages and updates // out-of-date oat files. js.schedule(new JobInfo.Builder(JOB_POST_BOOT_UPDATE, sDexoptServiceName) - .setMinimumLatency(TimeUnit.MINUTES.toMillis(1)) - .setOverrideDeadline(TimeUnit.MINUTES.toMillis(1)) + .setMinimumLatency(TimeUnit.MINUTES.toMillis(10)) + .setOverrideDeadline(TimeUnit.MINUTES.toMillis(60)) .build()); // Schedule a daily job which scans installed packages and compiles