diff --git a/server/src/main/java/io/github/metacosm/power/sensors/macos/powermetrics/MacOSPowermetricsSensor.java b/server/src/main/java/io/github/metacosm/power/sensors/macos/powermetrics/MacOSPowermetricsSensor.java index 51f2fa9e..01e9dc0a 100644 --- a/server/src/main/java/io/github/metacosm/power/sensors/macos/powermetrics/MacOSPowermetricsSensor.java +++ b/server/src/main/java/io/github/metacosm/power/sensors/macos/powermetrics/MacOSPowermetricsSensor.java @@ -199,14 +199,19 @@ Map extractPowerMeasure(InputStream powerMeasureInput) final var value = CPU_SHARE.equals(name) ? cpuShare : powerComponents.getOrDefault(name, 0); if (cm.isAttributed()) { - final var attributionFactor = hasGPU && GPU.equals(name) ? record.gpu / finalTotalSampledGPU : cpuShare; + final double attributionFactor; + if (GPU.equals(name)) { + attributionFactor = hasGPU ? record.gpu / finalTotalSampledGPU : 0.0; + } else { + attributionFactor = cpuShare; + } measure[index] = value * attributionFactor; } else { measure[index] = value; } - - results.put(pid, measure); }); + + results.put(pid, measure); }); return results; } catch (Exception exception) { diff --git a/server/src/test/java/io/github/metacosm/power/sensors/macos/powermetrics/MacOSPowermetricsSensorTest.java b/server/src/test/java/io/github/metacosm/power/sensors/macos/powermetrics/MacOSPowermetricsSensorTest.java index f9dd7fce..d9f1e9d7 100644 --- a/server/src/test/java/io/github/metacosm/power/sensors/macos/powermetrics/MacOSPowermetricsSensorTest.java +++ b/server/src/test/java/io/github/metacosm/power/sensors/macos/powermetrics/MacOSPowermetricsSensorTest.java @@ -68,5 +68,9 @@ void extractPowerMeasure() { final var cpuShareIndex = metadata.metadataFor(MacOSPowermetricsSensor.CPU_SHARE).index(); assertEquals(pid1CPUShare, measure.get(pid1)[cpuShareIndex]); assertEquals(pid2CPUShare, measure.get(pid2)[cpuShareIndex]); + // check that gpu should be 0 + final var gpuIndex = metadata.metadataFor(MacOSPowermetricsSensor.GPU).index(); + assertEquals(0.0, measure.get(pid1)[gpuIndex]); + assertEquals(0.0, measure.get(pid2)[gpuIndex]); } }