diff options
author | Harald Musum <musum@verizonmedia.com> | 2020-10-29 14:24:37 +0100 |
---|---|---|
committer | Harald Musum <musum@verizonmedia.com> | 2020-10-29 14:24:37 +0100 |
commit | 31bd8f7ddf34bd305c33a42bf1956d651aff0251 (patch) | |
tree | 2b4e5b4795bdde91c7998a484481c14fd4d84637 /node-repository/src | |
parent | 55100169f422b5c051fc56b211eff940c9b7ba5b (diff) |
Add method to calculate thin pool size
Diffstat (limited to 'node-repository/src')
7 files changed, 32 insertions, 8 deletions
diff --git a/node-repository/src/main/java/com/yahoo/vespa/hosted/provision/provisioning/EmptyProvisionServiceProvider.java b/node-repository/src/main/java/com/yahoo/vespa/hosted/provision/provisioning/EmptyProvisionServiceProvider.java index 07668189107..3a3a5d80b72 100644 --- a/node-repository/src/main/java/com/yahoo/vespa/hosted/provision/provisioning/EmptyProvisionServiceProvider.java +++ b/node-repository/src/main/java/com/yahoo/vespa/hosted/provision/provisioning/EmptyProvisionServiceProvider.java @@ -3,6 +3,8 @@ package com.yahoo.vespa.hosted.provision.provisioning; import com.yahoo.config.provision.Flavor; import com.yahoo.config.provision.NodeResources; +import com.yahoo.config.provision.NodeType; +import com.yahoo.config.provision.Zone; import com.yahoo.vespa.hosted.provision.NodeRepository; import com.yahoo.vespa.hosted.provision.Nodelike; import com.yahoo.vespa.hosted.provision.lb.LoadBalancerService; @@ -45,6 +47,9 @@ public class EmptyProvisionServiceProvider implements ProvisionServiceProvider { @Override public NodeResources realToRequest(NodeResources resources) { return resources; } + @Override + public long thinPoolSizeInBase2Gb(Zone zone, NodeType nodeType) { return 0; } + } } diff --git a/node-repository/src/main/java/com/yahoo/vespa/hosted/provision/provisioning/HostResourcesCalculator.java b/node-repository/src/main/java/com/yahoo/vespa/hosted/provision/provisioning/HostResourcesCalculator.java index 97752fd3cda..40ecaa8a7a3 100644 --- a/node-repository/src/main/java/com/yahoo/vespa/hosted/provision/provisioning/HostResourcesCalculator.java +++ b/node-repository/src/main/java/com/yahoo/vespa/hosted/provision/provisioning/HostResourcesCalculator.java @@ -3,6 +3,8 @@ package com.yahoo.vespa.hosted.provision.provisioning; import com.yahoo.config.provision.Flavor; import com.yahoo.config.provision.NodeResources; +import com.yahoo.config.provision.NodeType; +import com.yahoo.config.provision.Zone; import com.yahoo.vespa.hosted.provision.NodeRepository; import com.yahoo.vespa.hosted.provision.Nodelike; @@ -34,4 +36,9 @@ public interface HostResourcesCalculator { */ NodeResources realToRequest(NodeResources realResources); + /** + * Returns the needed thin pool size in base2 Gb. + */ + long thinPoolSizeInBase2Gb(Zone zone, NodeType nodeType); + } diff --git a/node-repository/src/main/java/com/yahoo/vespa/hosted/provision/provisioning/NodeResourceLimits.java b/node-repository/src/main/java/com/yahoo/vespa/hosted/provision/provisioning/NodeResourceLimits.java index 3d5cde35bf6..d2347fe0cb6 100644 --- a/node-repository/src/main/java/com/yahoo/vespa/hosted/provision/provisioning/NodeResourceLimits.java +++ b/node-repository/src/main/java/com/yahoo/vespa/hosted/provision/provisioning/NodeResourceLimits.java @@ -4,6 +4,7 @@ package com.yahoo.vespa.hosted.provision.provisioning; import com.yahoo.config.provision.ClusterSpec; import com.yahoo.config.provision.Environment; import com.yahoo.config.provision.NodeResources; +import com.yahoo.config.provision.NodeType; import com.yahoo.config.provision.SystemName; import com.yahoo.config.provision.Zone; import com.yahoo.vespa.hosted.provision.NodeRepository; @@ -75,15 +76,12 @@ public class NodeResourceLimits { return minRealDiskGb() + getThinPoolSize(requested.storageType()); } - // TODO: Calculate thin pool size instead of hardcoding + // Note: Assumes node type 'host' private long getThinPoolSize(NodeResources.StorageType storageType) { - if (storageType == NodeResources.StorageType.local && zone().getCloud().dynamicProvisioning()) { - if (zone().system() == SystemName.Public) - return 12; - else - return 24; - } - return 4; + if (storageType == NodeResources.StorageType.local && zone().getCloud().dynamicProvisioning()) + return nodeRepository.resourcesCalculator().thinPoolSizeInBase2Gb(zone(), NodeType.host); + else + return 4; } private double minRealVcpu() { return minAdvertisedVcpu(); } diff --git a/node-repository/src/test/java/com/yahoo/vespa/hosted/provision/autoscale/AutoscalingTest.java b/node-repository/src/test/java/com/yahoo/vespa/hosted/provision/autoscale/AutoscalingTest.java index df5a7bbf9b8..a8a0a853ee4 100644 --- a/node-repository/src/test/java/com/yahoo/vespa/hosted/provision/autoscale/AutoscalingTest.java +++ b/node-repository/src/test/java/com/yahoo/vespa/hosted/provision/autoscale/AutoscalingTest.java @@ -8,6 +8,7 @@ import com.yahoo.config.provision.ClusterSpec; import com.yahoo.config.provision.Environment; import com.yahoo.config.provision.Flavor; import com.yahoo.config.provision.NodeResources; +import com.yahoo.config.provision.NodeType; import com.yahoo.config.provision.RegionName; import com.yahoo.config.provision.SystemName; import com.yahoo.config.provision.Zone; @@ -391,6 +392,9 @@ public class AutoscalingTest { return resources.withMemoryGb(resources.memoryGb() + memoryTaxGb); } + @Override + public long thinPoolSizeInBase2Gb(Zone zone, NodeType nodeType) { return 0; } + } } diff --git a/node-repository/src/test/java/com/yahoo/vespa/hosted/provision/autoscale/AutoscalingTester.java b/node-repository/src/test/java/com/yahoo/vespa/hosted/provision/autoscale/AutoscalingTester.java index 03c42bf20ff..717fcc85f82 100644 --- a/node-repository/src/test/java/com/yahoo/vespa/hosted/provision/autoscale/AutoscalingTester.java +++ b/node-repository/src/test/java/com/yahoo/vespa/hosted/provision/autoscale/AutoscalingTester.java @@ -265,6 +265,9 @@ class AutoscalingTester { return resources.withMemoryGb(resources.memoryGb() + 3); } + @Override + public long thinPoolSizeInBase2Gb(Zone zone, NodeType nodeType) { return 0; } + } private class MockHostProvisioner implements HostProvisioner { diff --git a/node-repository/src/test/java/com/yahoo/vespa/hosted/provision/provisioning/DockerProvisioningCompleteHostCalculatorTest.java b/node-repository/src/test/java/com/yahoo/vespa/hosted/provision/provisioning/DockerProvisioningCompleteHostCalculatorTest.java index fcf61cad39c..e5c518d1efd 100644 --- a/node-repository/src/test/java/com/yahoo/vespa/hosted/provision/provisioning/DockerProvisioningCompleteHostCalculatorTest.java +++ b/node-repository/src/test/java/com/yahoo/vespa/hosted/provision/provisioning/DockerProvisioningCompleteHostCalculatorTest.java @@ -8,6 +8,7 @@ import com.yahoo.config.provision.ClusterSpec; import com.yahoo.config.provision.Environment; import com.yahoo.config.provision.Flavor; import com.yahoo.config.provision.NodeResources; +import com.yahoo.config.provision.NodeType; import com.yahoo.config.provision.RegionName; import com.yahoo.config.provision.Zone; import com.yahoo.vespa.hosted.provision.NodeRepository; @@ -122,6 +123,9 @@ public class DockerProvisioningCompleteHostCalculatorTest { .withDiskGb(realResources.diskGb() + diskOverhead); } + @Override + public long thinPoolSizeInBase2Gb(Zone zone, NodeType nodeType) { return 0; } + /** * Returns the memory overhead resulting if the given advertised resources are placed on the given node * diff --git a/node-repository/src/test/java/com/yahoo/vespa/hosted/provision/provisioning/ProvisioningTester.java b/node-repository/src/test/java/com/yahoo/vespa/hosted/provision/provisioning/ProvisioningTester.java index e28ed6fae1c..a0aa594bd2f 100644 --- a/node-repository/src/test/java/com/yahoo/vespa/hosted/provision/provisioning/ProvisioningTester.java +++ b/node-repository/src/test/java/com/yahoo/vespa/hosted/provision/provisioning/ProvisioningTester.java @@ -747,6 +747,9 @@ public class ProvisioningTester { .withDiskGb(resources.diskGb() + ( resources.storageType() == local ? localDiskTax : 0) ); } + @Override + public long thinPoolSizeInBase2Gb(Zone zone, NodeType nodeType) { return 0; } + } } |