From 12aedf51bc7ba1a52c7a10446aacf33daa5aaccf Mon Sep 17 00:00:00 2001 From: Chris Laprun Date: Mon, 18 Dec 2023 18:48:46 +0100 Subject: [PATCH 1/2] fix: correctly report GPU --- .../macos/powermetrics/MacOSPowermetricsSensor.java | 7 ++++++- .../macos/powermetrics/MacOSPowermetricsSensorTest.java | 4 ++++ 2 files changed, 10 insertions(+), 1 deletion(-) 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..e9662f65 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,7 +199,12 @@ 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; 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]); } } From 3b5e7b725aaab05ded40e7d5aecd2730b0285249 Mon Sep 17 00:00:00 2001 From: Chris Laprun Date: Mon, 18 Dec 2023 18:52:20 +0100 Subject: [PATCH 2/2] fix: do not set measure for each component --- .../sensors/macos/powermetrics/MacOSPowermetricsSensor.java | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) 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 e9662f65..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 @@ -209,9 +209,9 @@ Map extractPowerMeasure(InputStream powerMeasureInput) } else { measure[index] = value; } - - results.put(pid, measure); }); + + results.put(pid, measure); }); return results; } catch (Exception exception) {