Reduce auto-cork delay to 50ms
Bug: 160971853 Reduce the auto-cork delay from 2s to 50ms. Testing shows that this introduces a very few new invalidate calls for the package_info cache key, and greatly improves the hit ratio for the associated caches. This change includes a fix to the cache-clear counter. Some clears were missing. Test: * phone reboot * atest CtsContactsProviderTestCases * atest FrameworksServicesTests:UserSystemPackageInstallerTest * atest FrameworksServicesTests:PackageManagerSettingsTests Verified that hit ratios improved over the baseline. Verified that the number of extra invalidates did not increase by more than 5. Change-Id: I4b70b1da8c3927c74077e6da0e60dc56c2e007f1
This commit is contained in:
@@ -413,7 +413,7 @@ public abstract class PropertyInvalidatedCache<Query, Result> {
|
||||
public final void disableLocal() {
|
||||
synchronized (mLock) {
|
||||
mDisabled = true;
|
||||
mCache.clear();
|
||||
clear();
|
||||
}
|
||||
}
|
||||
|
||||
@@ -463,7 +463,7 @@ public abstract class PropertyInvalidatedCache<Query, Result> {
|
||||
cacheName(), mCache.size(),
|
||||
mLastSeenNonce, currentNonce));
|
||||
}
|
||||
mCache.clear();
|
||||
clear();
|
||||
mLastSeenNonce = currentNonce;
|
||||
cachedResult = null;
|
||||
}
|
||||
@@ -728,9 +728,13 @@ public abstract class PropertyInvalidatedCache<Query, Result> {
|
||||
* It's better to use explicit cork and uncork pairs that tighly surround big batches of
|
||||
* invalidations, but it's not always practical to tell where these invalidation batches
|
||||
* might occur. AutoCorker's time-based corking is a decent alternative.
|
||||
*
|
||||
* The auto-cork delay is configurable but it should not be too long. The purpose of
|
||||
* the delay is to minimize the number of times a server writes to the system property
|
||||
* when invalidating the cache. One write every 50ms does not hurt system performance.
|
||||
*/
|
||||
public static final class AutoCorker {
|
||||
public static final int DEFAULT_AUTO_CORK_DELAY_MS = 2000;
|
||||
public static final int DEFAULT_AUTO_CORK_DELAY_MS = 50;
|
||||
|
||||
private final String mPropertyName;
|
||||
private final int mAutoCorkDelayMs;
|
||||
|
||||
Reference in New Issue
Block a user