From 6c0d3e107fdd2f4776fb09aa5e5273a043445bf3 Mon Sep 17 00:00:00 2001 From: Kweku Adams Date: Fri, 17 Jun 2022 18:38:58 +0000 Subject: [PATCH] Trace job execution. Also include the job ID in the battery name so that we can distinguish between jobs using the same JobService. Bug: 230864839 Test: N/A Change-Id: Ia183329ef398b8a8fe9ef246a0f0592cd274a88f (cherry pick of ag/18972117 and ag/19969125) --- .../java/com/android/server/job/JobServiceContext.java | 5 +++++ .../java/com/android/server/job/controllers/JobStatus.java | 2 +- 2 files changed, 6 insertions(+), 1 deletion(-) diff --git a/apex/jobscheduler/service/java/com/android/server/job/JobServiceContext.java b/apex/jobscheduler/service/java/com/android/server/job/JobServiceContext.java index f7fe9cab60ae3..58953c45a7943 100644 --- a/apex/jobscheduler/service/java/com/android/server/job/JobServiceContext.java +++ b/apex/jobscheduler/service/java/com/android/server/job/JobServiceContext.java @@ -43,6 +43,7 @@ import android.os.Looper; import android.os.Message; import android.os.PowerManager; import android.os.RemoteException; +import android.os.Trace; import android.os.UserHandle; import android.util.EventLog; import android.util.IndentingPrintWriter; @@ -361,6 +362,9 @@ public final class JobServiceContext implements ServiceConnection { job.getJob().getPriority(), job.getEffectivePriority(), job.getNumFailures()); + // Use the context's ID to distinguish traces since there'll only be one job running + // per context. + Trace.asyncTraceBegin(Trace.TRACE_TAG_SYSTEM_SERVER, job.getTag(), getId()); try { mBatteryStats.noteJobStart(job.getBatteryName(), job.getSourceUid()); } catch (RemoteException e) { @@ -1024,6 +1028,7 @@ public final class JobServiceContext implements ServiceConnection { completedJob.getJob().getPriority(), completedJob.getEffectivePriority(), completedJob.getNumFailures()); + Trace.asyncTraceEnd(Trace.TRACE_TAG_SYSTEM_SERVER, completedJob.getTag(), getId()); try { mBatteryStats.noteJobFinish(mRunningJob.getBatteryName(), mRunningJob.getSourceUid(), internalStopReason); diff --git a/apex/jobscheduler/service/java/com/android/server/job/controllers/JobStatus.java b/apex/jobscheduler/service/java/com/android/server/job/controllers/JobStatus.java index ebafba52f2577..866dc41d8dfbb 100644 --- a/apex/jobscheduler/service/java/com/android/server/job/controllers/JobStatus.java +++ b/apex/jobscheduler/service/java/com/android/server/job/controllers/JobStatus.java @@ -496,7 +496,7 @@ public final class JobStatus { this.batteryName = this.sourceTag != null ? this.sourceTag + ":" + job.getService().getPackageName() : job.getService().flattenToShortString(); - this.tag = "*job*/" + this.batteryName; + this.tag = "*job*/" + this.batteryName + "#" + job.getId(); this.earliestRunTimeElapsedMillis = earliestRunTimeElapsedMillis; this.latestRunTimeElapsedMillis = latestRunTimeElapsedMillis;