From 8d3e82bdfc01dbcd4f3bb1146542919f9d8ad460 Mon Sep 17 00:00:00 2001 From: Fyodor Kupolov Date: Thu, 10 Nov 2016 17:58:50 -0800 Subject: [PATCH] Report boot statistics Added the following metrics: - tron_varz_boot_package_manager_init_start - tron_varz_boot_package_manager_init_ready - tron_varz_boot_system_server_init - tron_varz_boot_system_server_ready Test: manual - device boots, adb logcat -b events Bug: 32780225 Change-Id: I0eeda831e2a13a7cbcef3308d5dad1bfa63919c1 --- services/java/com/android/server/SystemServer.java | 11 +++++++++-- 1 file changed, 9 insertions(+), 2 deletions(-) diff --git a/services/java/com/android/server/SystemServer.java b/services/java/com/android/server/SystemServer.java index cc96f565564af..8fd0a1710f810 100644 --- a/services/java/com/android/server/SystemServer.java +++ b/services/java/com/android/server/SystemServer.java @@ -51,6 +51,7 @@ import android.view.WindowManager; import com.android.internal.R; import com.android.internal.app.NightDisplayController; +import com.android.internal.logging.MetricsLogger; import com.android.internal.os.BinderInternal; import com.android.internal.os.SamplingProfilerIntegration; import com.android.internal.os.ZygoteInit; @@ -269,7 +270,9 @@ public final class SystemServer { // Here we go! Slog.i(TAG, "Entered the Android system server!"); - EventLog.writeEvent(EventLogTags.BOOT_PROGRESS_SYSTEM_RUN, SystemClock.uptimeMillis()); + int uptimeMillis = (int) SystemClock.uptimeMillis(); + EventLog.writeEvent(EventLogTags.BOOT_PROGRESS_SYSTEM_RUN, uptimeMillis); + MetricsLogger.histogram(null, "boot_system_server_init", uptimeMillis); // In case the runtime switched since last boot (such as when // the old runtime was removed in an OTA), set the system @@ -358,6 +361,7 @@ public final class SystemServer { if (StrictMode.conditionallyEnableDebugLogging()) { Slog.i(TAG, "Enabled StrictMode for system server main thread."); } + MetricsLogger.histogram(null, "boot_system_server_ready", (int) SystemClock.uptimeMillis()); // Loop forever. Looper.loop(); @@ -486,13 +490,16 @@ public final class SystemServer { } // Start the package manager. + MetricsLogger.histogram(null, "boot_package_manager_init_start", + (int) SystemClock.uptimeMillis()); traceBeginAndSlog("StartPackageManagerService"); mPackageManagerService = PackageManagerService.main(mSystemContext, installer, mFactoryTestMode != FactoryTest.FACTORY_TEST_OFF, mOnlyCore); mFirstBoot = mPackageManagerService.isFirstBoot(); mPackageManager = mSystemContext.getPackageManager(); traceEnd(); - + MetricsLogger.histogram(null, "boot_package_manager_init_ready", + (int) SystemClock.uptimeMillis()); // Manages A/B OTA dexopting. This is a bootstrap service as we need it to rename // A/B artifacts after boot, before anything else might touch/need them. // Note: this isn't needed during decryption (we don't have /data anyways).