summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
author Kweku Adams <kwekua@google.com> 2021-02-19 01:55:15 +0000
committer Android (Google) Code Review <android-gerrit@google.com> 2021-02-19 01:55:15 +0000
commit1a0c0a51f431bf09468109c493a66adbe2cb722a (patch)
tree7cd10c06290618349f78a827d1fd873a2c81735c
parentc14465c2bbb412c93a293b84a7fdbcbad7493955 (diff)
parent4f097379f2fc6821b12d50218994a2d504edf592 (diff)
Merge "Clean up JobPackageTracker dumping code." into sc-dev
-rw-r--r--apex/jobscheduler/service/java/com/android/server/job/JobPackageTracker.java60
-rw-r--r--apex/jobscheduler/service/java/com/android/server/job/JobSchedulerService.java4
2 files changed, 39 insertions, 25 deletions
diff --git a/apex/jobscheduler/service/java/com/android/server/job/JobPackageTracker.java b/apex/jobscheduler/service/java/com/android/server/job/JobPackageTracker.java
index b3f046ee5962..6ffac91d7098 100644
--- a/apex/jobscheduler/service/java/com/android/server/job/JobPackageTracker.java
+++ b/apex/jobscheduler/service/java/com/android/server/job/JobPackageTracker.java
@@ -25,6 +25,7 @@ import android.app.job.JobParameters;
import android.os.UserHandle;
import android.text.format.DateFormat;
import android.util.ArrayMap;
+import android.util.IndentingPrintWriter;
import android.util.SparseArray;
import android.util.SparseIntArray;
import android.util.TimeUtils;
@@ -33,8 +34,6 @@ import android.util.proto.ProtoOutputStream;
import com.android.internal.util.RingBufferIndices;
import com.android.server.job.controllers.JobStatus;
-import java.io.PrintWriter;
-
public final class JobPackageTracker {
// We batch every 30 minutes.
static final long BATCHING_TIME = 30*60*1000;
@@ -294,34 +293,44 @@ public final class JobPackageTracker {
}
}
- void printDuration(PrintWriter pw, long period, long duration, int count, String suffix) {
+ /** Return {@code true} if text was printed. */
+ boolean printDuration(IndentingPrintWriter pw, long period, long duration, int count,
+ String suffix) {
float fraction = duration / (float) period;
int percent = (int) ((fraction * 100) + .5f);
if (percent > 0) {
- pw.print(" ");
pw.print(percent);
pw.print("% ");
pw.print(count);
pw.print("x ");
pw.print(suffix);
+ return true;
} else if (count > 0) {
- pw.print(" ");
pw.print(count);
pw.print("x ");
pw.print(suffix);
+ return true;
}
+
+ return false;
}
- void dump(PrintWriter pw, String header, String prefix, long now, long nowElapsed,
+ void dump(IndentingPrintWriter pw, String header, long now, long nowElapsed,
int filterAppId) {
final long period = getTotalTime(now);
- pw.print(prefix); pw.print(header); pw.print(" at ");
+ pw.print(header); pw.print(" at ");
pw.print(DateFormat.format("yyyy-MM-dd-HH-mm-ss", mStartClockTime).toString());
pw.print(" (");
TimeUtils.formatDuration(mStartElapsedTime, nowElapsed, pw);
pw.print(") over ");
TimeUtils.formatDuration(period, pw);
pw.println(":");
+ pw.increaseIndent();
+ pw.print("Max concurrency: ");
+ pw.print(mMaxTotalActive); pw.print(" total, ");
+ pw.print(mMaxFgActive); pw.println(" foreground");
+
+ pw.println();
final int NE = mEntries.size();
for (int i = 0; i < NE; i++) {
int uid = mEntries.keyAt(i);
@@ -332,15 +341,21 @@ public final class JobPackageTracker {
final int NP = uidMap.size();
for (int j = 0; j < NP; j++) {
PackageEntry pe = uidMap.valueAt(j);
- pw.print(prefix); pw.print(" ");
UserHandle.formatUid(pw, uid);
pw.print(" / "); pw.print(uidMap.keyAt(j));
pw.println(":");
- pw.print(prefix); pw.print(" ");
- printDuration(pw, period, pe.getPendingTime(now), pe.pendingCount, "pending");
- printDuration(pw, period, pe.getActiveTime(now), pe.activeCount, "active");
- printDuration(pw, period, pe.getActiveTopTime(now), pe.activeTopCount,
- "active-top");
+
+ pw.increaseIndent();
+ if (printDuration(pw, period,
+ pe.getPendingTime(now), pe.pendingCount, "pending")) {
+ pw.print(" ");
+ }
+ if (printDuration(pw, period,
+ pe.getActiveTime(now), pe.activeCount, "active")) {
+ pw.print(" ");
+ }
+ printDuration(pw, period,
+ pe.getActiveTopTime(now), pe.activeTopCount, "active-top");
if (pe.pendingNesting > 0 || pe.hadPending) {
pw.print(" (pending)");
}
@@ -352,7 +367,6 @@ public final class JobPackageTracker {
}
pw.println();
if (pe.stopReasons.size() > 0) {
- pw.print(prefix); pw.print(" ");
for (int k = 0; k < pe.stopReasons.size(); k++) {
if (k > 0) {
pw.print(", ");
@@ -364,11 +378,10 @@ public final class JobPackageTracker {
}
pw.println();
}
+ pw.decreaseIndent();
}
}
- pw.print(prefix); pw.print(" Max concurrency: ");
- pw.print(mMaxTotalActive); pw.print(" total, ");
- pw.print(mMaxFgActive); pw.println(" foreground");
+ pw.decreaseIndent();
}
private void printPackageEntryState(ProtoOutputStream proto, long fieldId,
@@ -520,7 +533,7 @@ public final class JobPackageTracker {
return time / (float)period;
}
- public void dump(PrintWriter pw, String prefix, int filterAppId) {
+ void dump(IndentingPrintWriter pw, int filterAppId) {
final long now = sUptimeMillisClock.millis();
final long nowElapsed = sElapsedRealtimeClock.millis();
final DataSet total;
@@ -533,11 +546,11 @@ public final class JobPackageTracker {
mCurDataSet.addTo(total, now);
for (int i = 1; i < mLastDataSets.length; i++) {
if (mLastDataSets[i] != null) {
- mLastDataSets[i].dump(pw, "Historical stats", prefix, now, nowElapsed, filterAppId);
+ mLastDataSets[i].dump(pw, "Historical stats", now, nowElapsed, filterAppId);
pw.println();
}
}
- total.dump(pw, "Current stats", prefix, now, nowElapsed, filterAppId);
+ total.dump(pw, "Current stats", now, nowElapsed, filterAppId);
}
public void dump(ProtoOutputStream proto, long fieldId, int filterUid) {
@@ -566,12 +579,14 @@ public final class JobPackageTracker {
proto.end(token);
}
- public boolean dumpHistory(PrintWriter pw, String prefix, int filterAppId) {
+ boolean dumpHistory(IndentingPrintWriter pw, int filterAppId) {
final int size = mEventIndices.size();
if (size <= 0) {
return false;
}
- pw.println(" Job history:");
+ pw.increaseIndent();
+ pw.println("Job history:");
+ pw.decreaseIndent();
final long now = sElapsedRealtimeClock.millis();
for (int i=0; i<size; i++) {
final int index = mEventIndices.indexOf(i);
@@ -591,7 +606,6 @@ public final class JobPackageTracker {
case EVENT_STOP_PERIODIC_JOB: label = " STOP-P"; break;
default: label = " ??"; break;
}
- pw.print(prefix);
TimeUtils.formatDuration(mEventTimes[index]-now, pw, TimeUtils.HUNDRED_DAY_FIELD_LEN);
pw.print(" ");
pw.print(label);
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 e13d4d3b31dc..ac6eb3229a25 100644
--- a/apex/jobscheduler/service/java/com/android/server/job/JobSchedulerService.java
+++ b/apex/jobscheduler/service/java/com/android/server/job/JobSchedulerService.java
@@ -3227,9 +3227,9 @@ public class JobSchedulerService extends com.android.server.SystemService
}
pw.println();
- mJobPackageTracker.dump(pw, "", filterAppId);
+ mJobPackageTracker.dump(pw, filterAppId);
pw.println();
- if (mJobPackageTracker.dumpHistory(pw, "", filterAppId)) {
+ if (mJobPackageTracker.dumpHistory(pw, filterAppId)) {
pw.println();
}