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/src/main/java/com/yahoo/vespa/hosted/provision/autoscale/AllocationOptimizer.java | |
parent | 8140f0441cfdf1c49d78b4c6d43c5f6d4e2aaa6b (diff) |
Simplify
Diffstat (limited to 'node-repository/src/main/java/com/yahoo/vespa/hosted/provision/autoscale/AllocationOptimizer.java')
-rw-r--r-- | node-repository/src/main/java/com/yahoo/vespa/hosted/provision/autoscale/AllocationOptimizer.java | 29 |
1 files changed, 6 insertions, 23 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 |