From 3f8b7333547565de21b06403a526aa059d2232a1 Mon Sep 17 00:00:00 2001 From: atrost Date: Fri, 7 Feb 2020 14:54:08 +0000 Subject: [PATCH] Introduce TRACE_TAG_APEX_MANAGER and add timing to getActiveApexInfos Timing for initialize cache path only. Currently ~3ms. This will hopefully help catch regressions. Bug: 148959827 Test: m, flash, boot, inspect logcat. Change-Id: Ief83b8e1a6f0e58bca509527656c67b3465a4d19 --- core/java/android/os/Trace.java | 2 ++ services/core/java/com/android/server/pm/ApexManager.java | 6 ++++++ 2 files changed, 8 insertions(+) diff --git a/core/java/android/os/Trace.java b/core/java/android/os/Trace.java index 25584f1560844..3508b7031dd36 100644 --- a/core/java/android/os/Trace.java +++ b/core/java/android/os/Trace.java @@ -101,6 +101,8 @@ public final class Trace { public static final long TRACE_TAG_NNAPI = 1L << 25; /** @hide */ public static final long TRACE_TAG_RRO = 1L << 26; + /** @hide */ + public static final long TRACE_TAG_APEX_MANAGER = 1L << 18; private static final long TRACE_TAG_NOT_READY = 1L << 63; private static final int MAX_SECTION_NAME_LEN = 127; diff --git a/services/core/java/com/android/server/pm/ApexManager.java b/services/core/java/com/android/server/pm/ApexManager.java index 42bc464e943fe..a440c62a5f3ce 100644 --- a/services/core/java/com/android/server/pm/ApexManager.java +++ b/services/core/java/com/android/server/pm/ApexManager.java @@ -36,6 +36,7 @@ import android.content.pm.parsing.AndroidPackage; import android.os.Environment; import android.os.RemoteException; import android.os.ServiceManager; +import android.os.Trace; import android.sysprop.ApexProperties; import android.util.ArrayMap; import android.util.ArraySet; @@ -46,6 +47,7 @@ import com.android.internal.annotations.GuardedBy; import com.android.internal.annotations.VisibleForTesting; import com.android.internal.os.BackgroundThread; import com.android.internal.util.IndentingPrintWriter; +import com.android.server.utils.TimingsTraceAndSlog; import com.google.android.collect.Lists; @@ -375,8 +377,11 @@ public abstract class ApexManager { @Override public List getActiveApexInfos() { + final TimingsTraceAndSlog t = new TimingsTraceAndSlog(TAG + "Timing", + Trace.TRACE_TAG_APEX_MANAGER); synchronized (mLock) { if (mActiveApexInfosCache == null) { + t.traceBegin("getActiveApexInfos_noCache"); try { mActiveApexInfosCache = new ArraySet<>(); final ApexInfo[] activePackages = mApexService.getActivePackages(); @@ -387,6 +392,7 @@ public abstract class ApexManager { } catch (RemoteException e) { Slog.e(TAG, "Unable to retrieve packages from apexservice", e); } + t.traceEnd(); } if (mActiveApexInfosCache != null) { return new ArrayList<>(mActiveApexInfosCache);