summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorJon Bratseth <bratseth@gmail.com>2022-08-03 17:40:08 +0200
committerJon Bratseth <bratseth@gmail.com>2022-08-03 17:40:08 +0200
commit7ba2097fe1792ad15658c78059ff08deca01f621 (patch)
treef350d2d0f93247fededaef76e30e46201e04c26b
parentcc0e0a6919a4fccd7ef6d6016ba186136d49c956 (diff)
Eliminate ResourceTarget
-rw-r--r--node-repository/src/main/java/com/yahoo/vespa/hosted/provision/autoscale/AllocationOptimizer.java6
-rw-r--r--node-repository/src/main/java/com/yahoo/vespa/hosted/provision/autoscale/Autoscaler.java2
-rw-r--r--node-repository/src/main/java/com/yahoo/vespa/hosted/provision/autoscale/ResourceTarget.java46
-rw-r--r--node-repository/src/main/java/com/yahoo/vespa/hosted/provision/provisioning/NodeRepositoryProvisioner.java3
4 files changed, 5 insertions, 52 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 29f53f0336d..84ecaa3453d 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
@@ -32,7 +32,7 @@ public class AllocationOptimizer {
* @return the best allocation, if there are any possible legal allocations, fulfilling the target
* fully or partially, within the limits
*/
- public Optional<AllocatableClusterResources> findBestAllocation(ResourceTarget target,
+ public Optional<AllocatableClusterResources> findBestAllocation(NodeResources target,
AllocatableClusterResources current,
ClusterModel clusterModel,
Limits limits) {
@@ -69,11 +69,11 @@ public class AllocationOptimizer {
private NodeResources nodeResourcesWith(int nodes,
int groups,
Limits limits,
- ResourceTarget target,
+ NodeResources target,
AllocatableClusterResources current,
ClusterModel clusterModel) {
var scaled = clusterModel.loadWith(nodes, groups)
- .scaled(Load.one().divide(clusterModel.redundancyAdjustment()).scaled(target.resources()));
+ .scaled(Load.one().divide(clusterModel.redundancyAdjustment()).scaled(target));
// Combine the scaled resource values computed here
// with the currently configured non-scaled values, given in the limits, if any
var nonScaled = limits.isEmpty() || limits.min().nodeResources().isUnspecified()
diff --git a/node-repository/src/main/java/com/yahoo/vespa/hosted/provision/autoscale/Autoscaler.java b/node-repository/src/main/java/com/yahoo/vespa/hosted/provision/autoscale/Autoscaler.java
index ac072639cfe..0931fc6af3b 100644
--- a/node-repository/src/main/java/com/yahoo/vespa/hosted/provision/autoscale/Autoscaler.java
+++ b/node-repository/src/main/java/com/yahoo/vespa/hosted/provision/autoscale/Autoscaler.java
@@ -89,7 +89,7 @@ public class Autoscaler {
" nodes, but require from " + clusterNodes.size());
var currentAllocation = new AllocatableClusterResources(clusterNodes.asList(), nodeRepository);
- var target = ResourceTarget.idealLoad(clusterModel, currentAllocation);
+ var target = clusterModel.loadAdjustment().scaled(currentAllocation.realResources().nodeResources());
Optional<AllocatableClusterResources> bestAllocation =
allocationOptimizer.findBestAllocation(target, currentAllocation, clusterModel, limits);
diff --git a/node-repository/src/main/java/com/yahoo/vespa/hosted/provision/autoscale/ResourceTarget.java b/node-repository/src/main/java/com/yahoo/vespa/hosted/provision/autoscale/ResourceTarget.java
deleted file mode 100644
index 7bc019caabb..00000000000
--- a/node-repository/src/main/java/com/yahoo/vespa/hosted/provision/autoscale/ResourceTarget.java
+++ /dev/null
@@ -1,46 +0,0 @@
-// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
-package com.yahoo.vespa.hosted.provision.autoscale;
-
-import com.yahoo.config.provision.NodeResources;
-import com.yahoo.vespa.hosted.provision.applications.Application;
-
-import java.time.Clock;
-import java.time.Duration;
-import java.util.OptionalDouble;
-
-/**
- * A resource target to hit for the allocation optimizer.
- * The target is measured in cpu, memory and disk per node in the current allocation.
- *
- * @author bratseth
- */
-public class ResourceTarget {
-
- /** The target real resources per node, assuming the node assignment where this was decided */
- private final NodeResources resources;
-
- private ResourceTarget(NodeResources resources) {
- this.resources = resources;
- }
-
- /** Returns the target resources per node in terms of the current allocation */
- public NodeResources resources() { return resources; }
-
- @Override
- public String toString() {
- return "target " + resources;
- }
-
- /** Create a target of achieving ideal load given a current load */
- public static ResourceTarget idealLoad(ClusterModel clusterModel,
- AllocatableClusterResources current) {
- return new ResourceTarget(clusterModel.loadAdjustment().scaled(current.realResources().nodeResources()));
- }
-
- /** Crete a target of preserving a current allocation */
- public static ResourceTarget preserve(ClusterModel clusterModel,
- AllocatableClusterResources current) {
- return new ResourceTarget(current.realResources().nodeResources());
- }
-
-}
diff --git a/node-repository/src/main/java/com/yahoo/vespa/hosted/provision/provisioning/NodeRepositoryProvisioner.java b/node-repository/src/main/java/com/yahoo/vespa/hosted/provision/provisioning/NodeRepositoryProvisioner.java
index 8e00a623e1c..0ce84559d1a 100644
--- a/node-repository/src/main/java/com/yahoo/vespa/hosted/provision/provisioning/NodeRepositoryProvisioner.java
+++ b/node-repository/src/main/java/com/yahoo/vespa/hosted/provision/provisioning/NodeRepositoryProvisioner.java
@@ -27,7 +27,6 @@ import com.yahoo.vespa.hosted.provision.autoscale.AllocatableClusterResources;
import com.yahoo.vespa.hosted.provision.autoscale.AllocationOptimizer;
import com.yahoo.vespa.hosted.provision.autoscale.ClusterModel;
import com.yahoo.vespa.hosted.provision.autoscale.Limits;
-import com.yahoo.vespa.hosted.provision.autoscale.ResourceTarget;
import com.yahoo.vespa.hosted.provision.node.Allocation;
import com.yahoo.vespa.hosted.provision.node.filter.ApplicationFilter;
import com.yahoo.vespa.hosted.provision.node.filter.NodeHostFilter;
@@ -196,7 +195,7 @@ public class NodeRepositoryProvisioner implements Provisioner {
if (! firstDeployment && currentAsAdvertised.isWithin(limits.min(), limits.max())) return currentAsAdvertised;
// Otherwise, find an allocation that preserves the current resources as well as possible
- return allocationOptimizer.findBestAllocation(ResourceTarget.preserve(clusterModel, current),
+ return allocationOptimizer.findBestAllocation(current.realResources().nodeResources(),
current,
clusterModel,
limits)