From 7234fc6fef781e33842bc598a6e9e04bbff4f898 Mon Sep 17 00:00:00 2001 From: Christopher Tate Date: Mon, 3 Apr 2017 17:36:07 -0700 Subject: [PATCH] Track pending job latency Timestamp jobs being marked 'pending' and 'active,' so we can then report their pending latency in dumpsys. Bug 35385393 Test: N/A Change-Id: I3d981fbc7fbe6abdf30da3f86d88d3733b797f51 --- .../com/android/server/job/JobPackageTracker.java | 2 ++ .../android/server/job/JobSchedulerService.java | 14 +++++++++++--- .../server/job/controllers/IdleController.java | 8 ++++++-- .../android/server/job/controllers/JobStatus.java | 4 ++++ 4 files changed, 23 insertions(+), 5 deletions(-) diff --git a/services/core/java/com/android/server/job/JobPackageTracker.java b/services/core/java/com/android/server/job/JobPackageTracker.java index 0a6d8a4e24745..8ad1beace6432 100644 --- a/services/core/java/com/android/server/job/JobPackageTracker.java +++ b/services/core/java/com/android/server/job/JobPackageTracker.java @@ -345,6 +345,7 @@ public final class JobPackageTracker { public void notePending(JobStatus job) { final long now = SystemClock.uptimeMillis(); + job.madePending = now; rebatchIfNeeded(now); mCurDataSet.incPending(job.getSourceUid(), job.getSourcePackageName(), now); } @@ -357,6 +358,7 @@ public final class JobPackageTracker { public void noteActive(JobStatus job) { final long now = SystemClock.uptimeMillis(); + job.madeActive = now; rebatchIfNeeded(now); if (job.lastEvaluatedPriority >= JobInfo.PRIORITY_TOP_APP) { mCurDataSet.incActiveTop(job.getSourceUid(), job.getSourcePackageName(), now); diff --git a/services/core/java/com/android/server/job/JobSchedulerService.java b/services/core/java/com/android/server/job/JobSchedulerService.java index 7c231ff45434b..cd3ba4c8b1f34 100644 --- a/services/core/java/com/android/server/job/JobSchedulerService.java +++ b/services/core/java/com/android/server/job/JobSchedulerService.java @@ -2035,27 +2035,35 @@ public final class JobSchedulerService extends com.android.server.SystemService pw.print(" Evaluated priority: "); pw.println(priority); } pw.print(" Tag: "); pw.println(job.getTag()); + pw.print(" Enq: "); + TimeUtils.formatDuration(now - job.madePending, pw); + pw.println(" ago"); } pw.println(); pw.println("Active jobs:"); for (int i=0; i