summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
author Kunal <malhk@google.com> 2023-10-12 16:58:43 +0000
committer Kunal <malhk@google.com> 2023-10-27 19:45:11 +0000
commit61476574cc7f8c9c85eb50ba136dd98412a463b6 (patch)
treeb031dbb597a4eda627b584c53639379c8244eb5e
parent619f320031ac9b43823894de01e689d5009f93db (diff)
Updating JobScheduler WW logging to include calculated bytes transferred
during Job execution Test: manual testing on device done by building Bug: 255393346 Change-Id: If876aed542e8edf282ac36ff53979919bf41ce90
-rw-r--r--apex/jobscheduler/service/java/com/android/server/job/JobSchedulerService.java12
-rw-r--r--apex/jobscheduler/service/java/com/android/server/job/JobServiceContext.java33
2 files changed, 41 insertions, 4 deletions
diff --git a/apex/jobscheduler/service/java/com/android/server/job/JobSchedulerService.java b/apex/jobscheduler/service/java/com/android/server/job/JobSchedulerService.java
index a143d6fd4250..e3be23a8f7e9 100644
--- a/apex/jobscheduler/service/java/com/android/server/job/JobSchedulerService.java
+++ b/apex/jobscheduler/service/java/com/android/server/job/JobSchedulerService.java
@@ -1808,7 +1808,11 @@ public class JobSchedulerService extends com.android.server.SystemService
jobStatus.getEstimatedNetworkUploadBytes(),
jobStatus.getWorkCount(),
ActivityManager.processStateAmToProto(mUidProcStates.get(jobStatus.getUid())),
- jobStatus.getNamespaceHash());
+ jobStatus.getNamespaceHash(),
+ /* system_measured_source_download_bytes */0,
+ /* system_measured_source_upload_bytes */ 0,
+ /* system_measured_calling_download_bytes */0,
+ /* system_measured_calling_upload_bytes */ 0);
// If the job is immediately ready to run, then we can just immediately
// put it in the pending list and try to schedule it. This is especially
@@ -2245,7 +2249,11 @@ public class JobSchedulerService extends com.android.server.SystemService
cancelled.getEstimatedNetworkUploadBytes(),
cancelled.getWorkCount(),
ActivityManager.processStateAmToProto(mUidProcStates.get(cancelled.getUid())),
- cancelled.getNamespaceHash());
+ cancelled.getNamespaceHash(),
+ /* system_measured_source_download_bytes */ 0,
+ /* system_measured_source_upload_bytes */ 0,
+ /* system_measured_calling_download_bytes */0,
+ /* system_measured_calling_upload_bytes */ 0);
}
// If this is a replacement, bring in the new version of the job
if (incomingJob != null) {
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 f47766ed0393..a7fb0c9ae6e3 100644
--- a/apex/jobscheduler/service/java/com/android/server/job/JobServiceContext.java
+++ b/apex/jobscheduler/service/java/com/android/server/job/JobServiceContext.java
@@ -45,6 +45,7 @@ import android.content.Intent;
import android.content.PermissionChecker;
import android.content.ServiceConnection;
import android.net.Network;
+import android.net.TrafficStats;
import android.net.Uri;
import android.os.Binder;
import android.os.Build;
@@ -241,6 +242,14 @@ public final class JobServiceContext implements ServiceConnection {
private int mDeathMarkInternalStopReason;
private String mDeathMarkDebugReason;
+ private long mInitialDownloadedBytesFromSource;
+
+ private long mInitialUploadedBytesFromSource;
+
+ private long mInitialDownloadedBytesFromCalling;
+
+ private long mInitialUploadedBytesFromCalling;
+
// Debugging: reason this job was last stopped.
public String mStoppedReason;
@@ -471,6 +480,14 @@ public final class JobServiceContext implements ServiceConnection {
}
mJobPackageTracker.noteActive(job);
final int sourceUid = job.getSourceUid();
+
+ // Measure UID baseline traffic for deltas
+ mInitialDownloadedBytesFromSource = TrafficStats.getUidRxBytes(sourceUid);
+ mInitialUploadedBytesFromSource = TrafficStats.getUidTxBytes(sourceUid);
+
+ mInitialDownloadedBytesFromCalling = TrafficStats.getUidRxBytes(job.getUid());
+ mInitialUploadedBytesFromCalling = TrafficStats.getUidTxBytes(job.getUid());
+
FrameworkStatsLog.write(FrameworkStatsLog.SCHEDULED_JOB_STATE_CHANGED,
job.isProxyJob() ? new int[]{sourceUid, job.getUid()} : new int[]{sourceUid},
// Given that the source tag is set by the calling app, it should be connected
@@ -516,7 +533,11 @@ public final class JobServiceContext implements ServiceConnection {
job.getEstimatedNetworkUploadBytes(),
job.getWorkCount(),
ActivityManager.processStateAmToProto(mService.getUidProcState(job.getUid())),
- job.getNamespaceHash());
+ job.getNamespaceHash(),
+ /* system_measured_source_download_bytes */ 0,
+ /* system_measured_source_upload_bytes */ 0,
+ /* system_measured_calling_download_bytes */ 0,
+ /* system_measured_calling_upload_bytes */ 0);
sEnqueuedJwiAtJobStart.logSampleWithUid(job.getUid(), job.getWorkCount());
final String sourcePackage = job.getSourcePackageName();
if (Trace.isTagEnabled(Trace.TRACE_TAG_SYSTEM_SERVER)) {
@@ -1585,7 +1606,15 @@ public final class JobServiceContext implements ServiceConnection {
completedJob.getWorkCount(),
ActivityManager
.processStateAmToProto(mService.getUidProcState(completedJob.getUid())),
- completedJob.getNamespaceHash());
+ completedJob.getNamespaceHash(),
+ TrafficStats.getUidRxBytes(completedJob.getSourceUid())
+ - mInitialDownloadedBytesFromSource,
+ TrafficStats.getUidTxBytes(completedJob.getSourceUid())
+ - mInitialUploadedBytesFromSource,
+ TrafficStats.getUidRxBytes(completedJob.getUid())
+ - mInitialDownloadedBytesFromCalling,
+ TrafficStats.getUidTxBytes(completedJob.getUid())
+ - mInitialUploadedBytesFromCalling);
if (Trace.isTagEnabled(Trace.TRACE_TAG_SYSTEM_SERVER)) {
Trace.asyncTraceForTrackEnd(Trace.TRACE_TAG_SYSTEM_SERVER, "JobScheduler",
getId());