diff options
| author | 2018-09-10 15:46:40 -0700 | |
|---|---|---|
| committer | 2018-09-10 15:46:40 -0700 | |
| commit | 1b2deff3175cbe2a47788dd3a23ab77b2b5ff73d (patch) | |
| tree | 0f66a96890a0e7410ad5c67bcc2e6d044ac253b3 | |
| parent | 39c76107bd2830872b1451e7fadd2fd4aa9c22fa (diff) | |
| parent | ed8ce392282b8ddb16b0e28c4085427d750bb2d0 (diff) | |
Merge "Framework: Be more verbose in A/B OTA"
am: ed8ce39228
Change-Id: Iabb117269cd20f44416043a3aa203ff1abc61a81
| -rw-r--r-- | services/core/java/com/android/server/pm/OtaDexoptService.java | 22 | ||||
| -rw-r--r-- | services/core/java/com/android/server/pm/PackageManagerServiceUtils.java | 13 |
2 files changed, 31 insertions, 4 deletions
diff --git a/services/core/java/com/android/server/pm/OtaDexoptService.java b/services/core/java/com/android/server/pm/OtaDexoptService.java index 320affb1eee2..748cf08905bb 100644 --- a/services/core/java/com/android/server/pm/OtaDexoptService.java +++ b/services/core/java/com/android/server/pm/OtaDexoptService.java @@ -40,6 +40,7 @@ import java.io.File; import java.io.FileDescriptor; import java.util.ArrayList; import java.util.Collection; +import java.util.Collections; import java.util.List; import java.util.concurrent.TimeUnit; @@ -124,7 +125,8 @@ public class OtaDexoptService extends IOtaDexopt.Stub { synchronized (mPackageManagerService.mPackages) { // Important: the packages we need to run with ab-ota compiler-reason. important = PackageManagerServiceUtils.getPackagesForDexopt( - mPackageManagerService.mPackages.values(), mPackageManagerService); + mPackageManagerService.mPackages.values(), mPackageManagerService, + DEBUG_DEXOPT); // Others: we should optimize this with the (first-)boot compiler-reason. others = new ArrayList<>(mPackageManagerService.mPackages.values()); others.removeAll(important); @@ -157,6 +159,24 @@ public class OtaDexoptService extends IOtaDexopt.Stub { long spaceAvailableNow = getAvailableSpace(); prepareMetricsLogging(important.size(), others.size(), spaceAvailable, spaceAvailableNow); + + if (DEBUG_DEXOPT) { + try { + // Output some data about the packages. + PackageParser.Package lastUsed = Collections.max(important, + (pkg1, pkg2) -> Long.compare( + pkg1.getLatestForegroundPackageUseTimeInMills(), + pkg2.getLatestForegroundPackageUseTimeInMills())); + Log.d(TAG, "A/B OTA: lastUsed time = " + + lastUsed.getLatestForegroundPackageUseTimeInMills()); + Log.d(TAG, "A/B OTA: deprioritized packages:"); + for (PackageParser.Package pkg : others) { + Log.d(TAG, " " + pkg.packageName + " - " + + pkg.getLatestForegroundPackageUseTimeInMills()); + } + } catch (Exception ignored) { + } + } } @Override diff --git a/services/core/java/com/android/server/pm/PackageManagerServiceUtils.java b/services/core/java/com/android/server/pm/PackageManagerServiceUtils.java index 1aea8f0b0543..390c0ccb3c6e 100644 --- a/services/core/java/com/android/server/pm/PackageManagerServiceUtils.java +++ b/services/core/java/com/android/server/pm/PackageManagerServiceUtils.java @@ -164,6 +164,13 @@ public class PackageManagerServiceUtils { public static List<PackageParser.Package> getPackagesForDexopt( Collection<PackageParser.Package> packages, PackageManagerService packageManagerService) { + return getPackagesForDexopt(packages, packageManagerService, DEBUG_DEXOPT); + } + + public static List<PackageParser.Package> getPackagesForDexopt( + Collection<PackageParser.Package> packages, + PackageManagerService packageManagerService, + boolean debug) { ArrayList<PackageParser.Package> remainingPkgs = new ArrayList<>(packages); LinkedList<PackageParser.Package> result = new LinkedList<>(); ArrayList<PackageParser.Package> sortTemp = new ArrayList<>(remainingPkgs.size()); @@ -189,14 +196,14 @@ public class PackageManagerServiceUtils { // TODO: add a property to control this? Predicate<PackageParser.Package> remainingPredicate; if (!remainingPkgs.isEmpty() && packageManagerService.isHistoricalPackageUsageAvailable()) { - if (DEBUG_DEXOPT) { + if (debug) { Log.i(TAG, "Looking at historical package use"); } // Get the package that was used last. PackageParser.Package lastUsed = Collections.max(remainingPkgs, (pkg1, pkg2) -> Long.compare(pkg1.getLatestForegroundPackageUseTimeInMills(), pkg2.getLatestForegroundPackageUseTimeInMills())); - if (DEBUG_DEXOPT) { + if (debug) { Log.i(TAG, "Taking package " + lastUsed.packageName + " as reference in time use"); } long estimatedPreviousSystemUseTime = @@ -218,7 +225,7 @@ public class PackageManagerServiceUtils { applyPackageFilter(remainingPredicate, result, remainingPkgs, sortTemp, packageManagerService); - if (DEBUG_DEXOPT) { + if (debug) { Log.i(TAG, "Packages to be dexopted: " + packagesToString(result)); Log.i(TAG, "Packages skipped from dexopt: " + packagesToString(remainingPkgs)); } |