aboutsummaryrefslogtreecommitdiffstats
path: root/node-repository
diff options
context:
space:
mode:
authorJon Bratseth <bratseth@vespa.ai>2023-05-24 14:17:17 +0200
committerJon Bratseth <bratseth@vespa.ai>2023-05-24 14:17:17 +0200
commit395cf8468b42307f1897cfe926d9c49e320c44a8 (patch)
tree34a7bbc28f49590d264098878a2922d013d9059b /node-repository
parent0ef937e4bf8cf497914d4240be52926499d205a6 (diff)
Scaling-duration cleanup
- Let ClusterModel define min scaling duration - Use min values as defaults
Diffstat (limited to 'node-repository')
-rw-r--r--node-repository/src/main/java/com/yahoo/vespa/hosted/provision/applications/Cluster.java17
-rw-r--r--node-repository/src/main/java/com/yahoo/vespa/hosted/provision/autoscale/ClusterModel.java5
-rw-r--r--node-repository/src/test/java/com/yahoo/vespa/hosted/provision/restapi/responses/application1.json2
3 files changed, 9 insertions, 15 deletions
diff --git a/node-repository/src/main/java/com/yahoo/vespa/hosted/provision/applications/Cluster.java b/node-repository/src/main/java/com/yahoo/vespa/hosted/provision/applications/Cluster.java
index 65e0bc558b2..1ca81df824b 100644
--- a/node-repository/src/main/java/com/yahoo/vespa/hosted/provision/applications/Cluster.java
+++ b/node-repository/src/main/java/com/yahoo/vespa/hosted/provision/applications/Cluster.java
@@ -8,6 +8,7 @@ import com.yahoo.config.provision.ClusterResources;
import com.yahoo.config.provision.ClusterSpec;
import com.yahoo.vespa.hosted.provision.autoscale.Autoscaler;
import com.yahoo.vespa.hosted.provision.autoscale.Autoscaling;
+import com.yahoo.vespa.hosted.provision.autoscale.ClusterModel;
import java.time.Duration;
import java.time.Instant;
@@ -203,20 +204,8 @@ public class Cluster {
completedEventCount++;
totalDuration = totalDuration.plus(event.duration().get());
}
- if (completedEventCount == 0) { // Use defaults
- if (clusterSpec.isStateful()) return Duration.ofHours(12);
- return Duration.ofMinutes(10);
- }
- else {
- Duration predictedDuration = totalDuration.dividedBy(completedEventCount);
-
- if ( clusterSpec.isStateful() ) // TODO: Remove when we have reliable completion for content clusters
- predictedDuration = minimum(Duration.ofHours(12), predictedDuration);
-
- predictedDuration = minimum(Duration.ofMinutes(5), predictedDuration);
-
- return predictedDuration;
- }
+ if (completedEventCount == 0) return ClusterModel.minScalingDuration(clusterSpec);
+ return minimum(ClusterModel.minScalingDuration(clusterSpec), totalDuration.dividedBy(completedEventCount));
}
private static Duration minimum(Duration smallestAllowed, Duration duration) {
diff --git a/node-repository/src/main/java/com/yahoo/vespa/hosted/provision/autoscale/ClusterModel.java b/node-repository/src/main/java/com/yahoo/vespa/hosted/provision/autoscale/ClusterModel.java
index bb599b69398..53bacfea298 100644
--- a/node-repository/src/main/java/com/yahoo/vespa/hosted/provision/autoscale/ClusterModel.java
+++ b/node-repository/src/main/java/com/yahoo/vespa/hosted/provision/autoscale/ClusterModel.java
@@ -153,6 +153,11 @@ public class ClusterModel {
return true;
}
+ public static Duration minScalingDuration(ClusterSpec clusterSpec) {
+ if (clusterSpec.isStateful()) return Duration.ofHours(12);
+ return Duration.ofMinutes(5);
+ }
+
/** Returns the predicted duration of a rescaling of this cluster */
public Duration scalingDuration() { return scalingDuration; }
diff --git a/node-repository/src/test/java/com/yahoo/vespa/hosted/provision/restapi/responses/application1.json b/node-repository/src/test/java/com/yahoo/vespa/hosted/provision/restapi/responses/application1.json
index 92e5425e84e..28bde7bd966 100644
--- a/node-repository/src/test/java/com/yahoo/vespa/hosted/provision/restapi/responses/application1.json
+++ b/node-repository/src/test/java/com/yahoo/vespa/hosted/provision/restapi/responses/application1.json
@@ -140,7 +140,7 @@
"at" : 123
}
],
- "scalingDuration": 600000
+ "scalingDuration": 300000
}
}
}