From d0ddeba47bcacf1b3d4d56d14ab512038d7979d5 Mon Sep 17 00:00:00 2001 From: Amith Yamasani Date: Fri, 26 May 2017 09:46:58 -0700 Subject: [PATCH] Use uptime instead of elapsed for measuring duration in time taken to read cpu stats. This should avoid super long durations > 10 secs that are occasionally seen in system logs. Bug: 62104524 Test: manual Change-Id: I9ed985a61125a207b6d4f6297091bd11b4c78616 --- core/java/com/android/internal/os/BatteryStatsImpl.java | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/core/java/com/android/internal/os/BatteryStatsImpl.java b/core/java/com/android/internal/os/BatteryStatsImpl.java index 17ef77c41da2d..31064ac73dff6 100644 --- a/core/java/com/android/internal/os/BatteryStatsImpl.java +++ b/core/java/com/android/internal/os/BatteryStatsImpl.java @@ -10049,7 +10049,7 @@ public class BatteryStatsImpl extends BatteryStats { // Read the CPU data for each UID. This will internally generate a snapshot so next time // we read, we get a delta. If we are to distribute the cpu time, then do so. Otherwise // we just ignore the data. - final long startTimeMs = mClocks.elapsedRealtime(); + final long startTimeMs = mClocks.uptimeMillis(); mKernelUidCpuTimeReader.readDelta(!mOnBatteryInternal ? null : new KernelUidCpuTimeReader.Callback() { @Override @@ -10121,7 +10121,7 @@ public class BatteryStatsImpl extends BatteryStats { readKernelUidCpuFreqTimesLocked(); } - final long elapse = (mClocks.elapsedRealtime() - startTimeMs); + final long elapse = (mClocks.uptimeMillis() - startTimeMs); if (DEBUG_ENERGY_CPU || (elapse >= 100)) { Slog.d(TAG, "Reading cpu stats took " + elapse + " ms"); }