From 7a9ae133b35446ba2a94dd956d766df4ad25ca6f Mon Sep 17 00:00:00 2001 From: Jeffrey Huang Date: Tue, 14 Jan 2020 15:44:58 -0800 Subject: [PATCH] Migrate pullProcessCpuTime Test: No CTS test. Ran adb shell cmd pull-source 10035 Change-Id: Idc6cad89d4a953f6c92fd55c7f9e0161633efad0 --- .../server/stats/StatsCompanionService.java | 26 ------------- .../src/external/StatsPullerManager.cpp | 5 --- .../stats/pull/StatsPullAtomService.java | 38 +++++++++++++++++-- 3 files changed, 35 insertions(+), 34 deletions(-) diff --git a/apex/statsd/service/java/com/android/server/stats/StatsCompanionService.java b/apex/statsd/service/java/com/android/server/stats/StatsCompanionService.java index e86fcfb0331cc..e43ee6141e78e 100644 --- a/apex/statsd/service/java/com/android/server/stats/StatsCompanionService.java +++ b/apex/statsd/service/java/com/android/server/stats/StatsCompanionService.java @@ -806,27 +806,6 @@ public class StatsCompanionService extends IStatsCompanionService.Stub { } } - private void pullProcessCpuTime(int tagId, long elapsedNanos, final long wallClockNanos, - List pulledData) { - synchronized (this) { - if (mProcessCpuTracker == null) { - mProcessCpuTracker = new ProcessCpuTracker(false); - mProcessCpuTracker.init(); - } - mProcessCpuTracker.update(); - for (int i = 0; i < mProcessCpuTracker.countStats(); i++) { - ProcessCpuTracker.Stats st = mProcessCpuTracker.getStats(i); - StatsLogEventWrapper e = new StatsLogEventWrapper(tagId, elapsedNanos, - wallClockNanos); - e.writeInt(st.uid); - e.writeString(st.name); - e.writeLong(st.base_utime); - e.writeLong(st.base_stime); - pulledData.add(e); - } - } - } - private void pullDebugElapsedClock(int tagId, long elapsedNanos, final long wallClockNanos, List pulledData) { final long elapsedMillis = SystemClock.elapsedRealtime(); @@ -1139,11 +1118,6 @@ public class StatsCompanionService extends IStatsCompanionService.Stub { break; } - case StatsLog.PROCESS_CPU_TIME: { - pullProcessCpuTime(tagId, elapsedNanos, wallClockNanos, ret); - break; - } - case StatsLog.DEBUG_ELAPSED_CLOCK: { pullDebugElapsedClock(tagId, elapsedNanos, wallClockNanos, ret); break; diff --git a/cmds/statsd/src/external/StatsPullerManager.cpp b/cmds/statsd/src/external/StatsPullerManager.cpp index ed86ea5bc56c2..6696bbdd7a59d 100644 --- a/cmds/statsd/src/external/StatsPullerManager.cpp +++ b/cmds/statsd/src/external/StatsPullerManager.cpp @@ -96,11 +96,6 @@ std::map StatsPullerManager::kAllPullAtomInfo = { {{.atomTag = android::util::PROC_STATS_PKG_PROC}, {.puller = new StatsCompanionServicePuller(android::util::PROC_STATS_PKG_PROC)}}, - // Process cpu stats. Min cool-down is 5 sec, inline with what AcitivityManagerService uses. - {{.atomTag = android::util::PROCESS_CPU_TIME}, - {.coolDownNs = 5 * NS_PER_SEC /* min cool-down in seconds*/, - .puller = new StatsCompanionServicePuller(android::util::PROCESS_CPU_TIME)}}, - // DebugElapsedClock. {{.atomTag = android::util::DEBUG_ELAPSED_CLOCK}, {.additiveFields = {1, 2, 3, 4}, diff --git a/services/core/java/com/android/server/stats/pull/StatsPullAtomService.java b/services/core/java/com/android/server/stats/pull/StatsPullAtomService.java index 19dc032b9b8ff..f93f29afb4e6d 100644 --- a/services/core/java/com/android/server/stats/pull/StatsPullAtomService.java +++ b/services/core/java/com/android/server/stats/pull/StatsPullAtomService.java @@ -1944,12 +1944,44 @@ public class StatsPullAtomService extends SystemService { return StatsManager.PULL_SUCCESS; } + private final Object mCpuTrackerLock = new Object(); + @GuardedBy("mCpuTrackerLock") + private ProcessCpuTracker mProcessCpuTracker; + private void registerProcessCpuTime() { - // No op. + int tagId = StatsLog.PROCESS_CPU_TIME; + // Min cool-down is 5 sec, inline with what ActivityManagerService uses. + PullAtomMetadata metadata = PullAtomMetadata.newBuilder() + .setCoolDownNs(5 * NS_PER_SEC) + .build(); + mStatsManager.registerPullAtomCallback( + tagId, + metadata, + (atomTag, data) -> pullProcessCpuTime(atomTag, data), + BackgroundThread.getExecutor() + ); } - private void pullProcessCpuTime() { - // No op. + private int pullProcessCpuTime(int atomTag, List pulledData) { + synchronized (mCpuTrackerLock) { + if (mProcessCpuTracker == null) { + mProcessCpuTracker = new ProcessCpuTracker(false); + mProcessCpuTracker.init(); + } + mProcessCpuTracker.update(); + for (int i = 0; i < mProcessCpuTracker.countStats(); i++) { + ProcessCpuTracker.Stats st = mProcessCpuTracker.getStats(i); + StatsEvent e = StatsEvent.newBuilder() + .setAtomId(atomTag) + .writeInt(st.uid) + .writeString(st.name) + .writeLong(st.base_utime) + .writeLong(st.base_stime) + .build(); + pulledData.add(e); + } + } + return StatsManager.PULL_SUCCESS; } @Nullable