From 24e12dc59de6efcc72e52a22d1430d15e2c3f940 Mon Sep 17 00:00:00 2001 From: Fyodor Kupolov Date: Tue, 17 Jan 2017 12:20:36 -0800 Subject: [PATCH] Log excessive boot times This should help to identify devices that report unusually long boot_completed timings. Test: manual Bug: 32807863 Change-Id: Ic6c7103d43b3e395accb38ec418094bc580c7c40 --- .../core/java/com/android/server/am/UserController.java | 5 +++++ services/java/com/android/server/SystemServer.java | 9 +++++++-- 2 files changed, 12 insertions(+), 2 deletions(-) diff --git a/services/core/java/com/android/server/am/UserController.java b/services/core/java/com/android/server/am/UserController.java index 71ebad91191fc..f516e99a79695 100644 --- a/services/core/java/com/android/server/am/UserController.java +++ b/services/core/java/com/android/server/am/UserController.java @@ -259,6 +259,11 @@ final class UserController { int uptimeSeconds = (int)(SystemClock.elapsedRealtime() / 1000); MetricsLogger.histogram(mInjector.getContext(), "framework_locked_boot_completed", uptimeSeconds); + final int MAX_UPTIME_SECONDS = 120; + if (uptimeSeconds > MAX_UPTIME_SECONDS) { + Slog.wtf("SystemServerTiming", + "finishUserBoot took too long. uptimeSeconds=" + uptimeSeconds); + } } mHandler.sendMessage(mHandler.obtainMessage(REPORT_LOCKED_BOOT_COMPLETE_MSG, diff --git a/services/java/com/android/server/SystemServer.java b/services/java/com/android/server/SystemServer.java index 68cb0c5e3eaa1..5d2be6cc97014 100644 --- a/services/java/com/android/server/SystemServer.java +++ b/services/java/com/android/server/SystemServer.java @@ -381,8 +381,13 @@ public final class SystemServer { Slog.i(TAG, "Enabled StrictMode for system server main thread."); } if (!mRuntimeRestart && !mFirstBoot) { - MetricsLogger.histogram(null, "boot_system_server_ready", - (int) SystemClock.elapsedRealtime()); + int uptimeMillis = (int) SystemClock.elapsedRealtime(); + MetricsLogger.histogram(null, "boot_system_server_ready", uptimeMillis); + final int MAX_UPTIME_MILLIS = 60 * 1000; + if (uptimeMillis > MAX_UPTIME_MILLIS) { + Slog.wtf("SystemServerTiming", + "SystemServer init took too long. uptimeMillis=" + uptimeMillis); + } } // Loop forever.