summaryrefslogtreecommitdiffstats
path: root/node-repository
diff options
context:
space:
mode:
authorJon Bratseth <bratseth@gmail.com>2022-08-03 20:19:20 +0200
committerJon Bratseth <bratseth@gmail.com>2022-08-03 20:20:13 +0200
commitbf103a2299acd66b399cd85c8acc2ac86efa6b98 (patch)
tree945194b329886d2b3f9abc6c393a31e10c41ea7b /node-repository
parent8844e681bc04385bde449db144e3306529460265 (diff)
Use consistent sampling intervals
Diffstat (limited to 'node-repository')
-rw-r--r--node-repository/src/main/java/com/yahoo/vespa/hosted/provision/autoscale/ClusterModel.java9
-rw-r--r--node-repository/src/test/java/com/yahoo/vespa/hosted/provision/autoscale/AutoscalingTest.java6
-rw-r--r--node-repository/src/test/java/com/yahoo/vespa/hosted/provision/autoscale/Loader.java23
3 files changed, 19 insertions, 19 deletions
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 ae18e7ffb91..6fe065bf48d 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
@@ -94,14 +94,17 @@ public class ClusterModel {
/** Returns the relative load adjustment that should be made to this cluster given available measurements. */
public Load loadAdjustment() {
if (nodeTimeseries().measurementsPerNode() == 0) return Load.one(); // No info, no change
- /*
+
// Should we scale up?
+ /*
Load relativePeak = nodeTimeseries().peakLoad().divide(idealLoad());
+ System.out.println("Relative peak " + relativePeak);
if (relativePeak.any(v -> v > 1))
return relativePeak.max(Load.one()); // Don't downscale any dimension if we upscale
-
// Should we scale down?
- */
+ // TODO
+ */
+
return averageLoad().divide(idealLoad());
}
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 28f37546eb6..393baa63c88 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
@@ -78,10 +78,10 @@ public class AutoscalingTest {
/** Using too many resources for a short period is proof we should scale up regardless of the time that takes. */
@Test
- @Ignore // TODO
+ @Ignore
public void test_autoscaling_up_is_fast() {
var fixture = AutoscalingTester.fixture().build();
- fixture.loader().applyLoad(1.0, 1.0, 1.0, 1);
+ fixture.loader().applyLoad(1.0, 1.0, 1.0, 6);
fixture.tester().assertResources("Scaling up since resource usage is too high",
10, 1, 9.4, 8.5, 92.6,
fixture.autoscale());
@@ -559,7 +559,7 @@ public class AutoscalingTest {
fixture.tester.clock().advance(timeAdded.negated());
fixture.loader().addCpuMeasurements(0.4, 200);
fixture.tester().assertResources("Query only -> largest possible",
- 8, 1, 4.9, 5.7, 57.1,
+ 8, 1, 4.6, 5.7, 57.1,
fixture.autoscale());
fixture.tester().clock().advance(Duration.ofDays(2));
diff --git a/node-repository/src/test/java/com/yahoo/vespa/hosted/provision/autoscale/Loader.java b/node-repository/src/test/java/com/yahoo/vespa/hosted/provision/autoscale/Loader.java
index c0203f5f202..b7041553c25 100644
--- a/node-repository/src/test/java/com/yahoo/vespa/hosted/provision/autoscale/Loader.java
+++ b/node-repository/src/test/java/com/yahoo/vespa/hosted/provision/autoscale/Loader.java
@@ -19,6 +19,7 @@ import java.util.function.IntFunction;
public class Loader {
private final Fixture fixture;
+ private final Duration samplingInterval = Duration.ofSeconds(150L);
public Loader(Fixture fixture) {
this.fixture = fixture;
@@ -38,7 +39,7 @@ public class Loader {
float oneExtraNodeFactor = (float)(nodes.size() - 1.0) / (nodes.size());
Instant initialTime = fixture.tester().clock().instant();
for (int i = 0; i < count; i++) {
- fixture.tester().clock().advance(Duration.ofSeconds(150));
+ fixture.tester().clock().advance(samplingInterval);
for (Node node : nodes) {
Load load = new Load(value,
ClusterModel.idealMemoryLoad,
@@ -63,23 +64,21 @@ public class Loader {
Map.of(fixture.clusterId(), new ClusterMetricSnapshot(fixture.tester().clock().instant(),
queryRate.apply(i),
writeRate.apply(i))));
- fixture.tester().clock().advance(Duration.ofMinutes(5));
+ fixture.tester().clock().advance(samplingInterval);
}
return Duration.between(initialTime, fixture.tester().clock().instant());
}
public void applyCpuLoad(double cpuLoad, int measurements) {
- Duration samplingInterval = Duration.ofSeconds(150L); // in addCpuMeasurements
addCpuMeasurements((float)cpuLoad, measurements);
fixture.tester().clock().advance(samplingInterval.negated().multipliedBy(measurements));
- addQueryRateMeasurements(measurements, samplingInterval, t -> t == 0 ? 20.0 : 10.0); // Query traffic only
+ addQueryRateMeasurements(measurements, t -> t == 0 ? 20.0 : 10.0); // Query traffic only
}
public void applyMemLoad(double memLoad, int measurements) {
- Duration samplingInterval = Duration.ofSeconds(150L); // in addMemMeasurements
addMemMeasurements(memLoad, measurements);
fixture.tester().clock().advance(samplingInterval.negated().multipliedBy(measurements));
- addQueryRateMeasurements(measurements, samplingInterval, t -> t == 0 ? 20.0 : 10.0); // Query traffic only
+ addQueryRateMeasurements(measurements, t -> t == 0 ? 20.0 : 10.0); // Query traffic only
}
/**
@@ -93,7 +92,7 @@ public class Loader {
NodeList nodes = fixture.nodes();
float oneExtraNodeFactor = (float)(nodes.size() - 1.0) / (nodes.size());
for (int i = 0; i < count; i++) {
- fixture.tester().clock().advance(Duration.ofMinutes(1));
+ fixture.tester().clock().advance(samplingInterval);
for (Node node : nodes) {
Load load = new Load(0.2,
value,
@@ -117,7 +116,7 @@ public class Loader {
int count) {
Instant initialTime = fixture.tester().clock().instant();
for (int i = 0; i < count; i++) {
- fixture.tester().clock().advance(Duration.ofMinutes(1));
+ fixture.tester().clock().advance(samplingInterval);
for (Node node : fixture.nodes()) {
fixture.tester().nodeMetricsDb().addNodeMetrics(List.of(new Pair<>(node.hostname(),
new NodeMetricSnapshot(fixture.tester().clock().instant(),
@@ -132,20 +131,18 @@ public class Loader {
}
public void applyLoad(double cpuLoad, double memoryLoad, double diskLoad, int measurements) {
- Duration samplingInterval = Duration.ofSeconds(150L); // in addCpuMeasurements
addMeasurements(cpuLoad, memoryLoad, diskLoad, measurements);
fixture.tester().clock().advance(samplingInterval.negated().multipliedBy(measurements));
- addQueryRateMeasurements(measurements, samplingInterval, t -> t == 0 ? 20.0 : 10.0); // Query traffic only
+ addQueryRateMeasurements(measurements, t -> t == 0 ? 20.0 : 10.0); // Query traffic only
}
public void applyLoad(double cpuLoad, double memoryLoad, double diskLoad, int generation, boolean inService, boolean stable, int measurements) {
- Duration samplingInterval = Duration.ofSeconds(150L); // in addCpuMeasurements
addMeasurements(cpuLoad, memoryLoad, diskLoad, generation, inService, stable, measurements);
fixture.tester().clock().advance(samplingInterval.negated().multipliedBy(measurements));
- addQueryRateMeasurements(measurements, samplingInterval, t -> t == 0 ? 20.0 : 10.0); // Query traffic only
+ addQueryRateMeasurements(measurements, t -> t == 0 ? 20.0 : 10.0); // Query traffic only
}
- public Duration addQueryRateMeasurements(int measurements, Duration samplingInterval, IntFunction<Double> queryRate) {
+ public Duration addQueryRateMeasurements(int measurements, IntFunction<Double> queryRate) {
Instant initialTime = fixture.tester().clock().instant();
for (int i = 0; i < measurements; i++) {
fixture.tester().nodeMetricsDb().addClusterMetrics(fixture.applicationId(),