Merge "Defer UID data removal until after reading is finished" into sc-dev
This commit is contained in:
committed by
Android (Google) Code Review
commit
82cd582c4f
@@ -13002,16 +13002,17 @@ public class BatteryStatsImpl extends BatteryStats {
|
||||
mWakeLockAllocationsUs = null;
|
||||
final long startTimeMs = mClocks.uptimeMillis();
|
||||
final long elapsedRealtimeMs = mClocks.elapsedRealtime();
|
||||
final List<Integer> uidsToRemove = new ArrayList<>();
|
||||
mCpuUidFreqTimeReader.readDelta((uid, cpuFreqTimeMs) -> {
|
||||
uid = mapUid(uid);
|
||||
if (Process.isIsolated(uid)) {
|
||||
mCpuUidFreqTimeReader.removeUid(uid);
|
||||
uidsToRemove.add(uid);
|
||||
if (DEBUG) Slog.d(TAG, "Got freq readings for an isolated uid: " + uid);
|
||||
return;
|
||||
}
|
||||
if (!mUserInfoProvider.exists(UserHandle.getUserId(uid))) {
|
||||
if (DEBUG) Slog.d(TAG, "Got freq readings for an invalid user's uid " + uid);
|
||||
mCpuUidFreqTimeReader.removeUid(uid);
|
||||
uidsToRemove.add(uid);
|
||||
return;
|
||||
}
|
||||
final Uid u = getUidStatsLocked(uid, elapsedRealtimeMs, startTimeMs);
|
||||
@@ -13070,6 +13071,9 @@ public class BatteryStatsImpl extends BatteryStats {
|
||||
}
|
||||
}
|
||||
});
|
||||
for (int uid : uidsToRemove) {
|
||||
mCpuUidFreqTimeReader.removeUid(uid);
|
||||
}
|
||||
|
||||
final long elapsedTimeMs = mClocks.uptimeMillis() - startTimeMs;
|
||||
if (DEBUG_ENERGY_CPU || elapsedTimeMs >= 100) {
|
||||
@@ -13116,21 +13120,25 @@ public class BatteryStatsImpl extends BatteryStats {
|
||||
public void readKernelUidCpuActiveTimesLocked(boolean onBattery) {
|
||||
final long startTimeMs = mClocks.uptimeMillis();
|
||||
final long elapsedRealtimeMs = mClocks.elapsedRealtime();
|
||||
final List<Integer> uidsToRemove = new ArrayList<>();
|
||||
mCpuUidActiveTimeReader.readDelta((uid, cpuActiveTimesMs) -> {
|
||||
uid = mapUid(uid);
|
||||
if (Process.isIsolated(uid)) {
|
||||
mCpuUidActiveTimeReader.removeUid(uid);
|
||||
uidsToRemove.add(uid);
|
||||
if (DEBUG) Slog.w(TAG, "Got active times for an isolated uid: " + uid);
|
||||
return;
|
||||
}
|
||||
if (!mUserInfoProvider.exists(UserHandle.getUserId(uid))) {
|
||||
if (DEBUG) Slog.w(TAG, "Got active times for an invalid user's uid " + uid);
|
||||
mCpuUidActiveTimeReader.removeUid(uid);
|
||||
uidsToRemove.add(uid);
|
||||
return;
|
||||
}
|
||||
final Uid u = getUidStatsLocked(uid, elapsedRealtimeMs, startTimeMs);
|
||||
u.mCpuActiveTimeMs.addCountLocked(cpuActiveTimesMs, onBattery);
|
||||
});
|
||||
for (int uid : uidsToRemove) {
|
||||
mCpuUidActiveTimeReader.removeUid(uid);
|
||||
}
|
||||
|
||||
final long elapsedTimeMs = mClocks.uptimeMillis() - startTimeMs;
|
||||
if (DEBUG_ENERGY_CPU || elapsedTimeMs >= 100) {
|
||||
@@ -13146,21 +13154,25 @@ public class BatteryStatsImpl extends BatteryStats {
|
||||
public void readKernelUidCpuClusterTimesLocked(boolean onBattery) {
|
||||
final long startTimeMs = mClocks.uptimeMillis();
|
||||
final long elapsedRealtimeMs = mClocks.elapsedRealtime();
|
||||
final List<Integer> uidsToRemove = new ArrayList<>();
|
||||
mCpuUidClusterTimeReader.readDelta((uid, cpuClusterTimesMs) -> {
|
||||
uid = mapUid(uid);
|
||||
if (Process.isIsolated(uid)) {
|
||||
mCpuUidClusterTimeReader.removeUid(uid);
|
||||
uidsToRemove.add(uid);
|
||||
if (DEBUG) Slog.w(TAG, "Got cluster times for an isolated uid: " + uid);
|
||||
return;
|
||||
}
|
||||
if (!mUserInfoProvider.exists(UserHandle.getUserId(uid))) {
|
||||
if (DEBUG) Slog.w(TAG, "Got cluster times for an invalid user's uid " + uid);
|
||||
mCpuUidClusterTimeReader.removeUid(uid);
|
||||
uidsToRemove.add(uid);
|
||||
return;
|
||||
}
|
||||
final Uid u = getUidStatsLocked(uid, elapsedRealtimeMs, startTimeMs);
|
||||
u.mCpuClusterTimesMs.addCountLocked(cpuClusterTimesMs, onBattery);
|
||||
});
|
||||
for (int uid : uidsToRemove) {
|
||||
mCpuUidClusterTimeReader.removeUid(uid);
|
||||
}
|
||||
|
||||
final long elapsedTimeMs = mClocks.uptimeMillis() - startTimeMs;
|
||||
if (DEBUG_ENERGY_CPU || elapsedTimeMs >= 100) {
|
||||
|
||||
Reference in New Issue
Block a user