Merge "Do not keep the input array with CPU times" into rvc-qpr-dev

This commit is contained in:
Rafal Slawik
2021-02-12 16:39:01 +00:00
committed by Android (Google) Code Review

View File

@@ -1565,9 +1565,6 @@ public class StatsPullAtomService extends SystemService {
// Aggregate times for the same uids. // Aggregate times for the same uids.
SparseArray<long[]> aggregated = new SparseArray<>(); SparseArray<long[]> aggregated = new SparseArray<>();
mCpuUidFreqTimeReader.readAbsolute((uid, cpuFreqTimeMs) -> { mCpuUidFreqTimeReader.readAbsolute((uid, cpuFreqTimeMs) -> {
// For uids known to be aggregated from many entries allow mutating in place to avoid
// many copies. Otherwise, copy before aggregating.
boolean mutateInPlace = false;
if (UserHandle.isIsolated(uid)) { if (UserHandle.isIsolated(uid)) {
// Skip individual isolated uids because they are recycled and quickly removed from // Skip individual isolated uids because they are recycled and quickly removed from
// the underlying data source. // the underlying data source.
@@ -1575,26 +1572,18 @@ public class StatsPullAtomService extends SystemService {
} else if (UserHandle.isSharedAppGid(uid)) { } else if (UserHandle.isSharedAppGid(uid)) {
// All shared app gids are accounted together. // All shared app gids are accounted together.
uid = LAST_SHARED_APPLICATION_GID; uid = LAST_SHARED_APPLICATION_GID;
mutateInPlace = true; } else {
} else if (UserHandle.isApp(uid)) { // Everything else is accounted under their base uid.
// Apps are accounted under their app id.
uid = UserHandle.getAppId(uid); uid = UserHandle.getAppId(uid);
} }
long[] aggCpuFreqTimeMs = aggregated.get(uid); long[] aggCpuFreqTimeMs = aggregated.get(uid);
if (aggCpuFreqTimeMs != null) { if (aggCpuFreqTimeMs == null) {
if (!mutateInPlace) { aggCpuFreqTimeMs = new long[cpuFreqTimeMs.length];
aggCpuFreqTimeMs = Arrays.copyOf(aggCpuFreqTimeMs, cpuFreqTimeMs.length); aggregated.put(uid, aggCpuFreqTimeMs);
aggregated.put(uid, aggCpuFreqTimeMs); }
} for (int freqIndex = 0; freqIndex < cpuFreqTimeMs.length; ++freqIndex) {
for (int freqIndex = 0; freqIndex < cpuFreqTimeMs.length; ++freqIndex) { aggCpuFreqTimeMs[freqIndex] += cpuFreqTimeMs[freqIndex];
aggCpuFreqTimeMs[freqIndex] += cpuFreqTimeMs[freqIndex];
}
} else {
if (mutateInPlace) {
cpuFreqTimeMs = Arrays.copyOf(cpuFreqTimeMs, cpuFreqTimeMs.length);
}
aggregated.put(uid, cpuFreqTimeMs);
} }
}); });