Loading apex/jobscheduler/service/java/com/android/server/job/JobConcurrencyManager.java +17 −14 Original line number Diff line number Diff line Loading @@ -509,9 +509,8 @@ class JobConcurrencyManager { public void dumpProtoLocked(ProtoOutputStream proto, long tag, long now, long nowRealtime) { final long token = proto.start(tag); proto.write(JobConcurrencyManagerProto.CURRENT_INTERACTIVE, mCurrentInteractiveState); proto.write(JobConcurrencyManagerProto.EFFECTIVE_INTERACTIVE, proto.write(JobConcurrencyManagerProto.CURRENT_INTERACTIVE_STATE, mCurrentInteractiveState); proto.write(JobConcurrencyManagerProto.EFFECTIVE_INTERACTIVE_STATE, mEffectiveInteractiveState); proto.write(JobConcurrencyManagerProto.TIME_SINCE_LAST_SCREEN_ON_MS, Loading @@ -521,8 +520,9 @@ class JobConcurrencyManager { mJobCountTracker.dumpProto(proto, JobConcurrencyManagerProto.JOB_COUNT_TRACKER); proto.write(JobConcurrencyManagerProto.MEMORY_TRIM_LEVEL, mLastMemoryTrimLevel); proto.write(JobConcurrencyManagerProto.MEMORY_TRIM_LEVEL, mLastMemoryTrimLevel); mStatLogger.dumpProto(proto, JobConcurrencyManagerProto.STATS); proto.end(token); } Loading Loading @@ -676,19 +676,14 @@ class JobConcurrencyManager { + " Res BG: %d" + " Starting: %d / %d (%d)" + " Total: %d%s / %d%s (%d%s)", mConfigNumMaxTotalJobs, mConfigNumMinBgJobs, mConfigNumMaxBgJobs, mConfigNumMaxTotalJobs, mConfigNumMinBgJobs, mConfigNumMaxBgJobs, mNumRunningFgJobs, mNumRunningBgJobs, mNumRunningFgJobs + mNumRunningBgJobs, mNumRunningFgJobs, mNumRunningBgJobs, mNumRunningFgJobs + mNumRunningBgJobs, mNumPendingFgJobs, mNumPendingBgJobs, mNumPendingFgJobs + mNumPendingBgJobs, mNumPendingFgJobs, mNumPendingBgJobs, mNumPendingFgJobs + mNumPendingBgJobs, mNumActualMaxFgJobs, (totalFg <= mConfigNumMaxTotalJobs) ? "" : "*", mNumActualMaxBgJobs, (totalBg <= mConfigNumMaxBgJobs) ? "" : "*", mNumActualMaxFgJobs + mNumActualMaxBgJobs, (mNumActualMaxFgJobs + mNumActualMaxBgJobs <= mConfigNumMaxTotalJobs) ? "" : "*", Loading Loading @@ -716,6 +711,14 @@ class JobConcurrencyManager { proto.write(JobCountTrackerProto.NUM_PENDING_FG_JOBS, mNumPendingFgJobs); proto.write(JobCountTrackerProto.NUM_PENDING_BG_JOBS, mNumPendingBgJobs); proto.write(JobCountTrackerProto.NUM_ACTUAL_MAX_FG_JOBS, mNumActualMaxFgJobs); proto.write(JobCountTrackerProto.NUM_ACTUAL_MAX_BG_JOBS, mNumActualMaxBgJobs); proto.write(JobCountTrackerProto.NUM_RESERVED_FOR_BG, mNumReservedForBg); proto.write(JobCountTrackerProto.NUM_STARTING_FG_JOBS, mNumStartingFgJobs); proto.write(JobCountTrackerProto.NUM_STARTING_BG_JOBS, mNumStartingBgJobs); proto.end(token); } } Loading apex/jobscheduler/service/java/com/android/server/job/JobSchedulerService.java +15 −22 Original line number Diff line number Diff line Loading @@ -3011,6 +3011,8 @@ public class JobSchedulerService extends com.android.server.SystemService pw.print(job.isReady()); pw.print(" user="); pw.print(areUsersStartedLocked(job)); pw.print(" !thermal="); pw.print(!isJobThermalConstrainedLocked(job)); pw.print(" !pending="); pw.print(!mPendingJobs.contains(job)); pw.print(" !active="); Loading @@ -3018,15 +3020,7 @@ public class JobSchedulerService extends com.android.server.SystemService pw.print(" !backingup="); pw.print(!(mBackingUpUids.indexOfKey(job.getSourceUid()) >= 0)); pw.print(" comp="); boolean componentPresent = false; try { componentPresent = (AppGlobals.getPackageManager().getServiceInfo( job.getServiceComponent(), PackageManager.MATCH_DEBUG_TRIAGED_MISSING, job.getUserId()) != null); } catch (RemoteException e) { } pw.print(componentPresent); pw.print(isComponentUsable(job)); pw.println(")"); } } else { Loading Loading @@ -3177,27 +3171,24 @@ public class JobSchedulerService extends com.android.server.SystemService job.dump(proto, JobSchedulerServiceDumpProto.RegisteredJob.DUMP, true, nowElapsed); // isReadyToBeExecuted proto.write( JobSchedulerServiceDumpProto.RegisteredJob.IS_JOB_READY_TO_BE_EXECUTED, isReadyToBeExecutedLocked(job)); proto.write(JobSchedulerServiceDumpProto.RegisteredJob.IS_JOB_READY, job.isReady()); proto.write(JobSchedulerServiceDumpProto.RegisteredJob.IS_USER_STARTED, proto.write(JobSchedulerServiceDumpProto.RegisteredJob.ARE_USERS_STARTED, areUsersStartedLocked(job)); proto.write( JobSchedulerServiceDumpProto.RegisteredJob.IS_JOB_THERMAL_CONSTRAINED, isJobThermalConstrainedLocked(job)); proto.write(JobSchedulerServiceDumpProto.RegisteredJob.IS_JOB_PENDING, mPendingJobs.contains(job)); proto.write(JobSchedulerServiceDumpProto.RegisteredJob.IS_JOB_CURRENTLY_ACTIVE, isCurrentlyActiveLocked(job)); proto.write(JobSchedulerServiceDumpProto.RegisteredJob.IS_UID_BACKING_UP, mBackingUpUids.indexOfKey(job.getSourceUid()) >= 0); boolean componentPresent = false; try { componentPresent = (AppGlobals.getPackageManager().getServiceInfo( job.getServiceComponent(), PackageManager.MATCH_DEBUG_TRIAGED_MISSING, job.getUserId()) != null); } catch (RemoteException e) { } proto.write(JobSchedulerServiceDumpProto.RegisteredJob.IS_COMPONENT_PRESENT, componentPresent); proto.write(JobSchedulerServiceDumpProto.RegisteredJob.IS_COMPONENT_USABLE, isComponentUsable(job)); proto.end(rjToken); } Loading Loading @@ -3234,7 +3225,7 @@ public class JobSchedulerService extends com.android.server.SystemService job.writeToShortProto(proto, PendingJob.INFO); job.dump(proto, PendingJob.DUMP, false, nowElapsed); proto.write(PendingJob.EVALUATED_PRIORITY, evaluateJobPriorityLocked(job)); proto.write(PendingJob.ENQUEUED_DURATION_MS, nowUptime - job.madePending); proto.write(PendingJob.PENDING_DURATION_MS, nowUptime - job.madePending); proto.end(pjToken); } Loading Loading @@ -3283,6 +3274,8 @@ public class JobSchedulerService extends com.android.server.SystemService } mConcurrencyManager.dumpProtoLocked(proto, JobSchedulerServiceDumpProto.CONCURRENCY_MANAGER, now, nowElapsed); mJobs.getPersistStats().writeToProto(proto, JobSchedulerServiceDumpProto.PERSIST_STATS); } proto.flush(); Loading apex/jobscheduler/service/java/com/android/server/job/controllers/BackgroundJobsController.java +6 −11 Original line number Diff line number Diff line Loading @@ -115,32 +115,27 @@ public final class BackgroundJobsController extends StateController { final long mToken = proto.start(StateControllerProto.BACKGROUND); mAppStateTracker.dumpProto(proto, StateControllerProto.BackgroundJobsController.FORCE_APP_STANDBY_TRACKER); StateControllerProto.BackgroundJobsController.APP_STATE_TRACKER); mService.getJobStore().forEachJob(predicate, (jobStatus) -> { final long jsToken = proto.start(StateControllerProto.BackgroundJobsController.TRACKED_JOBS); jobStatus.writeToShortProto(proto, TrackedJob.INFO); jobStatus.writeToShortProto(proto, TrackedJob.INFO); final int sourceUid = jobStatus.getSourceUid(); proto.write(TrackedJob.SOURCE_UID, sourceUid); final String sourcePkg = jobStatus.getSourcePackageName(); proto.write(TrackedJob.SOURCE_PACKAGE_NAME, sourcePkg); proto.write(TrackedJob.IS_IN_FOREGROUND, mAppStateTracker.isUidActive(sourceUid)); proto.write(TrackedJob.IS_IN_FOREGROUND, mAppStateTracker.isUidActive(sourceUid)); proto.write(TrackedJob.IS_WHITELISTED, mAppStateTracker.isUidPowerSaveWhitelisted(sourceUid) || mAppStateTracker.isUidTempPowerSaveWhitelisted(sourceUid)); proto.write( TrackedJob.CAN_RUN_ANY_IN_BACKGROUND, mAppStateTracker.isRunAnyInBackgroundAppOpsAllowed( sourceUid, sourcePkg)); proto.write(TrackedJob.CAN_RUN_ANY_IN_BACKGROUND, mAppStateTracker.isRunAnyInBackgroundAppOpsAllowed(sourceUid, sourcePkg)); proto.write( TrackedJob.ARE_CONSTRAINTS_SATISFIED, proto.write(TrackedJob.ARE_CONSTRAINTS_SATISFIED, (jobStatus.satisfiedConstraints & JobStatus.CONSTRAINT_BACKGROUND_NOT_RESTRICTED) != 0); Loading apex/jobscheduler/service/java/com/android/server/job/controllers/ConnectivityController.java +12 −0 Original line number Diff line number Diff line Loading @@ -631,6 +631,18 @@ public final class ConnectivityController extends StateController implements final long token = proto.start(fieldId); final long mToken = proto.start(StateControllerProto.CONNECTIVITY); for (int i = 0; i < mRequestedWhitelistJobs.size(); i++) { proto.write( StateControllerProto.ConnectivityController.REQUESTED_STANDBY_EXCEPTION_UIDS, mRequestedWhitelistJobs.keyAt(i)); } for (int i = 0; i < mAvailableNetworks.size(); i++) { Network network = mAvailableNetworks.valueAt(i); if (network != null) { network.writeToProto(proto, StateControllerProto.ConnectivityController.AVAILABLE_NETWORKS); } } for (int i = 0; i < mTrackedJobs.size(); i++) { final ArraySet<JobStatus> jobs = mTrackedJobs.valueAt(i); for (int j = 0; j < jobs.size(); j++) { Loading apex/jobscheduler/service/java/com/android/server/job/controllers/DeviceIdleJobsController.java +1 −2 Original line number Diff line number Diff line Loading @@ -269,8 +269,7 @@ public final class DeviceIdleJobsController extends StateController { proto.write(TrackedJob.SOURCE_UID, jobStatus.getSourceUid()); proto.write(TrackedJob.SOURCE_PACKAGE_NAME, jobStatus.getSourcePackageName()); proto.write(TrackedJob.ARE_CONSTRAINTS_SATISFIED, (jobStatus.satisfiedConstraints & JobStatus.CONSTRAINT_DEVICE_NOT_DOZING) != 0); (jobStatus.satisfiedConstraints & JobStatus.CONSTRAINT_DEVICE_NOT_DOZING) != 0); proto.write(TrackedJob.IS_DOZE_WHITELISTED, jobStatus.dozeWhitelisted); proto.write(TrackedJob.IS_ALLOWED_IN_DOZE, mAllowInIdleJobs.contains(jobStatus)); Loading Loading
apex/jobscheduler/service/java/com/android/server/job/JobConcurrencyManager.java +17 −14 Original line number Diff line number Diff line Loading @@ -509,9 +509,8 @@ class JobConcurrencyManager { public void dumpProtoLocked(ProtoOutputStream proto, long tag, long now, long nowRealtime) { final long token = proto.start(tag); proto.write(JobConcurrencyManagerProto.CURRENT_INTERACTIVE, mCurrentInteractiveState); proto.write(JobConcurrencyManagerProto.EFFECTIVE_INTERACTIVE, proto.write(JobConcurrencyManagerProto.CURRENT_INTERACTIVE_STATE, mCurrentInteractiveState); proto.write(JobConcurrencyManagerProto.EFFECTIVE_INTERACTIVE_STATE, mEffectiveInteractiveState); proto.write(JobConcurrencyManagerProto.TIME_SINCE_LAST_SCREEN_ON_MS, Loading @@ -521,8 +520,9 @@ class JobConcurrencyManager { mJobCountTracker.dumpProto(proto, JobConcurrencyManagerProto.JOB_COUNT_TRACKER); proto.write(JobConcurrencyManagerProto.MEMORY_TRIM_LEVEL, mLastMemoryTrimLevel); proto.write(JobConcurrencyManagerProto.MEMORY_TRIM_LEVEL, mLastMemoryTrimLevel); mStatLogger.dumpProto(proto, JobConcurrencyManagerProto.STATS); proto.end(token); } Loading Loading @@ -676,19 +676,14 @@ class JobConcurrencyManager { + " Res BG: %d" + " Starting: %d / %d (%d)" + " Total: %d%s / %d%s (%d%s)", mConfigNumMaxTotalJobs, mConfigNumMinBgJobs, mConfigNumMaxBgJobs, mConfigNumMaxTotalJobs, mConfigNumMinBgJobs, mConfigNumMaxBgJobs, mNumRunningFgJobs, mNumRunningBgJobs, mNumRunningFgJobs + mNumRunningBgJobs, mNumRunningFgJobs, mNumRunningBgJobs, mNumRunningFgJobs + mNumRunningBgJobs, mNumPendingFgJobs, mNumPendingBgJobs, mNumPendingFgJobs + mNumPendingBgJobs, mNumPendingFgJobs, mNumPendingBgJobs, mNumPendingFgJobs + mNumPendingBgJobs, mNumActualMaxFgJobs, (totalFg <= mConfigNumMaxTotalJobs) ? "" : "*", mNumActualMaxBgJobs, (totalBg <= mConfigNumMaxBgJobs) ? "" : "*", mNumActualMaxFgJobs + mNumActualMaxBgJobs, (mNumActualMaxFgJobs + mNumActualMaxBgJobs <= mConfigNumMaxTotalJobs) ? "" : "*", Loading Loading @@ -716,6 +711,14 @@ class JobConcurrencyManager { proto.write(JobCountTrackerProto.NUM_PENDING_FG_JOBS, mNumPendingFgJobs); proto.write(JobCountTrackerProto.NUM_PENDING_BG_JOBS, mNumPendingBgJobs); proto.write(JobCountTrackerProto.NUM_ACTUAL_MAX_FG_JOBS, mNumActualMaxFgJobs); proto.write(JobCountTrackerProto.NUM_ACTUAL_MAX_BG_JOBS, mNumActualMaxBgJobs); proto.write(JobCountTrackerProto.NUM_RESERVED_FOR_BG, mNumReservedForBg); proto.write(JobCountTrackerProto.NUM_STARTING_FG_JOBS, mNumStartingFgJobs); proto.write(JobCountTrackerProto.NUM_STARTING_BG_JOBS, mNumStartingBgJobs); proto.end(token); } } Loading
apex/jobscheduler/service/java/com/android/server/job/JobSchedulerService.java +15 −22 Original line number Diff line number Diff line Loading @@ -3011,6 +3011,8 @@ public class JobSchedulerService extends com.android.server.SystemService pw.print(job.isReady()); pw.print(" user="); pw.print(areUsersStartedLocked(job)); pw.print(" !thermal="); pw.print(!isJobThermalConstrainedLocked(job)); pw.print(" !pending="); pw.print(!mPendingJobs.contains(job)); pw.print(" !active="); Loading @@ -3018,15 +3020,7 @@ public class JobSchedulerService extends com.android.server.SystemService pw.print(" !backingup="); pw.print(!(mBackingUpUids.indexOfKey(job.getSourceUid()) >= 0)); pw.print(" comp="); boolean componentPresent = false; try { componentPresent = (AppGlobals.getPackageManager().getServiceInfo( job.getServiceComponent(), PackageManager.MATCH_DEBUG_TRIAGED_MISSING, job.getUserId()) != null); } catch (RemoteException e) { } pw.print(componentPresent); pw.print(isComponentUsable(job)); pw.println(")"); } } else { Loading Loading @@ -3177,27 +3171,24 @@ public class JobSchedulerService extends com.android.server.SystemService job.dump(proto, JobSchedulerServiceDumpProto.RegisteredJob.DUMP, true, nowElapsed); // isReadyToBeExecuted proto.write( JobSchedulerServiceDumpProto.RegisteredJob.IS_JOB_READY_TO_BE_EXECUTED, isReadyToBeExecutedLocked(job)); proto.write(JobSchedulerServiceDumpProto.RegisteredJob.IS_JOB_READY, job.isReady()); proto.write(JobSchedulerServiceDumpProto.RegisteredJob.IS_USER_STARTED, proto.write(JobSchedulerServiceDumpProto.RegisteredJob.ARE_USERS_STARTED, areUsersStartedLocked(job)); proto.write( JobSchedulerServiceDumpProto.RegisteredJob.IS_JOB_THERMAL_CONSTRAINED, isJobThermalConstrainedLocked(job)); proto.write(JobSchedulerServiceDumpProto.RegisteredJob.IS_JOB_PENDING, mPendingJobs.contains(job)); proto.write(JobSchedulerServiceDumpProto.RegisteredJob.IS_JOB_CURRENTLY_ACTIVE, isCurrentlyActiveLocked(job)); proto.write(JobSchedulerServiceDumpProto.RegisteredJob.IS_UID_BACKING_UP, mBackingUpUids.indexOfKey(job.getSourceUid()) >= 0); boolean componentPresent = false; try { componentPresent = (AppGlobals.getPackageManager().getServiceInfo( job.getServiceComponent(), PackageManager.MATCH_DEBUG_TRIAGED_MISSING, job.getUserId()) != null); } catch (RemoteException e) { } proto.write(JobSchedulerServiceDumpProto.RegisteredJob.IS_COMPONENT_PRESENT, componentPresent); proto.write(JobSchedulerServiceDumpProto.RegisteredJob.IS_COMPONENT_USABLE, isComponentUsable(job)); proto.end(rjToken); } Loading Loading @@ -3234,7 +3225,7 @@ public class JobSchedulerService extends com.android.server.SystemService job.writeToShortProto(proto, PendingJob.INFO); job.dump(proto, PendingJob.DUMP, false, nowElapsed); proto.write(PendingJob.EVALUATED_PRIORITY, evaluateJobPriorityLocked(job)); proto.write(PendingJob.ENQUEUED_DURATION_MS, nowUptime - job.madePending); proto.write(PendingJob.PENDING_DURATION_MS, nowUptime - job.madePending); proto.end(pjToken); } Loading Loading @@ -3283,6 +3274,8 @@ public class JobSchedulerService extends com.android.server.SystemService } mConcurrencyManager.dumpProtoLocked(proto, JobSchedulerServiceDumpProto.CONCURRENCY_MANAGER, now, nowElapsed); mJobs.getPersistStats().writeToProto(proto, JobSchedulerServiceDumpProto.PERSIST_STATS); } proto.flush(); Loading
apex/jobscheduler/service/java/com/android/server/job/controllers/BackgroundJobsController.java +6 −11 Original line number Diff line number Diff line Loading @@ -115,32 +115,27 @@ public final class BackgroundJobsController extends StateController { final long mToken = proto.start(StateControllerProto.BACKGROUND); mAppStateTracker.dumpProto(proto, StateControllerProto.BackgroundJobsController.FORCE_APP_STANDBY_TRACKER); StateControllerProto.BackgroundJobsController.APP_STATE_TRACKER); mService.getJobStore().forEachJob(predicate, (jobStatus) -> { final long jsToken = proto.start(StateControllerProto.BackgroundJobsController.TRACKED_JOBS); jobStatus.writeToShortProto(proto, TrackedJob.INFO); jobStatus.writeToShortProto(proto, TrackedJob.INFO); final int sourceUid = jobStatus.getSourceUid(); proto.write(TrackedJob.SOURCE_UID, sourceUid); final String sourcePkg = jobStatus.getSourcePackageName(); proto.write(TrackedJob.SOURCE_PACKAGE_NAME, sourcePkg); proto.write(TrackedJob.IS_IN_FOREGROUND, mAppStateTracker.isUidActive(sourceUid)); proto.write(TrackedJob.IS_IN_FOREGROUND, mAppStateTracker.isUidActive(sourceUid)); proto.write(TrackedJob.IS_WHITELISTED, mAppStateTracker.isUidPowerSaveWhitelisted(sourceUid) || mAppStateTracker.isUidTempPowerSaveWhitelisted(sourceUid)); proto.write( TrackedJob.CAN_RUN_ANY_IN_BACKGROUND, mAppStateTracker.isRunAnyInBackgroundAppOpsAllowed( sourceUid, sourcePkg)); proto.write(TrackedJob.CAN_RUN_ANY_IN_BACKGROUND, mAppStateTracker.isRunAnyInBackgroundAppOpsAllowed(sourceUid, sourcePkg)); proto.write( TrackedJob.ARE_CONSTRAINTS_SATISFIED, proto.write(TrackedJob.ARE_CONSTRAINTS_SATISFIED, (jobStatus.satisfiedConstraints & JobStatus.CONSTRAINT_BACKGROUND_NOT_RESTRICTED) != 0); Loading
apex/jobscheduler/service/java/com/android/server/job/controllers/ConnectivityController.java +12 −0 Original line number Diff line number Diff line Loading @@ -631,6 +631,18 @@ public final class ConnectivityController extends StateController implements final long token = proto.start(fieldId); final long mToken = proto.start(StateControllerProto.CONNECTIVITY); for (int i = 0; i < mRequestedWhitelistJobs.size(); i++) { proto.write( StateControllerProto.ConnectivityController.REQUESTED_STANDBY_EXCEPTION_UIDS, mRequestedWhitelistJobs.keyAt(i)); } for (int i = 0; i < mAvailableNetworks.size(); i++) { Network network = mAvailableNetworks.valueAt(i); if (network != null) { network.writeToProto(proto, StateControllerProto.ConnectivityController.AVAILABLE_NETWORKS); } } for (int i = 0; i < mTrackedJobs.size(); i++) { final ArraySet<JobStatus> jobs = mTrackedJobs.valueAt(i); for (int j = 0; j < jobs.size(); j++) { Loading
apex/jobscheduler/service/java/com/android/server/job/controllers/DeviceIdleJobsController.java +1 −2 Original line number Diff line number Diff line Loading @@ -269,8 +269,7 @@ public final class DeviceIdleJobsController extends StateController { proto.write(TrackedJob.SOURCE_UID, jobStatus.getSourceUid()); proto.write(TrackedJob.SOURCE_PACKAGE_NAME, jobStatus.getSourcePackageName()); proto.write(TrackedJob.ARE_CONSTRAINTS_SATISFIED, (jobStatus.satisfiedConstraints & JobStatus.CONSTRAINT_DEVICE_NOT_DOZING) != 0); (jobStatus.satisfiedConstraints & JobStatus.CONSTRAINT_DEVICE_NOT_DOZING) != 0); proto.write(TrackedJob.IS_DOZE_WHITELISTED, jobStatus.dozeWhitelisted); proto.write(TrackedJob.IS_ALLOWED_IN_DOZE, mAllowInIdleJobs.contains(jobStatus)); Loading