From ebac6a0d9b1d8cb6b05aa556ca6f5bf26951a930 Mon Sep 17 00:00:00 2001 From: Keun young Park Date: Mon, 3 Feb 2020 18:45:55 -0800 Subject: [PATCH] Zygote: migrate zygote start time metrics to StatsLog - Also log second zygote start time as well. Bug: 132691841 Test: check statsd dump Change-Id: If749707dc5bcfefaeac1a476add076d2925af46d --- .../com/android/internal/os/ZygoteInit.java | 25 ++++++++++++++----- 1 file changed, 19 insertions(+), 6 deletions(-) diff --git a/core/java/com/android/internal/os/ZygoteInit.java b/core/java/com/android/internal/os/ZygoteInit.java index a47bd17f45af9..54cf693490e9c 100644 --- a/core/java/com/android/internal/os/ZygoteInit.java +++ b/core/java/com/android/internal/os/ZygoteInit.java @@ -19,6 +19,9 @@ package com.android.internal.os; import static android.system.OsConstants.S_IRWXG; import static android.system.OsConstants.S_IRWXO; +import static com.android.internal.util.FrameworkStatsLog.BOOT_TIME_EVENT_ELAPSED_TIME__EVENT__SECONDARY_ZYGOTE_INIT_START; +import static com.android.internal.util.FrameworkStatsLog.BOOT_TIME_EVENT_ELAPSED_TIME__EVENT__ZYGOTE_INIT_START; + import android.app.ApplicationLoaders; import android.compat.annotation.UnsupportedAppUsage; import android.content.pm.SharedLibraryInfo; @@ -52,7 +55,7 @@ import android.util.TimingsTraceLog; import android.webkit.WebViewFactory; import android.widget.TextView; -import com.android.internal.logging.MetricsLogger; +import com.android.internal.util.FrameworkStatsLog; import com.android.internal.util.Preconditions; import dalvik.system.DexFile; @@ -863,11 +866,10 @@ public class ZygoteInit { Runnable caller; try { - // Report Zygote start time to tron unless it is a runtime restart - if (!"1".equals(SystemProperties.get("sys.boot_completed"))) { - MetricsLogger.histogram(null, "boot_zygote_init", - (int) SystemClock.elapsedRealtime()); - } + // Store now for StatsLogging later. + final long startTime = SystemClock.elapsedRealtime(); + final boolean isRuntimeRestarted = "1".equals( + SystemProperties.get("sys.boot_completed")); String bootTimeTag = Process.is64Bit() ? "Zygote64Timing" : "Zygote32Timing"; TimingsTraceLog bootTimingsTraceLog = new TimingsTraceLog(bootTimeTag, @@ -894,6 +896,17 @@ public class ZygoteInit { } final boolean isPrimaryZygote = zygoteSocketName.equals(Zygote.PRIMARY_SOCKET_NAME); + if (!isRuntimeRestarted) { + if (isPrimaryZygote) { + FrameworkStatsLog.write(FrameworkStatsLog.BOOT_TIME_EVENT_ELAPSED_TIME_REPORTED, + BOOT_TIME_EVENT_ELAPSED_TIME__EVENT__ZYGOTE_INIT_START, + startTime); + } else if (zygoteSocketName.equals(Zygote.SECONDARY_SOCKET_NAME)) { + FrameworkStatsLog.write(FrameworkStatsLog.BOOT_TIME_EVENT_ELAPSED_TIME_REPORTED, + BOOT_TIME_EVENT_ELAPSED_TIME__EVENT__SECONDARY_ZYGOTE_INIT_START, + startTime); + } + } if (abiList == null) { throw new RuntimeException("No ABI list supplied.");