summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
author Chris Wailes <chriswailes@google.com> 2020-01-17 11:49:06 -0800
committer android-build-merger <android-build-merger@google.com> 2020-01-17 11:49:06 -0800
commitd5c2d5d7927b3378de0c9dd8fa8206aa75b97024 (patch)
tree141e2cd02ce09b170bb8eef280211c700010ecc0
parent16d1a78e67aa7299fdf2ec4fcd06fde04c7d67f9 (diff)
parenteabbf8720c100741e02eedac3b371945bcef68b9 (diff)
Make the USAP Pool refill delay configurable.
am: eabbf8720c Change-Id: Ie07333bd97ba8cbd92744d68e17bbd2a84fe77a1
-rw-r--r--core/java/com/android/internal/os/ZygoteServer.java24
1 files changed, 17 insertions, 7 deletions
diff --git a/core/java/com/android/internal/os/ZygoteServer.java b/core/java/com/android/internal/os/ZygoteServer.java
index d4636f870746..c898c0db6690 100644
--- a/core/java/com/android/internal/os/ZygoteServer.java
+++ b/core/java/com/android/internal/os/ZygoteServer.java
@@ -66,11 +66,8 @@ class ZygoteServer {
/** The default value used for the USAP_POOL_SIZE_MIN device property */
private static final String USAP_POOL_SIZE_MIN_DEFAULT = "1";
- /**
- * Number of milliseconds to delay before refilling the pool if it hasn't reached its
- * minimum value.
- */
- private static final int USAP_REFILL_DELAY_MS = 3000;
+ /** The default value used for the USAP_REFILL_DELAY_MS device property */
+ private static final String USAP_POOL_REFILL_DELAY_MS_DEFAULT = "3000";
/** The "not a timestamp" value for the refill delay timestamp mechanism. */
private static final int INVALID_TIMESTAMP = -1;
@@ -140,6 +137,12 @@ class ZygoteServer {
*/
private int mUsapPoolRefillThreshold = 0;
+ /**
+ * Number of milliseconds to delay before refilling the pool if it hasn't reached its
+ * minimum value.
+ */
+ private int mUsapPoolRefillDelayMs = -1;
+
private enum UsapPoolRefillAction {
DELAYED,
IMMEDIATE,
@@ -282,6 +285,13 @@ class ZygoteServer {
mUsapPoolSizeMax);
}
+ final String usapPoolRefillDelayMsPropString = Zygote.getConfigurationProperty(
+ ZygoteConfig.USAP_POOL_REFILL_DELAY_MS, USAP_POOL_REFILL_DELAY_MS_DEFAULT);
+
+ if (!usapPoolRefillDelayMsPropString.isEmpty()) {
+ mUsapPoolRefillDelayMs = Integer.parseInt(usapPoolRefillDelayMsPropString);
+ }
+
// Sanity check
if (mUsapPoolSizeMin >= mUsapPoolSizeMax) {
Log.w(TAG, "The max size of the USAP pool must be greater than the minimum size."
@@ -469,13 +479,13 @@ class ZygoteServer {
int elapsedTimeMs =
(int) (System.currentTimeMillis() - usapPoolRefillTriggerTimestamp);
- if (elapsedTimeMs >= USAP_REFILL_DELAY_MS) {
+ if (elapsedTimeMs >= mUsapPoolRefillDelayMs) {
// Normalize the poll timeout value when the time between one poll event and the
// next pushes us over the delay value. This prevents poll receiving a 0
// timeout value, which would result in it returning immediately.
pollTimeoutMs = -1;
} else {
- pollTimeoutMs = USAP_REFILL_DELAY_MS - elapsedTimeMs;
+ pollTimeoutMs = mUsapPoolRefillDelayMs - elapsedTimeMs;
}
}