CPU time min threshold for CpuTimePerUidFreq
Introduce a threshold to exclude small CPU time values in CpuTimePerUidFreq. They come from more precise accounting in a BPF program. The threshold is 10 ms to match the behavior of the time_in_state BPF predecessor. The reducation in data size is expected be at least 20%. Bug: 157535126 Test: adb shell cmd stats pull-source 10010 Change-Id: Ia7f2a2ad71831387cffdd6db30da4ce501219d0e
This commit is contained in:
@@ -247,6 +247,13 @@ public class StatsPullAtomService extends SystemService {
|
|||||||
// 20% as a conservative estimate.
|
// 20% as a conservative estimate.
|
||||||
private static final int MAX_PROCSTATS_RAW_SHARD_SIZE = (int) (MAX_PROCSTATS_SHARD_SIZE * 1.20);
|
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();
|
private final Object mThermalLock = new Object();
|
||||||
@GuardedBy("mThermalLock")
|
@GuardedBy("mThermalLock")
|
||||||
private IThermalService mThermalService;
|
private IThermalService mThermalService;
|
||||||
@@ -1509,7 +1516,7 @@ public class StatsPullAtomService extends SystemService {
|
|||||||
int pullCpuTimePerUidFreqLocked(int atomTag, List<StatsEvent> pulledData) {
|
int pullCpuTimePerUidFreqLocked(int atomTag, List<StatsEvent> pulledData) {
|
||||||
mCpuUidFreqTimeReader.readAbsolute((uid, cpuFreqTimeMs) -> {
|
mCpuUidFreqTimeReader.readAbsolute((uid, cpuFreqTimeMs) -> {
|
||||||
for (int freqIndex = 0; freqIndex < cpuFreqTimeMs.length; ++freqIndex) {
|
for (int freqIndex = 0; freqIndex < cpuFreqTimeMs.length; ++freqIndex) {
|
||||||
if (cpuFreqTimeMs[freqIndex] != 0) {
|
if (cpuFreqTimeMs[freqIndex] >= MIN_CPU_TIME_PER_UID_FREQ) {
|
||||||
pulledData.add(FrameworkStatsLog.buildStatsEvent(
|
pulledData.add(FrameworkStatsLog.buildStatsEvent(
|
||||||
atomTag, uid, freqIndex, cpuFreqTimeMs[freqIndex]));
|
atomTag, uid, freqIndex, cpuFreqTimeMs[freqIndex]));
|
||||||
}
|
}
|
||||||
|
|||||||
Reference in New Issue
Block a user