diff options
author | Henning Baldersheim <balder@yahoo-inc.com> | 2019-10-14 16:08:13 +0200 |
---|---|---|
committer | GitHub <noreply@github.com> | 2019-10-14 16:08:13 +0200 |
commit | d374a9ae6c3ceeaa98a9e7eb782dbbce7528dcf8 (patch) | |
tree | 8f14e03f97f89557ae433520bed749f16d556e48 /config-model/src | |
parent | c256b9a348e68be914a2aa604fd25c05b857bfd4 (diff) | |
parent | 490d73510daa4b609c415f7306e81a3bb55f8499 (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/src')
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())) |