summaryrefslogtreecommitdiffstats
path: root/node-repository/src
diff options
context:
space:
mode:
authorHarald Musum <musum@verizonmedia.com>2020-10-29 14:24:37 +0100
committerHarald Musum <musum@verizonmedia.com>2020-10-29 14:24:37 +0100
commit31bd8f7ddf34bd305c33a42bf1956d651aff0251 (patch)
tree2b4e5b4795bdde91c7998a484481c14fd4d84637 /node-repository/src
parent55100169f422b5c051fc56b211eff940c9b7ba5b (diff)
Add method to calculate thin pool size
Diffstat (limited to 'node-repository/src')
-rw-r--r--node-repository/src/main/java/com/yahoo/vespa/hosted/provision/provisioning/EmptyProvisionServiceProvider.java5
-rw-r--r--node-repository/src/main/java/com/yahoo/vespa/hosted/provision/provisioning/HostResourcesCalculator.java7
-rw-r--r--node-repository/src/main/java/com/yahoo/vespa/hosted/provision/provisioning/NodeResourceLimits.java14
-rw-r--r--node-repository/src/test/java/com/yahoo/vespa/hosted/provision/autoscale/AutoscalingTest.java4
-rw-r--r--node-repository/src/test/java/com/yahoo/vespa/hosted/provision/autoscale/AutoscalingTester.java3
-rw-r--r--node-repository/src/test/java/com/yahoo/vespa/hosted/provision/provisioning/DockerProvisioningCompleteHostCalculatorTest.java4
-rw-r--r--node-repository/src/test/java/com/yahoo/vespa/hosted/provision/provisioning/ProvisioningTester.java3
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; }
+
}
}