Loading services/core/java/com/android/server/stats/pull/StatsPullAtomService.java +18 −23 Original line number Diff line number Diff line Loading @@ -212,7 +212,7 @@ public class StatsPullAtomService extends SystemService { private static final int DIMENSION_KEY_SIZE_HARD_LIMIT = 800; private static final int DIMENSION_KEY_SIZE_SOFT_LIMIT = 500; private static final long APP_OPS_SAMPLING_INITIALIZATION_DELAY_MILLIS = 45000; private static final int APP_OPS_SIZE_ESTIMATE = 5000; private static final int APP_OPS_SIZE_ESTIMATE = 2000; private static final String RESULT_RECEIVER_CONTROLLER_KEY = "controller_activity"; /** Loading Loading @@ -320,8 +320,7 @@ public class StatsPullAtomService extends SystemService { private StatsPullAtomCallbackImpl mStatsCallbackImpl; private final Object mAppOpsSamplingRateLock = new Object(); @GuardedBy("mAppOpsSamplingRateLock") @GuardedBy("mAttributedAppOpsLock") private int mAppOpsSamplingRate = 0; private final Object mDangerousAppOpsListLock = new Object(); @GuardedBy("mDangerousAppOpsListLock") Loading Loading @@ -3084,7 +3083,7 @@ public class StatsPullAtomService extends SystemService { int pullDangerousPermissionStateLocked(int atomTag, List<StatsEvent> pulledData) { final long token = Binder.clearCallingIdentity(); float samplingRate = DeviceConfig.getFloat(DeviceConfig.NAMESPACE_PERMISSIONS, DANGEROUS_PERMISSION_STATE_SAMPLE_RATE, 0.02f); DANGEROUS_PERMISSION_STATE_SAMPLE_RATE, 0.015f); Set<Integer> reportedUids = new HashSet<>(); try { PackageManager pm = mContext.getPackageManager(); Loading Loading @@ -3479,7 +3478,6 @@ public class StatsPullAtomService extends SystemService { HistoricalOps histOps = ops.get(EXTERNAL_STATS_SYNC_TIMEOUT_MILLIS, TimeUnit.MILLISECONDS); synchronized (mAppOpsSamplingRateLock) { if (mAppOpsSamplingRate == 0) { mContext.getMainThreadHandler().postDelayed(new Runnable() { @Override Loading @@ -3488,7 +3486,7 @@ public class StatsPullAtomService extends SystemService { estimateAppOpsSamplingRate(); } catch (Throwable e) { Slog.e(TAG, "AppOps sampling ratio estimation failed: ", e); synchronized (mAppOpsSamplingRateLock) { synchronized (mAttributedAppOpsLock) { mAppOpsSamplingRate = min(mAppOpsSamplingRate, 10); } } Loading @@ -3496,16 +3494,13 @@ public class StatsPullAtomService extends SystemService { }, APP_OPS_SAMPLING_INITIALIZATION_DELAY_MILLIS); mAppOpsSamplingRate = 100; } } List<AppOpEntry> opsList = processHistoricalOps(histOps, atomTag, mAppOpsSamplingRate); int newSamplingRate = sampleAppOps(pulledData, opsList, atomTag, mAppOpsSamplingRate); synchronized (mAppOpsSamplingRateLock) { mAppOpsSamplingRate = min(mAppOpsSamplingRate, newSamplingRate); } } catch (Throwable t) { // TODO: catch exceptions at a more granular level Slog.e(TAG, "Could not read appops", t); Loading Loading @@ -3544,7 +3539,7 @@ public class StatsPullAtomService extends SystemService { } int estimatedSamplingRate = (int) constrain( appOpsTargetCollectionSize * 100 / estimatedSize, 0, 100); synchronized (mAppOpsSamplingRateLock) { synchronized (mAttributedAppOpsLock) { mAppOpsSamplingRate = min(mAppOpsSamplingRate, estimatedSamplingRate); } } Loading Loading
services/core/java/com/android/server/stats/pull/StatsPullAtomService.java +18 −23 Original line number Diff line number Diff line Loading @@ -212,7 +212,7 @@ public class StatsPullAtomService extends SystemService { private static final int DIMENSION_KEY_SIZE_HARD_LIMIT = 800; private static final int DIMENSION_KEY_SIZE_SOFT_LIMIT = 500; private static final long APP_OPS_SAMPLING_INITIALIZATION_DELAY_MILLIS = 45000; private static final int APP_OPS_SIZE_ESTIMATE = 5000; private static final int APP_OPS_SIZE_ESTIMATE = 2000; private static final String RESULT_RECEIVER_CONTROLLER_KEY = "controller_activity"; /** Loading Loading @@ -320,8 +320,7 @@ public class StatsPullAtomService extends SystemService { private StatsPullAtomCallbackImpl mStatsCallbackImpl; private final Object mAppOpsSamplingRateLock = new Object(); @GuardedBy("mAppOpsSamplingRateLock") @GuardedBy("mAttributedAppOpsLock") private int mAppOpsSamplingRate = 0; private final Object mDangerousAppOpsListLock = new Object(); @GuardedBy("mDangerousAppOpsListLock") Loading Loading @@ -3084,7 +3083,7 @@ public class StatsPullAtomService extends SystemService { int pullDangerousPermissionStateLocked(int atomTag, List<StatsEvent> pulledData) { final long token = Binder.clearCallingIdentity(); float samplingRate = DeviceConfig.getFloat(DeviceConfig.NAMESPACE_PERMISSIONS, DANGEROUS_PERMISSION_STATE_SAMPLE_RATE, 0.02f); DANGEROUS_PERMISSION_STATE_SAMPLE_RATE, 0.015f); Set<Integer> reportedUids = new HashSet<>(); try { PackageManager pm = mContext.getPackageManager(); Loading Loading @@ -3479,7 +3478,6 @@ public class StatsPullAtomService extends SystemService { HistoricalOps histOps = ops.get(EXTERNAL_STATS_SYNC_TIMEOUT_MILLIS, TimeUnit.MILLISECONDS); synchronized (mAppOpsSamplingRateLock) { if (mAppOpsSamplingRate == 0) { mContext.getMainThreadHandler().postDelayed(new Runnable() { @Override Loading @@ -3488,7 +3486,7 @@ public class StatsPullAtomService extends SystemService { estimateAppOpsSamplingRate(); } catch (Throwable e) { Slog.e(TAG, "AppOps sampling ratio estimation failed: ", e); synchronized (mAppOpsSamplingRateLock) { synchronized (mAttributedAppOpsLock) { mAppOpsSamplingRate = min(mAppOpsSamplingRate, 10); } } Loading @@ -3496,16 +3494,13 @@ public class StatsPullAtomService extends SystemService { }, APP_OPS_SAMPLING_INITIALIZATION_DELAY_MILLIS); mAppOpsSamplingRate = 100; } } List<AppOpEntry> opsList = processHistoricalOps(histOps, atomTag, mAppOpsSamplingRate); int newSamplingRate = sampleAppOps(pulledData, opsList, atomTag, mAppOpsSamplingRate); synchronized (mAppOpsSamplingRateLock) { mAppOpsSamplingRate = min(mAppOpsSamplingRate, newSamplingRate); } } catch (Throwable t) { // TODO: catch exceptions at a more granular level Slog.e(TAG, "Could not read appops", t); Loading Loading @@ -3544,7 +3539,7 @@ public class StatsPullAtomService extends SystemService { } int estimatedSamplingRate = (int) constrain( appOpsTargetCollectionSize * 100 / estimatedSize, 0, 100); synchronized (mAppOpsSamplingRateLock) { synchronized (mAttributedAppOpsLock) { mAppOpsSamplingRate = min(mAppOpsSamplingRate, estimatedSamplingRate); } } Loading