diff options
author | Ola Aunrønning <olaa@verizonmedia.com> | 2022-03-23 14:30:29 +0100 |
---|---|---|
committer | Ola Aunrønning <olaa@verizonmedia.com> | 2022-03-23 14:30:29 +0100 |
commit | f31bdad79851056a49ed873353fde73c84f92c61 (patch) | |
tree | 0916af15ff94e6264b76cf768096215a10eb96a5 /controller-server/src/main/java/com/yahoo/vespa/hosted/controller/maintenance/ResourceMeterMaintainer.java | |
parent | 54329a8946debe301d2036397bc4a9d47764555f (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.java | 32 |
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() + )); + } } |