diff options
author | 2020-11-09 17:26:24 +0000 | |
---|---|---|
committer | 2020-11-09 17:26:24 +0000 | |
commit | cc3ff5cd59b0942a3ac6c47575aa1720e9da918b (patch) | |
tree | 74c4bee3733661f949f2457dd399bdafcb1888f4 | |
parent | 1df7cf9bf1a2b1a74b035d57c51d072aa4ec692f (diff) | |
parent | 59504338fc5e85dead2c08af6dc70501e4adb224 (diff) |
Merge "CPU time min threshold for CpuTimePerUidFreq" into rvc-qpr-dev
-rw-r--r-- | services/core/java/com/android/server/stats/pull/StatsPullAtomService.java | 9 |
1 files changed, 8 insertions, 1 deletions
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 8f3ed7411f17..3b73c1e92cc2 100644 --- a/services/core/java/com/android/server/stats/pull/StatsPullAtomService.java +++ b/services/core/java/com/android/server/stats/pull/StatsPullAtomService.java @@ -249,6 +249,13 @@ public class StatsPullAtomService extends SystemService { // 20% as a conservative estimate. private static final int MAX_PROCSTATS_RAW_SHARD_SIZE = (int) (MAX_PROCSTATS_SHARD_SIZE * 1.20); + /** + * Threshold to filter out small CPU times at frequency per UID. Those small values appear + * because of more precise accounting in a BPF program. Discarding them reduces the data by at + * least 20% with negligible error. + */ + private static final int MIN_CPU_TIME_PER_UID_FREQ = 10; + private final Object mThermalLock = new Object(); @GuardedBy("mThermalLock") private IThermalService mThermalService; @@ -1556,7 +1563,7 @@ public class StatsPullAtomService extends SystemService { int pullCpuTimePerUidFreqLocked(int atomTag, List<StatsEvent> pulledData) { mCpuUidFreqTimeReader.readAbsolute((uid, cpuFreqTimeMs) -> { for (int freqIndex = 0; freqIndex < cpuFreqTimeMs.length; ++freqIndex) { - if (cpuFreqTimeMs[freqIndex] != 0) { + if (cpuFreqTimeMs[freqIndex] >= MIN_CPU_TIME_PER_UID_FREQ) { StatsEvent e = StatsEvent.newBuilder() .setAtomId(atomTag) .writeInt(uid) |