diff options
author | Jon Bratseth <bratseth@gmail.com> | 2020-05-18 16:10:12 +0200 |
---|---|---|
committer | Jon Bratseth <bratseth@gmail.com> | 2020-05-18 16:10:12 +0200 |
commit | a7bd707706e7bfbc57bfbaa123e94b5bc2e456c7 (patch) | |
tree | e8b4601f6f277a4d4c512e90e9d39a4977bb011d /node-repository | |
parent | 8140f0441cfdf1c49d78b4c6d43c5f6d4e2aaa6b (diff) |
Simplify
Diffstat (limited to 'node-repository')
2 files changed, 7 insertions, 24 deletions
diff --git a/node-repository/src/main/java/com/yahoo/vespa/hosted/provision/autoscale/AllocationOptimizer.java b/node-repository/src/main/java/com/yahoo/vespa/hosted/provision/autoscale/AllocationOptimizer.java index d0969e13952..e3f3a98a560 100644 --- a/node-repository/src/main/java/com/yahoo/vespa/hosted/provision/autoscale/AllocationOptimizer.java +++ b/node-repository/src/main/java/com/yahoo/vespa/hosted/provision/autoscale/AllocationOptimizer.java @@ -15,7 +15,7 @@ import java.util.Optional; public class AllocationOptimizer { // The min and max nodes to consider when not using application supplied limits - private static final int minimumNodes = 3; // Since this number includes redundancy it cannot be lower than 2 + private static final int minimumNodes = 2; // Since this number includes redundancy it cannot be lower than 2 private static final int maximumNodes = 150; // When a query is issued on a node the cost is the sum of a fixed cost component and a cost component @@ -39,9 +39,12 @@ public class AllocationOptimizer { public Optional<AllocatableClusterResources> findBestAllocation(ResourceTarget target, AllocatableClusterResources current, Limits limits) { + if (limits.isEmpty()) + limits = new Limits(new ClusterResources(minimumNodes, 1, NodeResources.unspecified), + new ClusterResources(maximumNodes, maximumNodes, NodeResources.unspecified)); Optional<AllocatableClusterResources> bestAllocation = Optional.empty(); - for (int groups = minGroups(limits); groups <= maxGroups(limits); groups++) { - for (int nodes = minNodes(limits); nodes <= maxNodes(limits); nodes++) { + for (int groups = limits.min().groups(); groups <= limits.max().groups(); groups++) { + for (int nodes = limits.min().nodes(); nodes <= limits.max().nodes(); nodes++) { if (nodes % groups != 0) continue; int groupSize = nodes / groups; @@ -64,26 +67,6 @@ public class AllocationOptimizer { return bestAllocation; } - private int minNodes(Limits limits) { - if (limits.isEmpty()) return minimumNodes; - return limits.min().nodes(); - } - - private int maxNodes(Limits limits) { - if (limits.isEmpty()) return maximumNodes; - return limits.max().nodes(); - } - - private int minGroups(Limits limits) { - if (limits.isEmpty()) return 1; - return limits.min().groups(); - } - - private int maxGroups(Limits limits) { - if (limits.isEmpty()) return maximumNodes; - return limits.max().groups(); - } - /** * For the observed load this instance is initialized with, returns the resources needed per node to be at * ideal load given a target node count diff --git a/node-repository/src/main/java/com/yahoo/vespa/hosted/provision/autoscale/Limits.java b/node-repository/src/main/java/com/yahoo/vespa/hosted/provision/autoscale/Limits.java index 7ca60c4c86d..111ded22c0d 100644 --- a/node-repository/src/main/java/com/yahoo/vespa/hosted/provision/autoscale/Limits.java +++ b/node-repository/src/main/java/com/yahoo/vespa/hosted/provision/autoscale/Limits.java @@ -17,7 +17,7 @@ public class Limits { private final ClusterResources min, max; - private Limits(ClusterResources min, ClusterResources max) { + public Limits(ClusterResources min, ClusterResources max) { this.min = min; this.max = max; } |