From 85311b20020ba424428c90a0aa457645287e8434 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Tim=20R=C3=BChsen?= Date: Tue, 5 Dec 2023 07:03:59 +0100 Subject: [PATCH] [Profiling] Fix CO2 calculation with user-provided PUE and CO2PerKWH (#102884) Co-authored-by: Elastic Machine --- .../elasticsearch/xpack/profiling/CO2Calculator.java | 11 +++++------ 1 file changed, 5 insertions(+), 6 deletions(-) diff --git a/x-pack/plugin/profiling/src/main/java/org/elasticsearch/xpack/profiling/CO2Calculator.java b/x-pack/plugin/profiling/src/main/java/org/elasticsearch/xpack/profiling/CO2Calculator.java index 136821d491c59..0d92bf0a78d09 100644 --- a/x-pack/plugin/profiling/src/main/java/org/elasticsearch/xpack/profiling/CO2Calculator.java +++ b/x-pack/plugin/profiling/src/main/java/org/elasticsearch/xpack/profiling/CO2Calculator.java @@ -7,7 +7,6 @@ package org.elasticsearch.xpack.profiling; -import java.util.Collections; import java.util.Map; import static java.util.Map.entry; @@ -19,7 +18,6 @@ final class CO2Calculator { private static final double DEFAULT_KILOWATTS_PER_CORE_ARM64 = 2.8d / 1000.0d; // unit: watt / core private static final double DEFAULT_KILOWATTS_PER_CORE = DEFAULT_KILOWATTS_PER_CORE_X86; // unit: watt / core private static final double DEFAULT_DATACENTER_PUE = 1.7d; - private static final Provider DEFAULT_PROVIDER = new Provider(DEFAULT_DATACENTER_PUE, Collections.emptyMap()); private final InstanceTypeService instanceTypeService; private final Map hostMetadata; private final double samplingDurationInSeconds; @@ -76,12 +74,13 @@ private double getKiloWattsPerCore(HostMetadata host) { } private double getCO2TonsPerKWH(HostMetadata host) { - Provider provider = PROVIDERS.getOrDefault(host.instanceType.provider, DEFAULT_PROVIDER); - return provider.co2TonsPerKWH.getOrDefault(host.instanceType.region, customCO2PerKWH); + Provider provider = PROVIDERS.get(host.instanceType.provider); + return provider == null ? customCO2PerKWH : provider.co2TonsPerKWH.getOrDefault(host.instanceType.region, customCO2PerKWH); } - private static double getDatacenterPUE(HostMetadata host) { - return PROVIDERS.getOrDefault(host.instanceType.provider, DEFAULT_PROVIDER).pue; + private double getDatacenterPUE(HostMetadata host) { + Provider provider = PROVIDERS.get(host.instanceType.provider); + return provider == null ? customDatacenterPUE : provider.pue; } private record Provider(double pue, Map co2TonsPerKWH) {}