aboutsummaryrefslogtreecommitdiffstats
path: root/config-model
diff options
context:
space:
mode:
authorHenning Baldersheim <balder@yahoo-inc.com>2019-10-14 16:08:13 +0200
committerGitHub <noreply@github.com>2019-10-14 16:08:13 +0200
commitd374a9ae6c3ceeaa98a9e7eb782dbbce7528dcf8 (patch)
tree8f14e03f97f89557ae433520bed749f16d556e48 /config-model
parentc256b9a348e68be914a2aa604fd25c05b857bfd4 (diff)
parent490d73510daa4b609c415f7306e81a3bb55f8499 (diff)
Merge pull request #10971 from vespa-engine/balder/only-use-2-cores-for-metricsproxy-and-clustercontroller
Balder/only use 2 cores for metricsproxy and clustercontroller
Diffstat (limited to 'config-model')
-rw-r--r--config-model/src/main/java/com/yahoo/vespa/model/admin/clustercontroller/ClusterControllerContainer.java6
-rw-r--r--config-model/src/main/java/com/yahoo/vespa/model/admin/metricsproxy/MetricsProxyContainer.java2
-rw-r--r--config-model/src/main/java/com/yahoo/vespa/model/admin/metricsproxy/MetricsProxyContainerCluster.java6
-rw-r--r--config-model/src/test/java/com/yahoo/vespa/model/admin/ClusterControllerTestCase.java49
-rw-r--r--config-model/src/test/java/com/yahoo/vespa/model/admin/metricsproxy/MetricsProxyContainerClusterTest.java21
-rw-r--r--config-model/src/test/java/com/yahoo/vespa/model/admin/metricsproxy/MetricsProxyContainerTest.java13
-rw-r--r--config-model/src/test/java/com/yahoo/vespa/model/admin/metricsproxy/MetricsProxyModelTester.java6
7 files changed, 87 insertions, 16 deletions
diff --git a/config-model/src/main/java/com/yahoo/vespa/model/admin/clustercontroller/ClusterControllerContainer.java b/config-model/src/main/java/com/yahoo/vespa/model/admin/clustercontroller/ClusterControllerContainer.java
index d5e42276c1a..38b18429f1d 100644
--- a/config-model/src/main/java/com/yahoo/vespa/model/admin/clustercontroller/ClusterControllerContainer.java
+++ b/config-model/src/main/java/com/yahoo/vespa/model/admin/clustercontroller/ClusterControllerContainer.java
@@ -110,7 +110,11 @@ public class ClusterControllerContainer extends Container implements
@Override
public void getConfig(QrStartConfig.Builder builder) {
- builder.jvm(new QrStartConfig.Jvm.Builder().heapsize(512));
+ builder.jvm
+ .verbosegc(false)
+ .availableProcessors(2)
+ .heapsize(512)
+ .heapSizeAsPercentageOfPhysicalMemory(0);
}
}
diff --git a/config-model/src/main/java/com/yahoo/vespa/model/admin/metricsproxy/MetricsProxyContainer.java b/config-model/src/main/java/com/yahoo/vespa/model/admin/metricsproxy/MetricsProxyContainer.java
index 8dff6aeb830..97579958d7b 100644
--- a/config-model/src/main/java/com/yahoo/vespa/model/admin/metricsproxy/MetricsProxyContainer.java
+++ b/config-model/src/main/java/com/yahoo/vespa/model/admin/metricsproxy/MetricsProxyContainer.java
@@ -49,7 +49,7 @@ public class MetricsProxyContainer extends Container implements
setProp("index", String.valueOf(index));
addNodeSpecificComponents();
- appendJvmOptions("-Xms32m -Xmx512m");
+ appendJvmOptions("-Xms32m");
}
private void addNodeSpecificComponents() {
diff --git a/config-model/src/main/java/com/yahoo/vespa/model/admin/metricsproxy/MetricsProxyContainerCluster.java b/config-model/src/main/java/com/yahoo/vespa/model/admin/metricsproxy/MetricsProxyContainerCluster.java
index 253ad4ce119..5d78c3cec75 100644
--- a/config-model/src/main/java/com/yahoo/vespa/model/admin/metricsproxy/MetricsProxyContainerCluster.java
+++ b/config-model/src/main/java/com/yahoo/vespa/model/admin/metricsproxy/MetricsProxyContainerCluster.java
@@ -154,7 +154,11 @@ public class MetricsProxyContainerCluster extends ContainerCluster<MetricsProxyC
public void getConfig(QrStartConfig.Builder builder) {
super.getConfig(builder);
// This takes effect via vespa-start-container-daemon:configure_gcopts
- builder.jvm.verbosegc(false);
+ builder.jvm
+ .verbosegc(false)
+ .availableProcessors(2)
+ .heapSizeAsPercentageOfPhysicalMemory(0)
+ .heapsize(512);
}
@Override
diff --git a/config-model/src/test/java/com/yahoo/vespa/model/admin/ClusterControllerTestCase.java b/config-model/src/test/java/com/yahoo/vespa/model/admin/ClusterControllerTestCase.java
index 3817288d44b..6b7088a6074 100644
--- a/config-model/src/test/java/com/yahoo/vespa/model/admin/ClusterControllerTestCase.java
+++ b/config-model/src/test/java/com/yahoo/vespa/model/admin/ClusterControllerTestCase.java
@@ -5,9 +5,19 @@ import com.google.common.collect.Collections2;
import com.yahoo.cloud.config.ZookeeperServerConfig;
import com.yahoo.cloud.config.ZookeepersConfig;
import com.yahoo.component.Version;
+import com.yahoo.config.application.api.ApplicationPackage;
+import com.yahoo.config.application.api.DeployLogger;
+import com.yahoo.config.model.NullConfigModelRegistry;
import com.yahoo.config.model.application.provider.SimpleApplicationValidator;
+import com.yahoo.config.model.deploy.DeployState;
+import com.yahoo.config.model.deploy.TestProperties;
import com.yahoo.config.model.test.TestDriver;
import com.yahoo.config.model.test.TestRoot;
+import com.yahoo.config.provision.Environment;
+import com.yahoo.config.provision.RegionName;
+import com.yahoo.config.provision.SystemName;
+import com.yahoo.config.provision.Zone;
+import com.yahoo.search.config.QrStartConfig;
import com.yahoo.vespa.config.content.FleetcontrollerConfig;
import com.yahoo.vespa.config.content.StorDistributionConfig;
import com.yahoo.config.model.builder.xml.test.DomBuilderTest;
@@ -16,6 +26,7 @@ import com.yahoo.vespa.model.HostResource;
import com.yahoo.vespa.model.Service;
import com.yahoo.vespa.model.VespaModel;
import com.yahoo.vespa.model.test.utils.ApplicationPackageUtils;
+import com.yahoo.vespa.model.test.utils.DeployLoggerStub;
import org.junit.Before;
import org.junit.Test;
import org.xml.sax.SAXException;
@@ -26,6 +37,7 @@ import java.util.Collection;
import java.util.List;
import static org.hamcrest.CoreMatchers.is;
+import static org.junit.Assert.assertEquals;
import static org.junit.Assert.assertFalse;
import static org.junit.Assert.assertNull;
import static org.junit.Assert.assertThat;
@@ -316,6 +328,10 @@ public class ClusterControllerTestCase extends DomBuilderTest {
@Test
public void testUnconfiguredNoTuning() throws Exception {
+ verifyUnconfiguredNoTuning(false);
+ verifyUnconfiguredNoTuning(true);
+ }
+ private void verifyUnconfiguredNoTuning(boolean isHosted) throws Exception {
String xml = "<?xml version=\"1.0\" encoding=\"utf-8\" ?>\n" +
"<services>\n" +
"\n" +
@@ -339,7 +355,7 @@ public class ClusterControllerTestCase extends DomBuilderTest {
"\n" +
"</services>";
- VespaModel model = createVespaModel(xml);
+ VespaModel model = createVespaModel(xml, isHosted);
assertTrue(model.getService("admin/cluster-controllers/0").isPresent());
assertTrue(existsHostsWithClusterControllerConfigId(model));
@@ -351,6 +367,18 @@ public class ClusterControllerTestCase extends DomBuilderTest {
FleetcontrollerConfig cfg = new FleetcontrollerConfig(builder);
assertThat(cfg.index(), is(0));
+
+ QrStartConfig.Builder qrBuilder = new QrStartConfig.Builder();
+ model.getConfig(qrBuilder, "admin/cluster-controllers/0/components/clustercontroller-bar-configurer");
+ QrStartConfig qrStartConfig = new QrStartConfig(qrBuilder);
+ assertEquals(512, qrStartConfig.jvm().heapsize());
+ assertEquals(0, qrStartConfig.jvm().heapSizeAsPercentageOfPhysicalMemory());
+ assertEquals(2, qrStartConfig.jvm().availableProcessors());
+ assertFalse(qrStartConfig.jvm().verbosegc());
+ assertEquals("-XX:+UseG1GC -XX:MaxTenuringThreshold=15", qrStartConfig.jvm().gcopts());
+ assertEquals(512, qrStartConfig.jvm().stacksize());
+ assertEquals(0, qrStartConfig.jvm().directMemorySizeCache());
+ assertEquals(75, qrStartConfig.jvm().baseMaxDirectMemorySize());
}
@Test
@@ -427,10 +455,21 @@ public class ClusterControllerTestCase extends DomBuilderTest {
}
private VespaModel createVespaModel(String servicesXml) throws IOException, SAXException {
- VespaModel model = new VespaModel(new MockApplicationPackage.Builder()
- .withServices(servicesXml)
- .withSearchDefinitions(sds)
- .build());
+ return createVespaModel(servicesXml, false);
+ }
+ private VespaModel createVespaModel(String servicesXml, boolean isHosted) throws IOException, SAXException {
+ ApplicationPackage applicationPackage = new MockApplicationPackage.Builder()
+ .withServices(servicesXml)
+ .withSearchDefinitions(sds)
+ .build();
+ // Need to create VespaModel to make deploy properties have effect
+ DeployLogger logger = new DeployLoggerStub();
+ VespaModel model = new VespaModel(new NullConfigModelRegistry(), new DeployState.Builder()
+ .applicationPackage(applicationPackage)
+ .deployLogger(logger)
+ .zone(new Zone(SystemName.cd, Environment.dev, RegionName.from("here")))
+ .properties(new TestProperties().setHostedVespa(isHosted))
+ .build());
SimpleApplicationValidator.checkServices(new StringReader(servicesXml), new Version(7));
return model;
}
diff --git a/config-model/src/test/java/com/yahoo/vespa/model/admin/metricsproxy/MetricsProxyContainerClusterTest.java b/config-model/src/test/java/com/yahoo/vespa/model/admin/metricsproxy/MetricsProxyContainerClusterTest.java
index 34530b598df..737e7b197bf 100644
--- a/config-model/src/test/java/com/yahoo/vespa/model/admin/metricsproxy/MetricsProxyContainerClusterTest.java
+++ b/config-model/src/test/java/com/yahoo/vespa/model/admin/metricsproxy/MetricsProxyContainerClusterTest.java
@@ -41,6 +41,7 @@ import static com.yahoo.vespa.model.admin.metricsproxy.MetricsProxyModelTester.c
import static com.yahoo.vespa.model.admin.metricsproxy.MetricsProxyModelTester.getApplicationDimensionsConfig;
import static com.yahoo.vespa.model.admin.metricsproxy.MetricsProxyModelTester.getCustomConsumer;
import static com.yahoo.vespa.model.admin.metricsproxy.MetricsProxyModelTester.getModel;
+import static com.yahoo.vespa.model.admin.metricsproxy.MetricsProxyModelTester.configId;
import static com.yahoo.vespa.model.admin.metricsproxy.MetricsProxyModelTester.getQrStartConfig;
import static com.yahoo.vespa.model.admin.monitoring.DefaultPublicConsumer.DEFAULT_PUBLIC_CONSUMER_ID;
import static com.yahoo.vespa.model.admin.monitoring.DefaultPublicMetrics.defaultPublicMetricSet;
@@ -93,11 +94,23 @@ public class MetricsProxyContainerClusterTest {
assertEquals(MockApplicationPackage.DEPLOYED_BY_USER, config.user());
}
+ private void metrics_proxy_has_expected_qr_start_options(MetricsProxyModelTester.TestMode mode) {
+ VespaModel model = getModel(servicesWithAdminOnly(), mode);
+ QrStartConfig qrStartConfig = getQrStartConfig(model);
+ assertEquals(512, qrStartConfig.jvm().heapsize());
+ assertEquals(0, qrStartConfig.jvm().heapSizeAsPercentageOfPhysicalMemory());
+ assertEquals(2, qrStartConfig.jvm().availableProcessors());
+ assertEquals(false, qrStartConfig.jvm().verbosegc());
+ assertEquals("-XX:+UseG1GC -XX:MaxTenuringThreshold=15", qrStartConfig.jvm().gcopts());
+ assertEquals(512, qrStartConfig.jvm().stacksize());
+ assertEquals(0, qrStartConfig.jvm().directMemorySizeCache());
+ assertEquals(75, qrStartConfig.jvm().baseMaxDirectMemorySize());
+ }
+
@Test
- public void verbose_gc_logging_is_disabled() {
- VespaModel model = getModel(servicesWithAdminOnly(), self_hosted);
- QrStartConfig config = getQrStartConfig(model);
- assertFalse(config.jvm().verbosegc());
+ public void metrics_proxy_has_expected_qr_start_options() {
+ metrics_proxy_has_expected_qr_start_options(self_hosted);
+ metrics_proxy_has_expected_qr_start_options(hosted);
}
@Test
diff --git a/config-model/src/test/java/com/yahoo/vespa/model/admin/metricsproxy/MetricsProxyContainerTest.java b/config-model/src/test/java/com/yahoo/vespa/model/admin/metricsproxy/MetricsProxyContainerTest.java
index 97b520f9803..6802c47787a 100644
--- a/config-model/src/test/java/com/yahoo/vespa/model/admin/metricsproxy/MetricsProxyContainerTest.java
+++ b/config-model/src/test/java/com/yahoo/vespa/model/admin/metricsproxy/MetricsProxyContainerTest.java
@@ -14,6 +14,8 @@ import static com.yahoo.vespa.model.admin.metricsproxy.MetricsProxyModelTester.C
import static com.yahoo.vespa.model.admin.metricsproxy.MetricsProxyModelTester.TestMode.hosted;
import static com.yahoo.vespa.model.admin.metricsproxy.MetricsProxyModelTester.TestMode.self_hosted;
import static com.yahoo.vespa.model.admin.metricsproxy.MetricsProxyModelTester.getModel;
+import static com.yahoo.vespa.model.admin.metricsproxy.MetricsProxyModelTester.configId;
+
import static com.yahoo.vespa.model.admin.metricsproxy.MetricsProxyModelTester.getNodeDimensionsConfig;
import static com.yahoo.vespa.model.admin.metricsproxy.MetricsProxyModelTester.getRpcConnectorConfig;
import static com.yahoo.vespa.model.admin.metricsproxy.MetricsProxyModelTester.getVespaServicesConfig;
@@ -48,12 +50,15 @@ public class MetricsProxyContainerTest {
}
}
+ private void metrics_proxy_requires_less_memory_than_other_containers(MetricsProxyModelTester.TestMode mode) {
+ VespaModel model = getModel(servicesWithContent(), mode);
+ MetricsProxyContainer container = (MetricsProxyContainer)model.id2producer().get(configId(model, mode));
+ assertThat(container.getStartupCommand(), containsString("-Xms32m"));
+ }
@Test
public void metrics_proxy_requires_less_memory_than_other_containers() {
- VespaModel model = getModel(servicesWithContent(), self_hosted);
- MetricsProxyContainer container = (MetricsProxyContainer)model.id2producer().get(CONTAINER_CONFIG_ID);
- assertThat(container.getStartupCommand(), containsString("-Xms32m"));
- assertThat(container.getStartupCommand(), containsString("-Xmx512m"));
+ metrics_proxy_requires_less_memory_than_other_containers(self_hosted);
+ metrics_proxy_requires_less_memory_than_other_containers(hosted);
}
@Test
diff --git a/config-model/src/test/java/com/yahoo/vespa/model/admin/metricsproxy/MetricsProxyModelTester.java b/config-model/src/test/java/com/yahoo/vespa/model/admin/metricsproxy/MetricsProxyModelTester.java
index 5fe62e6bd1b..41021eb3a65 100644
--- a/config-model/src/test/java/com/yahoo/vespa/model/admin/metricsproxy/MetricsProxyModelTester.java
+++ b/config-model/src/test/java/com/yahoo/vespa/model/admin/metricsproxy/MetricsProxyModelTester.java
@@ -47,6 +47,12 @@ class MetricsProxyModelTester {
return tester.createModel(servicesXml, true);
}
+ static String configId(VespaModel model, MetricsProxyModelTester.TestMode mode) {
+ return (mode == hosted)
+ ? CLUSTER_CONFIG_ID + "/" + model.getHosts().iterator().next().getHostname()
+ : CONTAINER_CONFIG_ID;
+ }
+
static boolean checkMetric(ConsumersConfig.Consumer consumer, Metric metric) {
for (ConsumersConfig.Consumer.Metric m : consumer.metric()) {
if (metric.name.equals(m.name()) && metric.outputName.equals(m.outputname()))