From 531daf7bfeeb512991200a74c658c6ec6531b809 Mon Sep 17 00:00:00 2001 From: JW Wang Date: Thu, 13 May 2021 10:30:43 +0800 Subject: [PATCH] Add logs to profile the performance of staged-install on boot (1/n) In next CL, we will add tests to parse the logs to get the duration of each staged-install sub tasks. Bug: 187781115 Test: m Change-Id: I6f62c6008d577726cd9b9f1b9893aea05231f036 --- .../java/com/android/server/pm/StagingManager.java | 11 +++++++++++ 1 file changed, 11 insertions(+) diff --git a/services/core/java/com/android/server/pm/StagingManager.java b/services/core/java/com/android/server/pm/StagingManager.java index 8f87b19216491..4a68b7606c601 100644 --- a/services/core/java/com/android/server/pm/StagingManager.java +++ b/services/core/java/com/android/server/pm/StagingManager.java @@ -49,12 +49,14 @@ import android.os.Message; import android.os.PowerManager; import android.os.RemoteException; import android.os.SystemProperties; +import android.os.Trace; import android.os.UserHandle; import android.text.TextUtils; import android.util.ArraySet; import android.util.IntArray; import android.util.Slog; import android.util.SparseArray; +import android.util.TimingsTraceLog; import android.util.apk.ApkSignatureVerifier; import com.android.internal.annotations.GuardedBy; @@ -551,7 +553,11 @@ public class StagingManager { } // The APEX part of the session is activated, proceed with the installation of APKs. Slog.d(TAG, "Installing APK packages in session " + session.sessionId()); + TimingsTraceLog t = new TimingsTraceLog( + "StagingManagerTiming", Trace.TRACE_TAG_PACKAGE_MANAGER); + t.traceBegin("installApksInSession"); installApksInSession(session); + t.traceEnd(); Slog.d(TAG, "Marking session " + session.sessionId() + " as applied"); session.setSessionApplied(); @@ -876,6 +882,10 @@ public class StagingManager { } void restoreSessions(@NonNull List sessions, boolean isDeviceUpgrading) { + TimingsTraceLog t = new TimingsTraceLog( + "StagingManagerTiming", Trace.TRACE_TAG_PACKAGE_MANAGER); + t.traceBegin("restoreSessions"); + // Do not resume sessions if boot completed already if (SystemProperties.getBoolean("sys.boot_completed", false)) { return; @@ -1008,6 +1018,7 @@ public class StagingManager { supportsCheckpoint, needsCheckpoint); } } + t.traceEnd(); } private void logFailedApexSessionsIfNecessary() {