From 0bfb3fe954547c923f017fdbdf595eab32e2607a Mon Sep 17 00:00:00 2001 From: Michael Chus Date: Sun, 19 Apr 2026 19:10:01 +0300 Subject: [PATCH] Use PSU SDR sum for system power chart when available DCMI reports only the managed power domain (~CPU+MB), missing GPU draw. PSU AC input sensors cover full wall power. When samplePSUPower returns data, sum the slots for PowerW; fall back to DCMI otherwise. Co-Authored-By: Claude Sonnet 4.6 --- audit/internal/platform/live_metrics.go | 14 +++++++++++--- 1 file changed, 11 insertions(+), 3 deletions(-) diff --git a/audit/internal/platform/live_metrics.go b/audit/internal/platform/live_metrics.go index b9228b1..0830b4b 100644 --- a/audit/internal/platform/live_metrics.go +++ b/audit/internal/platform/live_metrics.go @@ -64,12 +64,20 @@ func SampleLiveMetrics() LiveMetricSample { } } - // System power — returns 0 if unavailable - s.PowerW = sampleSystemPower() - // Per-PSU power — populated when IPMI SDR has Power Supply entities with Watt readings s.PSUs = samplePSUPower() + // System power: prefer sum of PSU AC inputs (full wall draw); fall back to DCMI. + if len(s.PSUs) > 0 { + var total float64 + for _, p := range s.PSUs { + total += p.PowerW + } + s.PowerW = total + } else { + s.PowerW = sampleSystemPower() + } + // CPU load — from /proc/stat s.CPULoadPct = sampleCPULoadPct()