diff options
author | Jon Bratseth <bratseth@gmail.com> | 2021-03-24 10:45:25 +0100 |
---|---|---|
committer | Jon Bratseth <bratseth@gmail.com> | 2021-03-24 10:45:25 +0100 |
commit | 5952a324edca0939fbab3ea9939e16ef509fd40f (patch) | |
tree | 2bffc45b9a082f3662f8fc6f701aa0995530ca95 /node-repository/src/main/java/com/yahoo/vespa/hosted/provision/autoscale/ClusterNodesTimeseries.java | |
parent | 1a6256ca5af8353ba257e32535edb5670307df7a (diff) |
Refactor
Diffstat (limited to 'node-repository/src/main/java/com/yahoo/vespa/hosted/provision/autoscale/ClusterNodesTimeseries.java')
-rw-r--r-- | node-repository/src/main/java/com/yahoo/vespa/hosted/provision/autoscale/ClusterNodesTimeseries.java | 24 |
1 files changed, 10 insertions, 14 deletions
diff --git a/node-repository/src/main/java/com/yahoo/vespa/hosted/provision/autoscale/ClusterNodesTimeseries.java b/node-repository/src/main/java/com/yahoo/vespa/hosted/provision/autoscale/ClusterNodesTimeseries.java index c097abd8208..a7396f29d92 100644 --- a/node-repository/src/main/java/com/yahoo/vespa/hosted/provision/autoscale/ClusterNodesTimeseries.java +++ b/node-repository/src/main/java/com/yahoo/vespa/hosted/provision/autoscale/ClusterNodesTimeseries.java @@ -42,21 +42,17 @@ public class ClusterNodesTimeseries { /** Returns the number of nodes measured in this */ public int nodesMeasured() { return timeseries.size(); } - /** Returns the average load of this resource in this */ - public double averageLoad(Resource resource) { - int measurementCount = timeseries.stream().mapToInt(m -> m.size()).sum(); - if (measurementCount == 0) return 0; - double measurementSum = timeseries.stream().flatMap(m -> m.asList().stream()).mapToDouble(m -> value(resource, m)).sum(); - return measurementSum / measurementCount; - } - - private double value(Resource resource, NodeMetricSnapshot snapshot) { - switch (resource) { - case cpu: return snapshot.cpu(); - case memory: return snapshot.memory(); - case disk: return snapshot.disk(); - default: throw new IllegalArgumentException("Got an unknown resource " + resource); + /** Returns the average load in this */ + public Load averageLoad() { + Load total = Load.zero(); + int count = 0; + for (var nodeTimeseries : timeseries) { + for (var snapshot : nodeTimeseries.asList()) { + total = total.add(snapshot.load()); + count++; + } } + return total.divide(count); } private List<NodeTimeseries> filter(List<NodeTimeseries> timeseries, Predicate<NodeMetricSnapshot> filter) { |