summaryrefslogtreecommitdiffstats
path: root/container-search
diff options
context:
space:
mode:
authorHenning Baldersheim <balder@yahoo-inc.com>2020-03-06 17:12:28 +0100
committerGitHub <noreply@github.com>2020-03-06 17:12:28 +0100
commit8341b3e6538be3127a58926ea9e84c1bbb5a9e9b (patch)
tree03f399197fd4de3cabb8ac3730199e1a648ffb19 /container-search
parente8ef6c31810d047f7c24a2540446c38702b15c7a (diff)
parent41bdd708697929dc19f433417797ddad4533bd3e (diff)
Merge pull request #12484 from vespa-engine/balder/warmup-lz4
Add JIT warmup of lz4.
Diffstat (limited to 'container-search')
-rw-r--r--container-search/src/main/java/com/yahoo/search/dispatch/Dispatcher.java24
1 files changed, 24 insertions, 0 deletions
diff --git a/container-search/src/main/java/com/yahoo/search/dispatch/Dispatcher.java b/container-search/src/main/java/com/yahoo/search/dispatch/Dispatcher.java
index 423de07f8c4..c2ea706acda 100644
--- a/container-search/src/main/java/com/yahoo/search/dispatch/Dispatcher.java
+++ b/container-search/src/main/java/com/yahoo/search/dispatch/Dispatcher.java
@@ -5,6 +5,7 @@ import com.google.inject.Inject;
import com.yahoo.cloud.config.ClusterInfoConfig;
import com.yahoo.component.AbstractComponent;
import com.yahoo.component.ComponentId;
+import com.yahoo.compress.Compressor;
import com.yahoo.container.handler.VipStatus;
import com.yahoo.jdisc.Metric;
import com.yahoo.prelude.fastsearch.VespaBackEndSearcher;
@@ -30,7 +31,13 @@ import java.util.HashSet;
import java.util.List;
import java.util.Optional;
import java.util.OptionalInt;
+import java.util.Random;
import java.util.Set;
+import java.util.concurrent.ExecutorService;
+import java.util.concurrent.Executors;
+import java.util.concurrent.ThreadPoolExecutor;
+import java.util.concurrent.TimeUnit;
+import java.util.concurrent.atomic.AtomicLong;
/**
* A dispatcher communicates with search nodes to perform queries and fill hits.
@@ -118,10 +125,18 @@ public class Dispatcher extends AbstractComponent {
this.metricContext = metric.createContext(null);
this.maxHitsPerNode = dispatchConfig.maxHitsPerNode();
searchCluster.addMonitoring(clusterMonitor);
+ Thread warmup = new Thread(new Runnable() {
+ @Override
+ public void run() {
+ warmup(dispatchConfig.warmuptime());
+ }
+ });
+ warmup.start();
try {
while ( ! searchCluster.hasInformationAboutAllNodes()) {
Thread.sleep(1);
}
+ warmup.join();
} catch (InterruptedException e) {}
/*
@@ -133,6 +148,15 @@ public class Dispatcher extends AbstractComponent {
searchCluster.pingIterationCompleted();
}
+ /*
+ Will run important code in order to trigger JIT compilation and avoid cold start issues.
+ Currently warms up lz4 compression code.
+ */
+
+ private static long warmup(double seconds) {
+ return new Compressor().warmup(seconds);
+ }
+
/** Returns the search cluster this dispatches to */
public SearchCluster searchCluster() {
return searchCluster;