diff options
Diffstat (limited to 'src/main/java/com/google/devtools/build/lib')
-rw-r--r-- | src/main/java/com/google/devtools/build/lib/worker/WorkerModule.java | 19 |
1 files changed, 18 insertions, 1 deletions
diff --git a/src/main/java/com/google/devtools/build/lib/worker/WorkerModule.java b/src/main/java/com/google/devtools/build/lib/worker/WorkerModule.java index cb148720b5..319b97450f 100644 --- a/src/main/java/com/google/devtools/build/lib/worker/WorkerModule.java +++ b/src/main/java/com/google/devtools/build/lib/worker/WorkerModule.java @@ -66,7 +66,24 @@ public class WorkerModule extends BlazeModule { } GenericKeyedObjectPoolConfig config = new GenericKeyedObjectPoolConfig(); - config.setTimeBetweenEvictionRunsMillis(10 * 1000); + + // It's better to re-use a worker as often as possible and keep it hot, in order to profit + // from JIT optimizations as much as possible. + config.setLifo(true); + + // Check for & deal with idle workers every 5 seconds. + config.setTimeBetweenEvictionRunsMillis(5 * 1000); + + // Always test the liveliness of worker processes. + config.setTestOnBorrow(true); + config.setTestOnCreate(true); + config.setTestOnReturn(true); + config.setTestWhileIdle(true); + + // Don't limit the total number of worker processes, as otherwise the pool might be full of + // e.g. Java workers and could never accommodate another request for a different kind of + // worker. + config.setMaxTotal(-1); workers = new WorkerPool(new WorkerFactory(), config); workers.setReporter(env.getReporter()); |