aboutsummaryrefslogtreecommitdiffstats
path: root/controller-server/src/main/java/com/yahoo/vespa/hosted/controller/maintenance/ResourceMeterMaintainer.java
diff options
context:
space:
mode:
authorOla Aunrønning <olaa@verizonmedia.com>2022-03-23 14:30:29 +0100
committerOla Aunrønning <olaa@verizonmedia.com>2022-03-23 14:30:29 +0100
commitf31bdad79851056a49ed873353fde73c84f92c61 (patch)
tree0916af15ff94e6264b76cf768096215a10eb96a5 /controller-server/src/main/java/com/yahoo/vespa/hosted/controller/maintenance/ResourceMeterMaintainer.java
parent54329a8946debe301d2036397bc4a9d47764555f (diff)
Include architecture in metering. Remove unused metering API
Diffstat (limited to 'controller-server/src/main/java/com/yahoo/vespa/hosted/controller/maintenance/ResourceMeterMaintainer.java')
-rw-r--r--controller-server/src/main/java/com/yahoo/vespa/hosted/controller/maintenance/ResourceMeterMaintainer.java32
1 files changed, 24 insertions, 8 deletions
diff --git a/controller-server/src/main/java/com/yahoo/vespa/hosted/controller/maintenance/ResourceMeterMaintainer.java b/controller-server/src/main/java/com/yahoo/vespa/hosted/controller/maintenance/ResourceMeterMaintainer.java
index acaf35133d7..81001b5371b 100644
--- a/controller-server/src/main/java/com/yahoo/vespa/hosted/controller/maintenance/ResourceMeterMaintainer.java
+++ b/controller-server/src/main/java/com/yahoo/vespa/hosted/controller/maintenance/ResourceMeterMaintainer.java
@@ -150,14 +150,21 @@ public class ResourceMeterMaintainer extends ControllerMaintainer {
.filter(this::unlessNodeOwnerIsSystemApplication)
.filter(this::isNodeStateMeterable)
.filter(this::isClusterTypeMeterable)
+ // Grouping by ApplicationId -> Architecture -> ResourceSnapshot
.collect(Collectors.groupingBy(node ->
node.owner().get(),
- Collectors.collectingAndThen(Collectors.toList(),
- nodeList -> ResourceSnapshot.from(
- nodeList,
- clock.instant(),
- zoneId))
- )).values();
+ Collectors.collectingAndThen(Collectors.groupingBy(node -> node.resources().architecture()),
+ nodeList -> nodeList.entrySet()
+ .stream()
+ .collect(Collectors.toMap(
+ Map.Entry::getKey,
+ entry -> ResourceSnapshot.from(entry.getValue(), clock.instant(), zoneId))
+ ))
+ ))
+ .values()
+ .stream()
+ .flatMap(list -> list.values().stream())
+ .collect(Collectors.toList());
}
private boolean unlessNodeOwnerIsSystemApplication(Node node) {
@@ -182,7 +189,7 @@ public class ResourceMeterMaintainer extends ControllerMaintainer {
public static double cost(ClusterResources clusterResources, SystemName systemName) {
NodeResources nr = clusterResources.nodeResources();
- return cost(new ResourceAllocation(nr.vcpu(), nr.memoryGb(), nr.diskGb()).multiply(clusterResources.nodes()), systemName);
+ return cost(new ResourceAllocation(nr.vcpu(), nr.memoryGb(), nr.diskGb(), nr.architecture()).multiply(clusterResources.nodes()), systemName);
}
private static double cost(ResourceAllocation allocation, SystemName systemName) {
@@ -201,7 +208,7 @@ public class ResourceMeterMaintainer extends ControllerMaintainer {
metric.createContext(Collections.emptyMap()));
resourceSnapshots.forEach(snapshot -> {
- var context = getMetricContext(snapshot.getApplicationId(), snapshot.getZoneId());
+ var context = getMetricContext(snapshot);
metric.set("metering.vcpu", snapshot.getCpuCores(), context);
metric.set("metering.memoryGB", snapshot.getMemoryGb(), context);
metric.set("metering.diskGB", snapshot.getDiskGb(), context);
@@ -222,4 +229,13 @@ public class ResourceMeterMaintainer extends ControllerMaintainer {
"zoneId", zoneId.value()
));
}
+
+ private Metric.Context getMetricContext(ResourceSnapshot snapshot) {
+ return metric.createContext(Map.of(
+ "tenant", snapshot.getApplicationId().tenant().value(),
+ "applicationId", snapshot.getApplicationId().toFullString(),
+ "zoneId", snapshot.getZoneId().value(),
+ "architecture", snapshot.getArchitecture()
+ ));
+ }
}