Skip to content

feat(device): add cpu.meters config and switch-based CPU meter selection#2468

Merged
vimalk78 merged 8 commits into
mainfrom
nm/cpu-power-meter-registry
May 12, 2026
Merged

feat(device): add cpu.meters config and switch-based CPU meter selection#2468
vimalk78 merged 8 commits into
mainfrom
nm/cpu-power-meter-registry

Conversation

@nikimanoledaki
Copy link
Copy Markdown
Collaborator

@nikimanoledaki nikimanoledaki commented May 3, 2026

Part of #2467.

Why

createCPUMeter in cmd/kepler/main.go hardcodes the RAPL → hwmon fallback chain. Operators on platforms where neither is the right source cannot reorder backend priority without forking. This PR makes the priority list config-driven without inventing new vocabulary (no registry, no factories, no init() side effects).

What

Changes

  • Promotes the unexported powerMeter interface to an exported PowerMeter (Name, Init). Shutdown is
    optional via service.Shutdowner.
  • Adds cfg.Cpu.Meters config (default ["rapl", "hwmon"]) — preserves prior fallback behaviour.
  • device.CreateCPUMeter walks the list, builds each backend via buildCPUMeter, runs Init(), returns the
    first that yields zones. Real failures aggregate via errors.Join; empty zones are a soft skip.
  • buildCPUMeter is a switch over backend names — adding a backend means one new case + one constructor.
  • cmd/kepler/main.go drops the old createCPUMeter / createHwmonMeter helpers (~70 lines).
  • Two legacy keys translate at startup with a deprecation warning:
    • dev.fake-cpu-meter.enabled: true → cpu.meters: ["fake"]
    • experimental.hwmon.forceEnabled: true → cpu.meters: ["hwmon"]
  • Sample configs (helm, k8s, hack, compose) and docs/user/configuration.md updated.

Behaviour change

None for systems running the default config. Preserves the same RAPL to hwmon fallback. Operators using the legacy keys see a deprecation warning but continue to get the same selection.

@github-actions github-actions Bot added the feat A new feature or enhancement label May 3, 2026
@github-actions
Copy link
Copy Markdown
Contributor

github-actions Bot commented May 3, 2026

⚠️ Config changes detected in this PR
Please make sure that the config changes are updated in the following places as part of this PR:

  • docs/user/configuration.md
  • compose/dev/kepler-dev/etc/kepler/config.yaml
  • compose/default/kepler/etc/kepler/config.yaml
  • hack/config.yaml
  • manifests/k8s/configmap.yaml
  • manifests/helm/kepler/values.yaml

@github-actions
Copy link
Copy Markdown
Contributor

github-actions Bot commented May 3, 2026

📊 Profiling reports are ready to be viewed

⚠️ Variability in pprof CPU and Memory profiles
When comparing pprof profiles of Kepler versions, expect variability in CPU and memory. Focus only on significant, consistent differences.

💻 CPU Comparison with base Kepler
File: kepler
Build ID: 8a79f1f2db140f897bfbee6c5bd92514e0a72019
Type: cpu
Time: 2026-05-03 18:41:35 UTC
Duration: 120s, Total samples = 3.98s ( 3.32%)
Active filters:
   show=github.com/sustainable-computing-io
Showing nodes accounting for -0.05s, 1.26% of 3.98s total
Dropped 1 node (cum <= 0.02s)
      flat  flat%   sum%        cum   cum%
         0     0%     0%     -0.26s  6.53%  github.com/sustainable-computing-io/kepler/internal/exporter/prometheus/collector.(*PowerCollector).Collect
         0     0%     0%      0.19s  4.77%  github.com/sustainable-computing-io/kepler/internal/exporter/prometheus/collector.(*gpuInfoCollector).Collect
         0     0%     0%     -0.11s  2.76%  github.com/sustainable-computing-io/kepler/internal/monitor.(*PowerMonitor).calculatePower
         0     0%     0%     -0.11s  2.76%  github.com/sustainable-computing-io/kepler/internal/monitor.(*PowerMonitor).refreshSnapshot
         0     0%     0%     -0.11s  2.76%  github.com/sustainable-computing-io/kepler/internal/monitor.(*PowerMonitor).synchronizedPowerRefresh
         0     0%     0%     -0.11s  2.76%  github.com/sustainable-computing-io/kepler/internal/monitor.(*PowerMonitor).synchronizedPowerRefresh.func1
         0     0%     0%     -0.10s  2.51%  github.com/sustainable-computing-io/kepler/internal/monitor.(*PowerMonitor).Snapshot
         0     0%     0%     -0.10s  2.51%  github.com/sustainable-computing-io/kepler/internal/monitor.(*PowerMonitor).ensureFreshData
    -0.09s  2.26%  2.26%     -0.09s  2.26%  github.com/sustainable-computing-io/kepler/internal/resource.(*procWrapper).CPUTime
         0     0%  2.26%     -0.09s  2.26%  github.com/sustainable-computing-io/kepler/internal/resource.populateProcessFields
     0.01s  0.25%  2.01%     -0.08s  2.01%  github.com/sustainable-computing-io/kepler/internal/resource.(*resourceInformer).updateProcessCache
    -0.03s  0.75%  2.76%     -0.05s  1.26%  github.com/sustainable-computing-io/kepler/internal/monitor.(*PowerMonitor).calculateProcessPower
         0     0%  2.76%     -0.05s  1.26%  github.com/sustainable-computing-io/kepler/internal/resource.(*resourceInformer).Refresh
     0.02s   0.5%  2.26%     -0.05s  1.26%  github.com/sustainable-computing-io/kepler/internal/resource.(*resourceInformer).refreshProcesses
     0.03s  0.75%  1.51%      0.03s  0.75%  github.com/sustainable-computing-io/kepler/internal/exporter/prometheus/collector.(*PowerCollector).collectProcessMetrics
    -0.02s   0.5%  2.01%     -0.02s   0.5%  github.com/sustainable-computing-io/kepler/internal/monitor.newProcess (inline)
         0     0%  2.01%     -0.01s  0.25%  github.com/sustainable-computing-io/kepler/internal/device.(*AggregatedZone).Energy
    -0.01s  0.25%  2.26%     -0.01s  0.25%  github.com/sustainable-computing-io/kepler/internal/device.sysfsRaplZone.Energy
         0     0%  2.26%     -0.01s  0.25%  github.com/sustainable-computing-io/kepler/internal/monitor.(*PowerMonitor).calculateNodePower
         0     0%  2.26%     -0.01s  0.25%  github.com/sustainable-computing-io/kepler/internal/monitor.(*PowerMonitor).scheduleNextCollection.func1
     0.01s  0.25%  2.01%      0.01s  0.25%  github.com/sustainable-computing-io/kepler/internal/resource.(*procFSReader).AllProcs
     0.01s  0.25%  1.76%      0.01s  0.25%  github.com/sustainable-computing-io/kepler/internal/resource.(*procFSReader).CPUUsageRatio
     0.01s  0.25%  1.51%      0.01s  0.25%  github.com/sustainable-computing-io/kepler/internal/resource.(*procWrapper).Cgroups
         0     0%  1.51%      0.01s  0.25%  github.com/sustainable-computing-io/kepler/internal/resource.(*resourceInformer).Refresh.func3
         0     0%  1.51%      0.01s  0.25%  github.com/sustainable-computing-io/kepler/internal/resource.(*resourceInformer).refreshNode
         0     0%  1.51%      0.01s  0.25%  github.com/sustainable-computing-io/kepler/internal/resource.computeTypeInfoFromProc.func2
         0     0%  1.51%      0.01s  0.25%  github.com/sustainable-computing-io/kepler/internal/resource.containerInfoFromProc
         0     0%  1.51%     -0.01s  0.25%  github.com/sustainable-computing-io/kepler/internal/resource.newProcess
     0.01s  0.25%  1.26%      0.01s  0.25%  github.com/sustainable-computing-io/kepler/internal/resource.vmInfoFromCmdLine
         0     0%  1.26%      0.01s  0.25%  github.com/sustainable-computing-io/kepler/internal/resource.vmInfoFromProc
💾 Memory Comparison with base Kepler (Inuse)
File: kepler
Build ID: 8a79f1f2db140f897bfbee6c5bd92514e0a72019
Type: inuse_space
Time: 2026-05-03 18:43:36 UTC
Duration: 120.02s, Total samples = 6819.88kB 
Active filters:
   show=github.com/sustainable-computing-io
Showing nodes accounting for 0.13kB, 0.0019% of 6819.88kB total
      flat  flat%   sum%        cum   cum%
         0     0%     0%  1024.34kB 15.02%  github.com/sustainable-computing-io/kepler/internal/exporter/prometheus/collector.(*PowerCollector).Collect
         0     0%     0% -1024.20kB 15.02%  github.com/sustainable-computing-io/kepler/internal/exporter/prometheus/collector.(*gpuInfoCollector).Collect
         0     0%     0%   512.14kB  7.51%  github.com/sustainable-computing-io/kepler/internal/monitor.(*PowerMonitor).Snapshot
         0     0%     0%   512.14kB  7.51%  github.com/sustainable-computing-io/kepler/internal/monitor.(*PowerMonitor).calculatePower
         0     0%     0%   512.14kB  7.51%  github.com/sustainable-computing-io/kepler/internal/monitor.(*PowerMonitor).calculateProcessPower
         0     0%     0%   512.14kB  7.51%  github.com/sustainable-computing-io/kepler/internal/monitor.(*PowerMonitor).ensureFreshData
         0     0%     0%   512.14kB  7.51%  github.com/sustainable-computing-io/kepler/internal/monitor.(*PowerMonitor).refreshSnapshot
         0     0%     0%   512.14kB  7.51%  github.com/sustainable-computing-io/kepler/internal/monitor.(*PowerMonitor).synchronizedPowerRefresh
         0     0%     0%   512.14kB  7.51%  github.com/sustainable-computing-io/kepler/internal/monitor.(*PowerMonitor).synchronizedPowerRefresh.func1
  512.14kB  7.51%  7.51%   512.14kB  7.51%  github.com/sustainable-computing-io/kepler/internal/monitor.newProcess (inline)
 -512.01kB  7.51% 0.0019%  -512.01kB  7.51%  github.com/sustainable-computing-io/kepler/internal/exporter/prometheus/collector.(*PowerCollector).collectProcessMetrics
💾 Memory Comparison with base Kepler (Alloc)
File: kepler
Build ID: 8a79f1f2db140f897bfbee6c5bd92514e0a72019
Type: alloc_space
Time: 2026-05-03 18:43:36 UTC
Duration: 120.02s, Total samples = 188036.75kB 
Active filters:
   show=github.com/sustainable-computing-io
Showing nodes accounting for -14965.34kB, 7.96% of 188036.75kB total
Dropped 3 nodes (cum <= 940.18kB)
      flat  flat%   sum%        cum   cum%
         0     0%     0% -13310.66kB  7.08%  github.com/sustainable-computing-io/kepler/internal/exporter/prometheus/collector.(*PowerCollector).Collect
-11781.25kB  6.27%  6.27% -11781.25kB  6.27%  github.com/sustainable-computing-io/kepler/internal/exporter/prometheus/collector.(*PowerCollector).collectProcessMetrics
         0     0%  6.27% -6695.81kB  3.56%  github.com/sustainable-computing-io/kepler/internal/resource.(*resourceInformer).Refresh
  521.05kB  0.28%  5.99% -6695.81kB  3.56%  github.com/sustainable-computing-io/kepler/internal/resource.(*resourceInformer).refreshProcesses
-5632.88kB  3.00%  8.98% -5632.88kB  3.00%  github.com/sustainable-computing-io/kepler/internal/resource.(*procWrapper).CPUTime
         0     0%  8.98% -5632.88kB  3.00%  github.com/sustainable-computing-io/kepler/internal/resource.(*resourceInformer).updateProcessCache
         0     0%  8.98% -5632.88kB  3.00%  github.com/sustainable-computing-io/kepler/internal/resource.populateProcessFields
         0     0%  8.98% -4135.17kB  2.20%  github.com/sustainable-computing-io/kepler/internal/monitor.(*PowerMonitor).calculatePower
         0     0%  8.98% -4135.17kB  2.20%  github.com/sustainable-computing-io/kepler/internal/monitor.(*PowerMonitor).refreshSnapshot
         0     0%  8.98% -4135.17kB  2.20%  github.com/sustainable-computing-io/kepler/internal/monitor.(*PowerMonitor).synchronizedPowerRefresh
         0     0%  8.98% -4135.17kB  2.20%  github.com/sustainable-computing-io/kepler/internal/monitor.(*PowerMonitor).synchronizedPowerRefresh.func1
         0     0%  8.98% -3118.21kB  1.66%  github.com/sustainable-computing-io/kepler/internal/monitor.(*PowerMonitor).scheduleNextCollection.func1
 -512.12kB  0.27%  9.26%  3072.75kB  1.63%  github.com/sustainable-computing-io/kepler/internal/monitor.(*PowerMonitor).calculateProcessPower
 3072.73kB  1.63%  7.62%  3072.73kB  1.63%  github.com/sustainable-computing-io/kepler/internal/monitor.newProcess (inline)
         0     0%  7.62%  2560.86kB  1.36%  github.com/sustainable-computing-io/kepler/internal/exporter/prometheus/collector.(*gpuInfoCollector).Collect
 2048.56kB  1.09%  6.53%  2048.56kB  1.09%  maps.Copy[go.shape.map[github.com/sustainable-computing-io/kepler/internal/device.EnergyZone]github.com/sustainable-computing-io/kepler/internal/monitor.Usage,go.shape.map[github.com/sustainable-computing-io/kepler/internal/device.EnergyZone]github.com/sustainable-computing-io/kepler/internal/monitor.Usage,go.shape.interface { Energy ; Index int; MaxEnergy github.com/sustainable-computing-io/kepler/internal/device.Energy; Name string; Path string; Power  },go.shape.struct { EnergyTotal github.com/sustainable-computing-io/kepler/internal/device.Energy; Power github.com/sustainable-computing-io/kepler/internal/device.Power }] (inline)
   -0.04kB 2.1e-05%  6.53%  2048.52kB  1.09%  github.com/sustainable-computing-io/kepler/internal/monitor.(*Process).Clone (inline)
-1583.98kB  0.84%  7.38% -1583.98kB  0.84%  github.com/sustainable-computing-io/kepler/internal/resource.(*procFSReader).AllProcs
         0     0%  7.38% -1549.92kB  0.82%  github.com/sustainable-computing-io/kepler/internal/resource.computeTypeInfoFromProc.func2
-1549.92kB  0.82%  8.20% -1549.92kB  0.82%  github.com/sustainable-computing-io/kepler/internal/resource.vmInfoFromCmdLine
         0     0%  8.20% -1549.92kB  0.82%  github.com/sustainable-computing-io/kepler/internal/resource.vmInfoFromProc
         0     0%  8.20%  1536.38kB  0.82%  github.com/sustainable-computing-io/kepler/internal/monitor.(*Snapshot).Clone
-1085.43kB  0.58%  8.78% -1085.43kB  0.58%  github.com/sustainable-computing-io/kepler/internal/exporter/prometheus/collector.(*realProcFS).CPUInfo
         0     0%  8.78% -1016.96kB  0.54%  github.com/sustainable-computing-io/kepler/internal/monitor.(*PowerMonitor).ensureFreshData
  512.01kB  0.27%  8.50%  -573.42kB   0.3%  github.com/sustainable-computing-io/kepler/internal/exporter/prometheus/collector.(*cpuInfoCollector).Collect
         0     0%  8.50%   519.42kB  0.28%  github.com/sustainable-computing-io/kepler/internal/monitor.(*PowerMonitor).Snapshot
     514kB  0.27%  8.23%      514kB  0.27%  github.com/sustainable-computing-io/kepler/internal/resource.(*procWrapper).Cgroups
         0     0%  8.23%      514kB  0.27%  github.com/sustainable-computing-io/kepler/internal/resource.computeTypeInfoFromProc.func1
         0     0%  8.23%      514kB  0.27%  github.com/sustainable-computing-io/kepler/internal/resource.containerInfoFromProc
 -512.12kB  0.27%  8.50%  -512.12kB  0.27%  github.com/sustainable-computing-io/kepler/internal/monitor.(*PowerMonitor).calculateNodePower
  512.03kB  0.27%  8.23%   512.03kB  0.27%  github.com/sustainable-computing-io/kepler/internal/exporter/prometheus/collector.(*PowerCollector).collectContainerMetrics
         0     0%  8.23%   512.01kB  0.27%  github.com/sustainable-computing-io/kepler/internal/exporter/prometheus/collector.(*PlatformCollector).Collect
         0     0%  8.23%   512.01kB  0.27%  github.com/sustainable-computing-io/kepler/internal/platform/redfish.(*PowerReader).ReadAll
  512.01kB  0.27%  7.96%   512.01kB  0.27%  github.com/sustainable-computing-io/kepler/internal/platform/redfish.(*PowerReader).readPowerSubsystem
         0     0%  7.96%   512.01kB  0.27%  github.com/sustainable-computing-io/kepler/internal/platform/redfish.(*Service).Power

⬇️ Download the Profiling artifacts from the Actions Summary page

📦 Artifact name: profile-artifacts-2468

🔧 Or use GitHub CLI to download artifacts:

gh run download 25287442059 -n profile-artifacts-2468

@nikimanoledaki nikimanoledaki force-pushed the nm/cpu-power-meter-registry branch from 80a3e01 to 9387d88 Compare May 3, 2026 18:50
@github-actions
Copy link
Copy Markdown
Contributor

github-actions Bot commented May 3, 2026

⚠️ Config changes detected in this PR
Please make sure that the config changes are updated in the following places as part of this PR:

  • docs/user/configuration.md
  • compose/dev/kepler-dev/etc/kepler/config.yaml
  • compose/default/kepler/etc/kepler/config.yaml
  • hack/config.yaml
  • manifests/k8s/configmap.yaml
  • manifests/helm/kepler/values.yaml

@nikimanoledaki nikimanoledaki force-pushed the nm/cpu-power-meter-registry branch from 9387d88 to 5dd5593 Compare May 3, 2026 18:54
@github-actions
Copy link
Copy Markdown
Contributor

github-actions Bot commented May 3, 2026

⚠️ Config changes detected in this PR
Please make sure that the config changes are updated in the following places as part of this PR:

  • docs/user/configuration.md
  • compose/dev/kepler-dev/etc/kepler/config.yaml
  • compose/default/kepler/etc/kepler/config.yaml
  • hack/config.yaml
  • manifests/k8s/configmap.yaml
  • manifests/helm/kepler/values.yaml

@codecov
Copy link
Copy Markdown

codecov Bot commented May 3, 2026

Codecov Report

❌ Patch coverage is 91.86047% with 7 lines in your changes missing coverage. Please review.
✅ Project coverage is 91.97%. Comparing base (bab38cb) to head (28e4079).

Files with missing lines Patch % Lines
internal/device/cpu_power_meter.go 93.33% 3 Missing and 1 partial ⚠️
internal/monitor/mock_utils.go 0.00% 3 Missing ⚠️
Additional details and impacted files
@@            Coverage Diff             @@
##             main    #2468      +/-   ##
==========================================
+ Coverage   91.89%   91.97%   +0.08%     
==========================================
  Files          55       56       +1     
  Lines        5859     5945      +86     
==========================================
+ Hits         5384     5468      +84     
  Misses        340      340              
- Partials      135      137       +2     

☔ View full report in Codecov by Sentry.
📢 Have feedback on the report? Share it here.

🚀 New features to boost your workflow:
  • ❄️ Test Analytics: Detect flaky tests, report on failures, and find test suite problems.

@github-actions
Copy link
Copy Markdown
Contributor

github-actions Bot commented May 3, 2026

📊 Profiling reports are ready to be viewed

⚠️ Variability in pprof CPU and Memory profiles
When comparing pprof profiles of Kepler versions, expect variability in CPU and memory. Focus only on significant, consistent differences.

💻 CPU Comparison with base Kepler
File: kepler
Build ID: a189fa36d33f567bcc5b9741dad54eac3bba7343
Type: cpu
Time: 2026-05-03 19:04:58 UTC
Duration: 120s, Total samples = 3.93s ( 3.27%)
Active filters:
   show=github.com/sustainable-computing-io
Showing nodes accounting for 0.03s, 0.76% of 3.93s total
Dropped 1 node (cum <= 0.02s)
      flat  flat%   sum%        cum   cum%
         0     0%     0%      0.12s  3.05%  github.com/sustainable-computing-io/kepler/internal/exporter/prometheus/collector.(*PowerCollector).Collect
         0     0%     0%      0.07s  1.78%  github.com/sustainable-computing-io/kepler/internal/resource.(*resourceInformer).Refresh
     0.01s  0.25%  0.25%      0.07s  1.78%  github.com/sustainable-computing-io/kepler/internal/resource.(*resourceInformer).refreshProcesses
         0     0%  0.25%     -0.06s  1.53%  github.com/sustainable-computing-io/kepler/internal/exporter/prometheus/collector.(*gpuInfoCollector).Collect
         0     0%  0.25%      0.06s  1.53%  github.com/sustainable-computing-io/kepler/internal/monitor.(*PowerMonitor).ensureFreshData
         0     0%  0.25%      0.05s  1.27%  github.com/sustainable-computing-io/kepler/internal/monitor.(*PowerMonitor).calculatePower
         0     0%  0.25%      0.05s  1.27%  github.com/sustainable-computing-io/kepler/internal/monitor.(*PowerMonitor).refreshSnapshot
         0     0%  0.25%      0.05s  1.27%  github.com/sustainable-computing-io/kepler/internal/monitor.(*PowerMonitor).synchronizedPowerRefresh
         0     0%  0.25%      0.05s  1.27%  github.com/sustainable-computing-io/kepler/internal/monitor.(*PowerMonitor).synchronizedPowerRefresh.func1
         0     0%  0.25%      0.04s  1.02%  github.com/sustainable-computing-io/kepler/internal/monitor.(*PowerMonitor).Snapshot
     0.04s  1.02%  1.27%      0.04s  1.02%  github.com/sustainable-computing-io/kepler/internal/resource.(*procFSReader).AllProcs
     0.02s  0.51%  1.78%      0.02s  0.51%  github.com/sustainable-computing-io/kepler/internal/exporter/prometheus/collector.(*PowerCollector).collectProcessMetrics
    -0.02s  0.51%  1.27%     -0.02s  0.51%  github.com/sustainable-computing-io/kepler/internal/monitor.(*PowerMonitor).calculateNodePower
    -0.01s  0.25%  1.02%     -0.02s  0.51%  github.com/sustainable-computing-io/kepler/internal/monitor.(*Process).Clone (inline)
         0     0%  1.02%     -0.02s  0.51%  github.com/sustainable-computing-io/kepler/internal/monitor.(*Snapshot).Clone
    -0.02s  0.51%  0.51%     -0.02s  0.51%  github.com/sustainable-computing-io/kepler/internal/resource.(*procFSReader).CPUUsageRatio
         0     0%  0.51%     -0.02s  0.51%  github.com/sustainable-computing-io/kepler/internal/resource.(*resourceInformer).Refresh.func3
         0     0%  0.51%     -0.02s  0.51%  github.com/sustainable-computing-io/kepler/internal/resource.(*resourceInformer).refreshNode
     0.01s  0.25%  0.76%      0.02s  0.51%  github.com/sustainable-computing-io/kepler/internal/resource.(*resourceInformer).updateProcessCache
         0     0%  0.76%     -0.01s  0.25%  github.com/sustainable-computing-io/kepler/internal/monitor.(*PowerMonitor).scheduleNextCollection.func1
     0.01s  0.25%  1.02%      0.01s  0.25%  github.com/sustainable-computing-io/kepler/internal/monitor.(*Process).StringID (inline)
     0.01s  0.25%  1.27%      0.01s  0.25%  github.com/sustainable-computing-io/kepler/internal/resource.(*procWrapper).CPUTime
         0     0%  1.27%     -0.01s  0.25%  github.com/sustainable-computing-io/kepler/internal/resource.computeTypeInfoFromProc.func2
         0     0%  1.27%     -0.01s  0.25%  github.com/sustainable-computing-io/kepler/internal/resource.newProcess
         0     0%  1.27%      0.01s  0.25%  github.com/sustainable-computing-io/kepler/internal/resource.populateProcessFields
    -0.01s  0.25%  1.02%     -0.01s  0.25%  github.com/sustainable-computing-io/kepler/internal/resource.vmInfoFromCmdLine
         0     0%  1.02%     -0.01s  0.25%  github.com/sustainable-computing-io/kepler/internal/resource.vmInfoFromProc
    -0.01s  0.25%  0.76%     -0.01s  0.25%  maps.Copy[go.shape.map[github.com/sustainable-computing-io/kepler/internal/device.EnergyZone]github.com/sustainable-computing-io/kepler/internal/monitor.Usage,go.shape.map[github.com/sustainable-computing-io/kepler/internal/device.EnergyZone]github.com/sustainable-computing-io/kepler/internal/monitor.Usage,go.shape.interface { Energy ; Index int; MaxEnergy github.com/sustainable-computing-io/kepler/internal/device.Energy; Name string; Path string; Power  },go.shape.struct { EnergyTotal github.com/sustainable-computing-io/kepler/internal/device.Energy; Power github.com/sustainable-computing-io/kepler/internal/device.Power }] (inline)
💾 Memory Comparison with base Kepler (Inuse)
File: kepler
Build ID: a189fa36d33f567bcc5b9741dad54eac3bba7343
Type: inuse_space
Time: 2026-05-03 19:06:58 UTC
Duration: 120.02s, Total samples = 9448.60kB 
Active filters:
   show=github.com/sustainable-computing-io
Showing nodes accounting for -0.13kB, 0.0014% of 9448.60kB total
      flat  flat%   sum%        cum   cum%
         0     0%     0% -1536.23kB 16.26%  github.com/sustainable-computing-io/kepler/internal/monitor.(*PowerMonitor).Snapshot
 1536.09kB 16.26% 16.26%  1536.09kB 16.26%  github.com/sustainable-computing-io/kepler/internal/exporter/prometheus/collector.(*PowerCollector).collectProcessMetrics
-1024.09kB 10.84%  5.42% -1024.09kB 10.84%  github.com/sustainable-computing-io/kepler/internal/monitor.(*Process).Clone (inline)
         0     0%  5.42% -1024.09kB 10.84%  github.com/sustainable-computing-io/kepler/internal/monitor.(*Snapshot).Clone
         0     0%  5.42%  -512.14kB  5.42%  github.com/sustainable-computing-io/kepler/internal/monitor.(*PowerMonitor).calculatePower
         0     0%  5.42%  -512.14kB  5.42%  github.com/sustainable-computing-io/kepler/internal/monitor.(*PowerMonitor).calculateProcessPower
         0     0%  5.42%  -512.14kB  5.42%  github.com/sustainable-computing-io/kepler/internal/monitor.(*PowerMonitor).ensureFreshData
         0     0%  5.42%  -512.14kB  5.42%  github.com/sustainable-computing-io/kepler/internal/monitor.(*PowerMonitor).refreshSnapshot
         0     0%  5.42%  -512.14kB  5.42%  github.com/sustainable-computing-io/kepler/internal/monitor.(*PowerMonitor).synchronizedPowerRefresh
         0     0%  5.42%  -512.14kB  5.42%  github.com/sustainable-computing-io/kepler/internal/monitor.(*PowerMonitor).synchronizedPowerRefresh.func1
 -512.14kB  5.42% 0.0014%  -512.14kB  5.42%  github.com/sustainable-computing-io/kepler/internal/monitor.newProcess (inline)
         0     0% 0.0014%    -0.13kB 0.0014%  github.com/sustainable-computing-io/kepler/internal/exporter/prometheus/collector.(*PowerCollector).Collect
💾 Memory Comparison with base Kepler (Alloc)
File: kepler
Build ID: a189fa36d33f567bcc5b9741dad54eac3bba7343
Type: alloc_space
Time: 2026-05-03 19:06:58 UTC
Duration: 120.02s, Total samples = 207.12MB 
Active filters:
   show=github.com/sustainable-computing-io
Showing nodes accounting for 12.86MB, 6.21% of 207.12MB total
Dropped 2 nodes (cum <= 1.04MB)
      flat  flat%   sum%        cum   cum%
         0     0%     0%     6.51MB  3.14%  github.com/sustainable-computing-io/kepler/internal/exporter/prometheus/collector.(*PowerCollector).Collect
       6MB  2.90%  2.90%        6MB  2.90%  github.com/sustainable-computing-io/kepler/internal/exporter/prometheus/collector.(*PowerCollector).collectProcessMetrics
         0     0%  2.90%     5.51MB  2.66%  github.com/sustainable-computing-io/kepler/internal/monitor.(*PowerMonitor).calculatePower
         0     0%  2.90%     5.51MB  2.66%  github.com/sustainable-computing-io/kepler/internal/monitor.(*PowerMonitor).refreshSnapshot
         0     0%  2.90%     5.51MB  2.66%  github.com/sustainable-computing-io/kepler/internal/monitor.(*PowerMonitor).synchronizedPowerRefresh
         0     0%  2.90%     5.51MB  2.66%  github.com/sustainable-computing-io/kepler/internal/monitor.(*PowerMonitor).synchronizedPowerRefresh.func1
         0     0%  2.90%     4.52MB  2.18%  github.com/sustainable-computing-io/kepler/internal/monitor.(*PowerMonitor).scheduleNextCollection.func1
       4MB  1.93%  4.83%        4MB  1.93%  github.com/sustainable-computing-io/kepler/internal/resource.(*procWrapper).CPUTime
         0     0%  4.83%     3.99MB  1.92%  github.com/sustainable-computing-io/kepler/internal/resource.(*resourceInformer).refreshProcesses
         0     0%  4.83%     3.50MB  1.69%  github.com/sustainable-computing-io/kepler/internal/resource.(*resourceInformer).updateProcessCache
         0     0%  4.83%     3.50MB  1.69%  github.com/sustainable-computing-io/kepler/internal/resource.populateProcessFields
   -0.50MB  0.24%  4.59%     3.48MB  1.68%  github.com/sustainable-computing-io/kepler/internal/resource.(*resourceInformer).Refresh
         0     0%  4.59%     2.29MB  1.11%  github.com/sustainable-computing-io/kepler/internal/exporter/prometheus/collector.(*cpuInfoCollector).Collect
    2.29MB  1.11%  5.69%     2.29MB  1.11%  github.com/sustainable-computing-io/kepler/internal/exporter/prometheus/collector.(*realProcFS).CPUInfo
    1.53MB  0.74%  6.43%     1.53MB  0.74%  github.com/sustainable-computing-io/kepler/internal/monitor.(*PowerMonitor).calculateProcessPower
         0     0%  6.43%     1.51MB  0.73%  github.com/sustainable-computing-io/kepler/internal/monitor.(*PowerMonitor).Snapshot
    1.50MB  0.72%  7.15%     1.50MB  0.72%  github.com/sustainable-computing-io/kepler/internal/resource.WrapProc (inline)
   -1.48MB  0.72%  6.44%    -1.48MB  0.72%  github.com/sustainable-computing-io/kepler/internal/resource.(*procFSReader).CPUUsageRatio
         0     0%  6.44%    -1.48MB  0.72%  github.com/sustainable-computing-io/kepler/internal/resource.(*resourceInformer).Refresh.func3
         0     0%  6.44%    -1.48MB  0.72%  github.com/sustainable-computing-io/kepler/internal/resource.(*resourceInformer).refreshNode
         0     0%  6.44%     1.02MB  0.49%  github.com/sustainable-computing-io/kepler/internal/resource.computeTypeInfoFromProc.func1
         0     0%  6.44%     1.02MB  0.49%  github.com/sustainable-computing-io/kepler/internal/resource.containerInfoFromProc
      -1MB  0.48%  5.95%       -1MB  0.48%  maps.Copy[go.shape.map[github.com/sustainable-computing-io/kepler/internal/device.EnergyZone]github.com/sustainable-computing-io/kepler/internal/monitor.Usage,go.shape.map[github.com/sustainable-computing-io/kepler/internal/device.EnergyZone]github.com/sustainable-computing-io/kepler/internal/monitor.Usage,go.shape.interface { Energy ; Index int; MaxEnergy github.com/sustainable-computing-io/kepler/internal/device.Energy; Name string; Path string; Power  },go.shape.struct { EnergyTotal github.com/sustainable-computing-io/kepler/internal/device.Energy; Power github.com/sustainable-computing-io/kepler/internal/device.Power }] (inline)
         0     0%  5.95%        1MB  0.48%  github.com/sustainable-computing-io/kepler/internal/exporter/prometheus/collector.(*gpuInfoCollector).Collect
         0     0%  5.95%     0.99MB  0.48%  github.com/sustainable-computing-io/kepler/internal/monitor.(*PowerMonitor).ensureFreshData
    0.52MB  0.25%  6.20%     0.52MB  0.25%  github.com/sustainable-computing-io/kepler/internal/resource.containerInfoFromCgroupPaths
    0.51MB  0.25%  6.45%     0.51MB  0.25%  github.com/sustainable-computing-io/kepler/internal/monitor.(*Snapshot).Clone
         0     0%  6.45%    -0.51MB  0.25%  github.com/sustainable-computing-io/kepler/internal/resource.computeTypeInfoFromProc.func2
         0     0%  6.45%    -0.51MB  0.25%  github.com/sustainable-computing-io/kepler/internal/resource.vmInfoFromProc
         0     0%  6.45%     0.50MB  0.24%  github.com/sustainable-computing-io/kepler/internal/exporter/prometheus/collector.(*PlatformCollector).Collect
    0.50MB  0.24%  6.69%     0.50MB  0.24%  github.com/sustainable-computing-io/kepler/internal/monitor.(*PowerMonitor).calculateNodePower
         0     0%  6.69%     0.50MB  0.24%  github.com/sustainable-computing-io/kepler/internal/platform/redfish.(*PowerReader).ReadAll
    0.50MB  0.24%  6.94%     0.50MB  0.24%  github.com/sustainable-computing-io/kepler/internal/platform/redfish.(*PowerReader).readPowerSubsystem
         0     0%  6.94%     0.50MB  0.24%  github.com/sustainable-computing-io/kepler/internal/platform/redfish.(*Service).Power
   -0.50MB  0.24%  6.70%    -0.50MB  0.24%  github.com/sustainable-computing-io/kepler/internal/monitor.newProcess (inline)
   -0.50MB  0.24%  6.46%    -0.50MB  0.24%  github.com/sustainable-computing-io/kepler/internal/resource.(*procWrapper).CmdLine
   -0.50MB  0.24%  6.21%    -0.50MB  0.24%  github.com/sustainable-computing-io/kepler/internal/resource.(*procWrapper).Comm
    0.50MB  0.24%  6.46%     0.50MB  0.24%  github.com/sustainable-computing-io/kepler/internal/monitor.(*Process).StringID (inline)
    0.50MB  0.24%  6.70%     0.50MB  0.24%  github.com/sustainable-computing-io/kepler/internal/resource.(*procWrapper).Cgroups
   -1.02MB  0.49%  6.21%     0.48MB  0.23%  github.com/sustainable-computing-io/kepler/internal/resource.(*procFSReader).AllProcs

⬇️ Download the Profiling artifacts from the Actions Summary page

📦 Artifact name: profile-artifacts-2468

🔧 Or use GitHub CLI to download artifacts:

gh run download 25287694043 -n profile-artifacts-2468

@nikimanoledaki nikimanoledaki force-pushed the nm/cpu-power-meter-registry branch from 5dd5593 to b0c6206 Compare May 3, 2026 19:10
@github-actions
Copy link
Copy Markdown
Contributor

github-actions Bot commented May 3, 2026

⚠️ Config changes detected in this PR
Please make sure that the config changes are updated in the following places as part of this PR:

  • docs/user/configuration.md
  • compose/dev/kepler-dev/etc/kepler/config.yaml
  • compose/default/kepler/etc/kepler/config.yaml
  • hack/config.yaml
  • manifests/k8s/configmap.yaml
  • manifests/helm/kepler/values.yaml

@github-actions
Copy link
Copy Markdown
Contributor

github-actions Bot commented May 3, 2026

📊 Profiling reports are ready to be viewed

⚠️ Variability in pprof CPU and Memory profiles
When comparing pprof profiles of Kepler versions, expect variability in CPU and memory. Focus only on significant, consistent differences.

💻 CPU Comparison with base Kepler
File: kepler
Build ID: 4ab9b82e1bb129a50206469617176c2a5ec84564
Type: cpu
Time: 2026-05-03 19:13:55 UTC
Duration: 120s, Total samples = 4.03s ( 3.36%)
Active filters:
   show=github.com/sustainable-computing-io
Showing nodes accounting for -0.04s, 0.99% of 4.03s total
Dropped 2 nodes (cum <= 0.02s)
      flat  flat%   sum%        cum   cum%
         0     0%     0%     -0.24s  5.96%  github.com/sustainable-computing-io/kepler/internal/exporter/prometheus/collector.(*gpuInfoCollector).Collect
         0     0%     0%      0.21s  5.21%  github.com/sustainable-computing-io/kepler/internal/exporter/prometheus/collector.(*PowerCollector).Collect
    -0.03s  0.74%  0.74%     -0.03s  0.74%  github.com/sustainable-computing-io/kepler/internal/resource.(*procWrapper).CPUTime
         0     0%  0.74%     -0.03s  0.74%  github.com/sustainable-computing-io/kepler/internal/resource.(*resourceInformer).updateProcessCache
         0     0%  0.74%     -0.03s  0.74%  github.com/sustainable-computing-io/kepler/internal/resource.populateProcessFields
         0     0%  0.74%     -0.02s   0.5%  github.com/sustainable-computing-io/kepler/internal/monitor.(*PowerMonitor).Snapshot
    -0.02s   0.5%  1.24%     -0.02s   0.5%  github.com/sustainable-computing-io/kepler/internal/monitor.newProcess (inline)
         0     0%  1.24%      0.02s   0.5%  github.com/sustainable-computing-io/kepler/internal/resource.(*procFSReader).AllProcs
     0.02s   0.5%  0.74%      0.02s   0.5%  github.com/sustainable-computing-io/kepler/internal/resource.WrapProc (inline)
         0     0%  0.74%      0.01s  0.25%  github.com/sustainable-computing-io/kepler/internal/device.(*AggregatedZone).Energy
    -0.01s  0.25%  0.99%     -0.01s  0.25%  github.com/sustainable-computing-io/kepler/internal/device.(*AggregatedZone).Name
     0.01s  0.25%  0.74%      0.01s  0.25%  github.com/sustainable-computing-io/kepler/internal/device.sysfsRaplZone.Energy
     0.01s  0.25%   0.5%      0.01s  0.25%  github.com/sustainable-computing-io/kepler/internal/exporter/prometheus/collector.(*PlatformCollector).Collect
    -0.01s  0.25%  0.74%     -0.01s  0.25%  github.com/sustainable-computing-io/kepler/internal/exporter/prometheus/collector.(*PowerCollector).collectContainerMetrics
    -0.01s  0.25%  0.99%     -0.01s  0.25%  github.com/sustainable-computing-io/kepler/internal/exporter/prometheus/collector.(*PowerCollector).collectNodeMetrics
     0.01s  0.25%  0.74%      0.01s  0.25%  github.com/sustainable-computing-io/kepler/internal/exporter/prometheus/collector.(*PowerCollector).collectProcessMetrics
    -0.01s  0.25%  0.99%     -0.01s  0.25%  github.com/sustainable-computing-io/kepler/internal/exporter/prometheus/collector.(*cpuInfoCollector).Collect
         0     0%  0.99%     -0.01s  0.25%  github.com/sustainable-computing-io/kepler/internal/monitor.(*PowerMonitor).calculatePower
     0.01s  0.25%  0.74%     -0.01s  0.25%  github.com/sustainable-computing-io/kepler/internal/monitor.(*PowerMonitor).calculateProcessPower
         0     0%  0.74%     -0.01s  0.25%  github.com/sustainable-computing-io/kepler/internal/monitor.(*PowerMonitor).ensureFreshData
         0     0%  0.74%      0.01s  0.25%  github.com/sustainable-computing-io/kepler/internal/monitor.(*PowerMonitor).scheduleNextCollection.func1
    -0.01s  0.25%  0.99%     -0.01s  0.25%  github.com/sustainable-computing-io/kepler/internal/monitor.(*Process).Clone (inline)
         0     0%  0.99%     -0.01s  0.25%  github.com/sustainable-computing-io/kepler/internal/monitor.(*Snapshot).Clone
     0.01s  0.25%  0.74%      0.01s  0.25%  github.com/sustainable-computing-io/kepler/internal/resource.(*procFSReader).CPUUsageRatio
    -0.01s  0.25%  0.99%     -0.01s  0.25%  github.com/sustainable-computing-io/kepler/internal/resource.(*procWrapper).Cgroups
         0     0%  0.99%      0.01s  0.25%  github.com/sustainable-computing-io/kepler/internal/resource.(*resourceInformer).Refresh.func3
         0     0%  0.99%      0.01s  0.25%  github.com/sustainable-computing-io/kepler/internal/resource.(*resourceInformer).refreshNode
         0     0%  0.99%     -0.01s  0.25%  github.com/sustainable-computing-io/kepler/internal/resource.computeTypeInfoFromProc.func1
         0     0%  0.99%     -0.01s  0.25%  github.com/sustainable-computing-io/kepler/internal/resource.containerInfoFromProc
         0     0%  0.99%     -0.01s  0.25%  github.com/sustainable-computing-io/kepler/internal/resource.newProcess
💾 Memory Comparison with base Kepler (Inuse)
File: kepler
Build ID: 4ab9b82e1bb129a50206469617176c2a5ec84564
Type: inuse_space
Time: 2026-05-03 19:15:55 UTC
Duration: 120.02s, Total samples = 9554.64kB 
Active filters:
   show=github.com/sustainable-computing-io
Showing nodes accounting for -4.72kB, 0.049% of 9554.64kB total
      flat  flat%   sum%        cum   cum%
         0     0%     0% -1024.20kB 10.72%  github.com/sustainable-computing-io/kepler/internal/monitor.(*PowerMonitor).calculatePower
         0     0%     0% -1024.20kB 10.72%  github.com/sustainable-computing-io/kepler/internal/monitor.(*PowerMonitor).calculateProcessPower
         0     0%     0% -1024.20kB 10.72%  github.com/sustainable-computing-io/kepler/internal/monitor.(*PowerMonitor).refreshSnapshot
         0     0%     0% -1024.20kB 10.72%  github.com/sustainable-computing-io/kepler/internal/monitor.(*PowerMonitor).scheduleNextCollection.func1
         0     0%     0% -1024.20kB 10.72%  github.com/sustainable-computing-io/kepler/internal/monitor.(*PowerMonitor).synchronizedPowerRefresh
         0     0%     0% -1024.20kB 10.72%  github.com/sustainable-computing-io/kepler/internal/monitor.(*PowerMonitor).synchronizedPowerRefresh.func1
-1024.20kB 10.72% 10.72% -1024.20kB 10.72%  github.com/sustainable-computing-io/kepler/internal/monitor.newProcess (inline)
         0     0% 10.72%  1024.09kB 10.72%  github.com/sustainable-computing-io/kepler/internal/exporter/prometheus/collector.(*PowerCollector).Collect
         0     0% 10.72%  -516.64kB  5.41%  github.com/sustainable-computing-io/kepler/internal/resource.computeTypeInfoFromProc.func2
 -516.64kB  5.41% 16.13%  -516.64kB  5.41%  github.com/sustainable-computing-io/kepler/internal/resource.vmInfoFromCmdLine
         0     0% 16.13%  -516.64kB  5.41%  github.com/sustainable-computing-io/kepler/internal/resource.vmInfoFromProc
         0     0% 16.13%   512.06kB  5.36%  github.com/sustainable-computing-io/kepler/internal/monitor.(*PowerMonitor).Snapshot
  512.06kB  5.36% 10.77%   512.06kB  5.36%  github.com/sustainable-computing-io/kepler/internal/monitor.(*Process).Clone (inline)
         0     0% 10.77%   512.06kB  5.36%  github.com/sustainable-computing-io/kepler/internal/monitor.(*Snapshot).Clone
  512.03kB  5.36%  5.41%   512.03kB  5.36%  github.com/sustainable-computing-io/kepler/internal/exporter/prometheus/collector.(*PowerCollector).collectProcessMetrics
  512.02kB  5.36% 0.049%   512.02kB  5.36%  github.com/sustainable-computing-io/kepler/internal/resource.(*procFSReader).CPUUsageRatio
         0     0% 0.049%   512.02kB  5.36%  github.com/sustainable-computing-io/kepler/internal/resource.(*resourceInformer).Refresh.func3
         0     0% 0.049%   512.02kB  5.36%  github.com/sustainable-computing-io/kepler/internal/resource.(*resourceInformer).refreshNode
💾 Memory Comparison with base Kepler (Alloc)
File: kepler
Build ID: 4ab9b82e1bb129a50206469617176c2a5ec84564
Type: alloc_space
Time: 2026-05-03 19:15:55 UTC
Duration: 120.02s, Total samples = 191.81MB 
Active filters:
   show=github.com/sustainable-computing-io
Showing nodes accounting for 1.46MB, 0.76% of 191.81MB total
Dropped 3 nodes (cum <= 0.96MB)
      flat  flat%   sum%        cum   cum%
         0     0%     0%    -9.54MB  4.97%  github.com/sustainable-computing-io/kepler/internal/exporter/prometheus/collector.(*gpuInfoCollector).Collect
         0     0%     0%     9.03MB  4.71%  github.com/sustainable-computing-io/kepler/internal/monitor.(*PowerMonitor).scheduleNextCollection.func1
    2.50MB  1.30%  1.30%        6MB  3.13%  github.com/sustainable-computing-io/kepler/internal/monitor.(*Process).Clone (inline)
         0     0%  1.30%     5.51MB  2.87%  github.com/sustainable-computing-io/kepler/internal/exporter/prometheus/collector.(*PowerCollector).Collect
   -0.51MB  0.27%  1.04%     5.49MB  2.86%  github.com/sustainable-computing-io/kepler/internal/monitor.(*Snapshot).Clone
      -1MB  0.52%  0.51%    -5.04MB  2.63%  github.com/sustainable-computing-io/kepler/internal/exporter/prometheus/collector.(*cpuInfoCollector).Collect
      -5MB  2.61%  2.09%       -5MB  2.61%  github.com/sustainable-computing-io/kepler/internal/exporter/prometheus/collector.(*PowerCollector).collectProcessMetrics
         0     0%  2.09%     4.52MB  2.36%  github.com/sustainable-computing-io/kepler/internal/resource.(*resourceInformer).Refresh
         0     0%  2.09%     4.52MB  2.36%  github.com/sustainable-computing-io/kepler/internal/resource.(*resourceInformer).refreshProcesses
         0     0%  2.09%     4.51MB  2.35%  github.com/sustainable-computing-io/kepler/internal/monitor.(*PowerMonitor).calculatePower
         0     0%  2.09%     4.51MB  2.35%  github.com/sustainable-computing-io/kepler/internal/monitor.(*PowerMonitor).refreshSnapshot
         0     0%  2.09%     4.51MB  2.35%  github.com/sustainable-computing-io/kepler/internal/monitor.(*PowerMonitor).synchronizedPowerRefresh
         0     0%  2.09%     4.51MB  2.35%  github.com/sustainable-computing-io/kepler/internal/monitor.(*PowerMonitor).synchronizedPowerRefresh.func1
         0     0%  2.09%    -4.51MB  2.35%  github.com/sustainable-computing-io/kepler/internal/monitor.(*PowerMonitor).ensureFreshData
   -4.04MB  2.11%  4.20%    -4.04MB  2.11%  github.com/sustainable-computing-io/kepler/internal/exporter/prometheus/collector.(*realProcFS).CPUInfo
         0     0%  4.20%        4MB  2.09%  github.com/sustainable-computing-io/kepler/internal/resource.(*resourceInformer).updateProcessCache
         0     0%  4.20%        4MB  2.09%  github.com/sustainable-computing-io/kepler/internal/resource.populateProcessFields
    3.50MB  1.83%  2.37%     3.50MB  1.83%  github.com/sustainable-computing-io/kepler/internal/resource.(*procWrapper).CPUTime
    3.50MB  1.83%  0.55%     3.50MB  1.83%  maps.Copy[go.shape.map[github.com/sustainable-computing-io/kepler/internal/device.EnergyZone]github.com/sustainable-computing-io/kepler/internal/monitor.Usage,go.shape.map[github.com/sustainable-computing-io/kepler/internal/device.EnergyZone]github.com/sustainable-computing-io/kepler/internal/monitor.Usage,go.shape.interface { Energy ; Index int; MaxEnergy github.com/sustainable-computing-io/kepler/internal/device.Energy; Name string; Path string; Power  },go.shape.struct { EnergyTotal github.com/sustainable-computing-io/kepler/internal/device.Energy; Power github.com/sustainable-computing-io/kepler/internal/device.Power }] (inline)
    2.53MB  1.32%  0.77%     2.53MB  1.32%  github.com/sustainable-computing-io/kepler/internal/resource.(*procFSReader).CPUUsageRatio
         0     0%  0.77%     2.53MB  1.32%  github.com/sustainable-computing-io/kepler/internal/resource.(*resourceInformer).Refresh.func3
         0     0%  0.77%     2.53MB  1.32%  github.com/sustainable-computing-io/kepler/internal/resource.(*resourceInformer).refreshNode
         0     0%  0.77%    -1.53MB   0.8%  github.com/sustainable-computing-io/kepler/internal/resource.computeTypeInfoFromProc.func1
         0     0%  0.77%    -1.53MB   0.8%  github.com/sustainable-computing-io/kepler/internal/resource.containerInfoFromProc
    1.50MB  0.78%  1.55%     1.50MB  0.78%  github.com/sustainable-computing-io/kepler/internal/monitor.newProcess (inline)
   -1.03MB  0.54%  1.02%    -1.03MB  0.54%  github.com/sustainable-computing-io/kepler/internal/resource.containerInfoFromCgroupPaths
         0     0%  1.02%        1MB  0.52%  github.com/sustainable-computing-io/kepler/internal/device.(*AggregatedZone).Energy
       1MB  0.52%  1.54%        1MB  0.52%  github.com/sustainable-computing-io/kepler/internal/device.sysfsRaplZone.Energy
         0     0%  1.54%        1MB  0.52%  github.com/sustainable-computing-io/kepler/internal/monitor.(*PowerMonitor).calculateNodePower
      -1MB  0.52%  1.02%       -1MB  0.52%  github.com/sustainable-computing-io/kepler/internal/monitor.(*Process).StringID (inline)
         0     0%  1.02%     0.98MB  0.51%  github.com/sustainable-computing-io/kepler/internal/monitor.(*PowerMonitor).Snapshot
    0.52MB  0.27%  1.29%     0.52MB  0.27%  github.com/sustainable-computing-io/kepler/internal/resource.(*procFSReader).AllProcs
   -1.01MB  0.53%  0.76%    -0.51MB  0.27%  github.com/sustainable-computing-io/kepler/internal/monitor.(*PowerMonitor).calculateProcessPower
   -0.50MB  0.26%   0.5%    -0.50MB  0.26%  github.com/sustainable-computing-io/kepler/internal/resource.(*procWrapper).Cgroups
    0.50MB  0.26%  0.76%     0.50MB  0.26%  github.com/sustainable-computing-io/kepler/internal/resource.(*procWrapper).Comm
         0     0%  0.76%     0.50MB  0.26%  github.com/sustainable-computing-io/kepler/internal/exporter/prometheus/collector.(*PlatformCollector).Collect
         0     0%  0.76%     0.50MB  0.26%  github.com/sustainable-computing-io/kepler/internal/platform/redfish.(*PowerReader).ReadAll
    0.50MB  0.26%  1.02%     0.50MB  0.26%  github.com/sustainable-computing-io/kepler/internal/platform/redfish.(*PowerReader).readPowerSubsystem
         0     0%  1.02%     0.50MB  0.26%  github.com/sustainable-computing-io/kepler/internal/platform/redfish.(*Service).Power
   -0.50MB  0.26%  0.76%    -0.50MB  0.26%  github.com/sustainable-computing-io/kepler/internal/logger.handlerForFormat.func1
         0     0%  0.76%    -0.50MB  0.26%  github.com/sustainable-computing-io/kepler/internal/monitor.(*PowerMonitor).calculatePodPower

⬇️ Download the Profiling artifacts from the Actions Summary page

📦 Artifact name: profile-artifacts-2468

🔧 Or use GitHub CLI to download artifacts:

gh run download 25287772647 -n profile-artifacts-2468

Promote the unexported `powerMeter` interface in
`internal/device/power_meter.go` to an exported `PowerMeter` requiring
`Name` and `Init` (via `service.Service` and `service.Initializer`).
Backends with resources can opt into cleanup by implementing
`service.Shutdowner`; the run framework already type-asserts it.

`device.CPUPowerMeter` embeds `PowerMeter`. The fake CPU meter and
`MockCPUPowerMeter` gain a no-op `Init()` to satisfy the interface;
no behaviour change.

Signed-off-by: nikimanoledaki <niki.manoledaki@grafana.com>
…ction

`createCPUMeter` in `cmd/kepler/main.go` hardcoded the RAPL → hwmon
fallback chain. This commit replaces it with a config-driven switch:

- New `cfg.Cpu.Meters` config (default `["rapl", "hwmon"]`) lets operators
  reorder backend priority without forking.
- New `device.CreateCPUMeter` walks the list, builds each backend, runs
  `Init()`, and returns the first that reports zones. Real failures
  aggregate via `errors.Join`; empty zones are a soft skip.
- New `buildCPUMeter` is a switch over backend names — adding a new
  backend means adding one case and one constructor.
- `cmd/kepler/main.go` calls `device.CreateCPUMeter` and drops the old
  `createCPUMeter` / `createHwmonMeter` helpers (~70 lines deleted).

Two legacy keys translate to `cpu.meters` at startup with a deprecation
warning, preserving operator behaviour:

- `dev.fake-cpu-meter.enabled: true` → `cpu.meters: ["fake"]`
- `experimental.hwmon.forceEnabled: true` → `cpu.meters: ["hwmon"]`

Sample configs (`hack/config.yaml`, helm values, k8s configmap, dev
compose) and `docs/user/configuration.md` updated.

No behaviour change for healthy systems running default config.

Signed-off-by: nikimanoledaki <niki.manoledaki@grafana.com>
@nikimanoledaki nikimanoledaki force-pushed the nm/cpu-power-meter-registry branch from b0c6206 to fd6e5d1 Compare May 3, 2026 19:37
@github-actions
Copy link
Copy Markdown
Contributor

github-actions Bot commented May 3, 2026

📊 Profiling reports are ready to be viewed

⚠️ Variability in pprof CPU and Memory profiles
When comparing pprof profiles of Kepler versions, expect variability in CPU and memory. Focus only on significant, consistent differences.

💻 CPU Comparison with base Kepler
File: kepler
Build ID: 0cb820f5dc9cbef66dec1a829ce60774c39bdd10
Type: cpu
Time: 2026-05-03 19:34:46 UTC
Duration: 120s, Total samples = 4.01s ( 3.34%)
Active filters:
   show=github.com/sustainable-computing-io
Showing nodes accounting for -0.08s, 2.00% of 4.01s total
Dropped 1 node (cum <= 0.02s)
      flat  flat%   sum%        cum   cum%
    -0.01s  0.25%  0.25%      0.11s  2.74%  github.com/sustainable-computing-io/kepler/internal/exporter/prometheus/collector.(*PowerCollector).Collect
         0     0%  0.25%     -0.09s  2.24%  github.com/sustainable-computing-io/kepler/internal/exporter/prometheus/collector.(*gpuInfoCollector).Collect
    -0.05s  1.25%  1.50%     -0.05s  1.25%  github.com/sustainable-computing-io/kepler/internal/resource.(*procFSReader).CPUUsageRatio
         0     0%  1.50%     -0.05s  1.25%  github.com/sustainable-computing-io/kepler/internal/resource.(*resourceInformer).Refresh.func3
         0     0%  1.50%     -0.05s  1.25%  github.com/sustainable-computing-io/kepler/internal/resource.(*resourceInformer).refreshNode
         0     0%  1.50%      0.04s     1%  github.com/sustainable-computing-io/kepler/internal/monitor.(*PowerMonitor).Snapshot
         0     0%  1.50%      0.04s     1%  github.com/sustainable-computing-io/kepler/internal/monitor.(*PowerMonitor).ensureFreshData
    -0.04s     1%  2.49%     -0.04s     1%  github.com/sustainable-computing-io/kepler/internal/resource.(*procWrapper).CPUTime
         0     0%  2.49%     -0.03s  0.75%  github.com/sustainable-computing-io/kepler/internal/monitor.(*PowerMonitor).scheduleNextCollection.func1
         0     0%  2.49%     -0.03s  0.75%  github.com/sustainable-computing-io/kepler/internal/resource.populateProcessFields
     0.01s  0.25%  2.24%      0.02s   0.5%  github.com/sustainable-computing-io/kepler/internal/monitor.(*PowerMonitor).calculateNodePower
     0.02s   0.5%  1.75%      0.02s   0.5%  github.com/sustainable-computing-io/kepler/internal/resource.(*procFSReader).AllProcs
     0.01s  0.25%  1.50%     -0.02s   0.5%  github.com/sustainable-computing-io/kepler/internal/resource.(*resourceInformer).updateProcessCache
         0     0%  1.50%      0.02s   0.5%  github.com/sustainable-computing-io/kepler/internal/resource.newProcess
     0.01s  0.25%  1.25%      0.01s  0.25%  github.com/sustainable-computing-io/kepler/internal/device.(*AggregatedZone).Power
    -0.01s  0.25%  1.50%     -0.01s  0.25%  github.com/sustainable-computing-io/kepler/internal/exporter/prometheus/collector.(*PowerCollector).collectProcessMetrics
    -0.01s  0.25%  1.75%     -0.01s  0.25%  github.com/sustainable-computing-io/kepler/internal/monitor.(*PowerMonitor).calculateContainerPower
         0     0%  1.75%      0.01s  0.25%  github.com/sustainable-computing-io/kepler/internal/monitor.(*PowerMonitor).calculatePower
     0.01s  0.25%  1.50%      0.01s  0.25%  github.com/sustainable-computing-io/kepler/internal/monitor.(*PowerMonitor).calculateProcessPower
         0     0%  1.50%      0.01s  0.25%  github.com/sustainable-computing-io/kepler/internal/monitor.(*PowerMonitor).refreshSnapshot
         0     0%  1.50%      0.01s  0.25%  github.com/sustainable-computing-io/kepler/internal/monitor.(*PowerMonitor).synchronizedPowerRefresh
         0     0%  1.50%      0.01s  0.25%  github.com/sustainable-computing-io/kepler/internal/monitor.(*PowerMonitor).synchronizedPowerRefresh.func1
         0     0%  1.50%     -0.01s  0.25%  github.com/sustainable-computing-io/kepler/internal/monitor.(*Process).Clone (inline)
     0.01s  0.25%  1.25%      0.01s  0.25%  github.com/sustainable-computing-io/kepler/internal/monitor.(*Process).StringID (inline)
    -0.01s  0.25%  1.50%     -0.01s  0.25%  github.com/sustainable-computing-io/kepler/internal/monitor.newProcess (inline)
     0.01s  0.25%  1.25%      0.01s  0.25%  github.com/sustainable-computing-io/kepler/internal/resource.(*procWrapper).Comm
         0     0%  1.25%     -0.01s  0.25%  github.com/sustainable-computing-io/kepler/internal/resource.(*resourceInformer).Refresh
    -0.01s  0.25%  1.50%     -0.01s  0.25%  github.com/sustainable-computing-io/kepler/internal/resource.(*resourceInformer).refreshProcesses
         0     0%  1.50%     -0.01s  0.25%  github.com/sustainable-computing-io/kepler/internal/resource.computeTypeInfoFromProc.func1
    -0.01s  0.25%  1.75%     -0.01s  0.25%  github.com/sustainable-computing-io/kepler/internal/resource.containerInfoFromProc
    -0.01s  0.25%  2.00%     -0.01s  0.25%  maps.Copy[go.shape.map[github.com/sustainable-computing-io/kepler/internal/device.EnergyZone]github.com/sustainable-computing-io/kepler/internal/monitor.Usage,go.shape.map[github.com/sustainable-computing-io/kepler/internal/device.EnergyZone]github.com/sustainable-computing-io/kepler/internal/monitor.Usage,go.shape.interface { Energy ; Index int; MaxEnergy github.com/sustainable-computing-io/kepler/internal/device.Energy; Name string; Path string; Power  },go.shape.struct { EnergyTotal github.com/sustainable-computing-io/kepler/internal/device.Energy; Power github.com/sustainable-computing-io/kepler/internal/device.Power }] (inline)
💾 Memory Comparison with base Kepler (Inuse)
File: kepler
Build ID: 0cb820f5dc9cbef66dec1a829ce60774c39bdd10
Type: inuse_space
Time: 2026-05-03 19:36:46 UTC
Duration: 120.02s, Total samples = 6990.12kB 
Active filters:
   show=github.com/sustainable-computing-io
Showing nodes accounting for -1033.11kB, 14.78% of 6990.12kB total
      flat  flat%   sum%        cum   cum%
         0     0%     0% -1033.11kB 14.78%  github.com/sustainable-computing-io/kepler/internal/monitor.(*PowerMonitor).Snapshot
         0     0%     0% -1033.11kB 14.78%  github.com/sustainable-computing-io/kepler/internal/monitor.(*PowerMonitor).calculatePower
         0     0%     0% -1033.11kB 14.78%  github.com/sustainable-computing-io/kepler/internal/monitor.(*PowerMonitor).ensureFreshData
         0     0%     0% -1033.11kB 14.78%  github.com/sustainable-computing-io/kepler/internal/monitor.(*PowerMonitor).refreshSnapshot
         0     0%     0% -1033.11kB 14.78%  github.com/sustainable-computing-io/kepler/internal/monitor.(*PowerMonitor).synchronizedPowerRefresh
         0     0%     0% -1033.11kB 14.78%  github.com/sustainable-computing-io/kepler/internal/monitor.(*PowerMonitor).synchronizedPowerRefresh.func1
         0     0%     0% -1024.20kB 14.65%  github.com/sustainable-computing-io/kepler/internal/exporter/prometheus/collector.(*gpuInfoCollector).Collect
         0     0%     0%  -521.05kB  7.45%  github.com/sustainable-computing-io/kepler/internal/resource.(*resourceInformer).Refresh
 -521.05kB  7.45%  7.45%  -521.05kB  7.45%  github.com/sustainable-computing-io/kepler/internal/resource.(*resourceInformer).refreshProcesses
         0     0%  7.45%  -512.06kB  7.33%  github.com/sustainable-computing-io/kepler/internal/monitor.(*PowerMonitor).calculateProcessPower
 -512.06kB  7.33% 14.78%  -512.06kB  7.33%  github.com/sustainable-computing-io/kepler/internal/monitor.newProcess (inline)
         0     0% 14.78%    -8.91kB  0.13%  github.com/sustainable-computing-io/kepler/internal/exporter/prometheus/collector.(*PowerCollector).Collect
💾 Memory Comparison with base Kepler (Alloc)
File: kepler
Build ID: 0cb820f5dc9cbef66dec1a829ce60774c39bdd10
Type: alloc_space
Time: 2026-05-03 19:36:46 UTC
Duration: 120.02s, Total samples = 181.12MB 
Active filters:
   show=github.com/sustainable-computing-io
Showing nodes accounting for 2.23MB, 1.23% of 181.12MB total
Dropped 1 node (cum <= 0.91MB)
      flat  flat%   sum%        cum   cum%
    0.50MB  0.28%  0.28%    -6.09MB  3.36%  github.com/sustainable-computing-io/kepler/internal/exporter/prometheus/collector.(*PowerCollector).Collect
         0     0%  0.28%        6MB  3.31%  github.com/sustainable-computing-io/kepler/internal/exporter/prometheus/collector.(*gpuInfoCollector).Collect
    3.50MB  1.93%  2.21%     3.50MB  1.93%  github.com/sustainable-computing-io/kepler/internal/resource.(*procWrapper).CPUTime
         0     0%  2.21%     3.50MB  1.93%  github.com/sustainable-computing-io/kepler/internal/resource.(*resourceInformer).updateProcessCache
         0     0%  2.21%     3.50MB  1.93%  github.com/sustainable-computing-io/kepler/internal/resource.populateProcessFields
         0     0%  2.21%    -3.08MB  1.70%  github.com/sustainable-computing-io/kepler/internal/monitor.(*PowerMonitor).calculatePower
         0     0%  2.21%    -3.08MB  1.70%  github.com/sustainable-computing-io/kepler/internal/monitor.(*PowerMonitor).refreshSnapshot
         0     0%  2.21%    -3.08MB  1.70%  github.com/sustainable-computing-io/kepler/internal/monitor.(*PowerMonitor).synchronizedPowerRefresh
         0     0%  2.21%    -3.08MB  1.70%  github.com/sustainable-computing-io/kepler/internal/monitor.(*PowerMonitor).synchronizedPowerRefresh.func1
    3.04MB  1.68%  3.89%     3.04MB  1.68%  github.com/sustainable-computing-io/kepler/internal/resource.(*procFSReader).CPUUsageRatio
         0     0%  3.89%     3.04MB  1.68%  github.com/sustainable-computing-io/kepler/internal/resource.(*resourceInformer).Refresh.func3
         0     0%  3.89%     3.04MB  1.68%  github.com/sustainable-computing-io/kepler/internal/resource.(*resourceInformer).refreshNode
    0.50MB  0.28%  4.17%        3MB  1.66%  github.com/sustainable-computing-io/kepler/internal/monitor.(*Process).Clone (inline)
         0     0%  4.17%    -2.58MB  1.43%  github.com/sustainable-computing-io/kepler/internal/monitor.(*PowerMonitor).ensureFreshData
    2.50MB  1.38%  5.55%     2.50MB  1.38%  maps.Copy[go.shape.map[github.com/sustainable-computing-io/kepler/internal/device.EnergyZone]github.com/sustainable-computing-io/kepler/internal/monitor.Usage,go.shape.map[github.com/sustainable-computing-io/kepler/internal/device.EnergyZone]github.com/sustainable-computing-io/kepler/internal/monitor.Usage,go.shape.interface { Energy ; Index int; MaxEnergy github.com/sustainable-computing-io/kepler/internal/device.Energy; Name string; Path string; Power  },go.shape.struct { EnergyTotal github.com/sustainable-computing-io/kepler/internal/device.Energy; Power github.com/sustainable-computing-io/kepler/internal/device.Power }] (inline)
   -2.50MB  1.38%  4.17%    -2.50MB  1.38%  github.com/sustainable-computing-io/kepler/internal/monitor.newProcess (inline)
   -0.50MB  0.28%  3.89%    -2.50MB  1.38%  github.com/sustainable-computing-io/kepler/internal/monitor.(*PowerMonitor).calculateProcessPower
   -1.55MB  0.86%  3.03%    -2.05MB  1.13%  github.com/sustainable-computing-io/kepler/internal/resource.(*procFSReader).AllProcs
   -0.51MB  0.28%  2.75%     1.99MB  1.10%  github.com/sustainable-computing-io/kepler/internal/monitor.(*Snapshot).Clone
   -1.24MB  0.68%  2.07%    -1.24MB  0.68%  github.com/sustainable-computing-io/kepler/internal/exporter/prometheus/collector.(*realProcFS).CPUInfo
    1.02MB  0.56%  2.63%     1.02MB  0.56%  github.com/sustainable-computing-io/kepler/internal/resource.vmInfoFromCmdLine
    0.50MB  0.28%  2.90%    -0.74MB  0.41%  github.com/sustainable-computing-io/kepler/internal/exporter/prometheus/collector.(*cpuInfoCollector).Collect
         0     0%  2.90%    -0.59MB  0.33%  github.com/sustainable-computing-io/kepler/internal/monitor.(*PowerMonitor).Snapshot
   -1.01MB  0.56%  2.35%    -0.58MB  0.32%  github.com/sustainable-computing-io/kepler/internal/resource.(*resourceInformer).Refresh
         0     0%  2.35%     0.52MB  0.29%  github.com/sustainable-computing-io/kepler/internal/resource.computeTypeInfoFromProc.func2
         0     0%  2.35%     0.52MB  0.29%  github.com/sustainable-computing-io/kepler/internal/resource.vmInfoFromProc
   -0.50MB  0.28%  2.07%    -0.50MB  0.28%  github.com/sustainable-computing-io/kepler/internal/resource.(*procWrapper).Cgroups
         0     0%  2.07%    -0.50MB  0.28%  github.com/sustainable-computing-io/kepler/internal/resource.computeTypeInfoFromProc.func1
         0     0%  2.07%    -0.50MB  0.28%  github.com/sustainable-computing-io/kepler/internal/resource.containerInfoFromProc
         0     0%  2.07%     0.50MB  0.28%  github.com/sustainable-computing-io/kepler/internal/exporter/prometheus/collector.(*PlatformCollector).Collect
         0     0%  2.07%     0.50MB  0.28%  github.com/sustainable-computing-io/kepler/internal/platform/redfish.(*PowerReader).ReadAll
    0.50MB  0.28%  2.35%     0.50MB  0.28%  github.com/sustainable-computing-io/kepler/internal/platform/redfish.(*PowerReader).readPowerSubsystem
         0     0%  2.35%     0.50MB  0.28%  github.com/sustainable-computing-io/kepler/internal/platform/redfish.(*Service).Power
         0     0%  2.35%    -0.50MB  0.28%  github.com/sustainable-computing-io/kepler/internal/resource.newProcess
   -0.50MB  0.28%  2.07%    -0.50MB  0.28%  github.com/sustainable-computing-io/kepler/internal/resource.(*procWrapper).CmdLine
   -0.50MB  0.28%  1.79%    -0.50MB  0.28%  github.com/sustainable-computing-io/kepler/internal/resource.WrapProc (inline)
         0     0%  1.79%    -0.50MB  0.27%  github.com/sustainable-computing-io/kepler/internal/monitor.(*PowerMonitor).scheduleNextCollection.func1
   -1.02MB  0.56%  1.23%     0.43MB  0.24%  github.com/sustainable-computing-io/kepler/internal/resource.(*resourceInformer).refreshProcesses

⬇️ Download the Profiling artifacts from the Actions Summary page

📦 Artifact name: profile-artifacts-2468

🔧 Or use GitHub CLI to download artifacts:

gh run download 25288135534 -n profile-artifacts-2468

@github-actions
Copy link
Copy Markdown
Contributor

github-actions Bot commented May 3, 2026

⚠️ Config changes detected in this PR
Please make sure that the config changes are updated in the following places as part of this PR:

  • compose/default/kepler/etc/kepler/config.yaml

@github-actions
Copy link
Copy Markdown
Contributor

github-actions Bot commented May 3, 2026

📊 Profiling reports are ready to be viewed

⚠️ Variability in pprof CPU and Memory profiles
When comparing pprof profiles of Kepler versions, expect variability in CPU and memory. Focus only on significant, consistent differences.

💻 CPU Comparison with base Kepler
File: kepler
Build ID: 89958f1275694eaa73d74da42d67496ecd83471a
Type: cpu
Time: 2026-05-03 19:49:14 UTC
Duration: 120s, Total samples = 4.14s ( 3.45%)
Active filters:
   show=github.com/sustainable-computing-io
Showing nodes accounting for -0.06s, 1.45% of 4.14s total
      flat  flat%   sum%        cum   cum%
         0     0%     0%     -0.19s  4.59%  github.com/sustainable-computing-io/kepler/internal/exporter/prometheus/collector.(*gpuInfoCollector).Collect
         0     0%     0%      0.11s  2.66%  github.com/sustainable-computing-io/kepler/internal/exporter/prometheus/collector.(*PowerCollector).Collect
         0     0%     0%     -0.07s  1.69%  github.com/sustainable-computing-io/kepler/internal/monitor.(*PowerMonitor).ensureFreshData
         0     0%     0%     -0.06s  1.45%  github.com/sustainable-computing-io/kepler/internal/monitor.(*PowerMonitor).Snapshot
         0     0%     0%     -0.05s  1.21%  github.com/sustainable-computing-io/kepler/internal/monitor.(*PowerMonitor).refreshSnapshot
         0     0%     0%     -0.05s  1.21%  github.com/sustainable-computing-io/kepler/internal/monitor.(*PowerMonitor).synchronizedPowerRefresh
         0     0%     0%     -0.05s  1.21%  github.com/sustainable-computing-io/kepler/internal/monitor.(*PowerMonitor).synchronizedPowerRefresh.func1
         0     0%     0%     -0.04s  0.97%  github.com/sustainable-computing-io/kepler/internal/monitor.(*PowerMonitor).calculatePower
    -0.03s  0.72%  0.72%     -0.03s  0.72%  github.com/sustainable-computing-io/kepler/internal/resource.(*procWrapper).CPUTime
    -0.01s  0.24%  0.97%     -0.03s  0.72%  github.com/sustainable-computing-io/kepler/internal/resource.(*resourceInformer).updateProcessCache
    -0.02s  0.48%  1.45%     -0.02s  0.48%  github.com/sustainable-computing-io/kepler/internal/exporter/prometheus/collector.(*PowerCollector).collectProcessMetrics
         0     0%  1.45%      0.02s  0.48%  github.com/sustainable-computing-io/kepler/internal/monitor.(*PowerMonitor).scheduleNextCollection.func1
     0.02s  0.48%  0.97%      0.02s  0.48%  github.com/sustainable-computing-io/kepler/internal/monitor.(*Process).StringID (inline)
    -0.02s  0.48%  1.45%     -0.02s  0.48%  github.com/sustainable-computing-io/kepler/internal/monitor.newProcess (inline)
         0     0%  1.45%     -0.02s  0.48%  github.com/sustainable-computing-io/kepler/internal/resource.(*resourceInformer).Refresh
         0     0%  1.45%     -0.02s  0.48%  github.com/sustainable-computing-io/kepler/internal/resource.(*resourceInformer).refreshProcesses
     0.01s  0.24%  1.21%     -0.02s  0.48%  github.com/sustainable-computing-io/kepler/internal/resource.populateProcessFields
    -0.01s  0.24%  1.45%     -0.01s  0.24%  github.com/sustainable-computing-io/kepler/internal/monitor.(*PowerMonitor).calculateNodePower
    -0.01s  0.24%  1.69%     -0.01s  0.24%  github.com/sustainable-computing-io/kepler/internal/monitor.(*PowerMonitor).calculatePodPower
    -0.01s  0.24%  1.93%     -0.01s  0.24%  github.com/sustainable-computing-io/kepler/internal/monitor.(*PowerMonitor).refreshSnapshot.func1
         0     0%  1.93%      0.01s  0.24%  github.com/sustainable-computing-io/kepler/internal/monitor.(*Process).Clone (inline)
         0     0%  1.93%      0.01s  0.24%  github.com/sustainable-computing-io/kepler/internal/monitor.(*Snapshot).Clone
     0.01s  0.24%  1.69%      0.01s  0.24%  github.com/sustainable-computing-io/kepler/internal/resource.(*procFSReader).AllProcs
    -0.01s  0.24%  1.93%     -0.01s  0.24%  github.com/sustainable-computing-io/kepler/internal/resource.(*procFSReader).CPUUsageRatio
     0.01s  0.24%  1.69%      0.01s  0.24%  github.com/sustainable-computing-io/kepler/internal/resource.(*procWrapper).Cgroups
     0.01s  0.24%  1.45%      0.01s  0.24%  github.com/sustainable-computing-io/kepler/internal/resource.(*procWrapper).Comm
    -0.01s  0.24%  1.69%     -0.01s  0.24%  github.com/sustainable-computing-io/kepler/internal/resource.(*procWrapper).Executable
         0     0%  1.69%     -0.01s  0.24%  github.com/sustainable-computing-io/kepler/internal/resource.(*resourceInformer).Refresh.func3
         0     0%  1.69%     -0.01s  0.24%  github.com/sustainable-computing-io/kepler/internal/resource.(*resourceInformer).refreshNode
         0     0%  1.69%      0.01s  0.24%  github.com/sustainable-computing-io/kepler/internal/resource.computeTypeInfoFromProc.func1
         0     0%  1.69%      0.01s  0.24%  github.com/sustainable-computing-io/kepler/internal/resource.containerInfoFromProc
         0     0%  1.69%     -0.01s  0.24%  github.com/sustainable-computing-io/kepler/internal/resource.newProcess
     0.01s  0.24%  1.45%      0.01s  0.24%  maps.Copy[go.shape.map[github.com/sustainable-computing-io/kepler/internal/device.EnergyZone]github.com/sustainable-computing-io/kepler/internal/monitor.Usage,go.shape.map[github.com/sustainable-computing-io/kepler/internal/device.EnergyZone]github.com/sustainable-computing-io/kepler/internal/monitor.Usage,go.shape.interface { Energy ; Index int; MaxEnergy github.com/sustainable-computing-io/kepler/internal/device.Energy; Name string; Path string; Power  },go.shape.struct { EnergyTotal github.com/sustainable-computing-io/kepler/internal/device.Energy; Power github.com/sustainable-computing-io/kepler/internal/device.Power }] (inline)
💾 Memory Comparison with base Kepler (Inuse)
File: kepler
Build ID: 89958f1275694eaa73d74da42d67496ecd83471a
Type: inuse_space
Time: 2026-05-03 19:51:14 UTC
Duration: 120.02s, Total samples = 7063.85kB 
Active filters:
   show=github.com/sustainable-computing-io
Showing nodes accounting for 2577.63kB, 36.49% of 7063.85kB total
      flat  flat%   sum%        cum   cum%
         0     0%     0%  1037.57kB 14.69%  github.com/sustainable-computing-io/kepler/internal/monitor.(*PowerMonitor).Snapshot
         0     0%     0%     1028kB 14.55%  github.com/sustainable-computing-io/kepler/internal/resource.computeTypeInfoFromProc.func1
    1028kB 14.55% 14.55%     1028kB 14.55%  github.com/sustainable-computing-io/kepler/internal/resource.containerInfoFromCgroupPaths
         0     0% 14.55%     1028kB 14.55%  github.com/sustainable-computing-io/kepler/internal/resource.containerInfoFromProc
         0     0% 14.55%  1024.20kB 14.50%  github.com/sustainable-computing-io/kepler/internal/monitor.(*PowerMonitor).calculatePower
         0     0% 14.55%  1024.20kB 14.50%  github.com/sustainable-computing-io/kepler/internal/monitor.(*PowerMonitor).calculateProcessPower
         0     0% 14.55%  1024.20kB 14.50%  github.com/sustainable-computing-io/kepler/internal/monitor.(*PowerMonitor).refreshSnapshot
         0     0% 14.55%  1024.20kB 14.50%  github.com/sustainable-computing-io/kepler/internal/monitor.(*PowerMonitor).synchronizedPowerRefresh
         0     0% 14.55%  1024.20kB 14.50%  github.com/sustainable-computing-io/kepler/internal/monitor.(*PowerMonitor).synchronizedPowerRefresh.func1
 1024.20kB 14.50% 29.05%  1024.20kB 14.50%  github.com/sustainable-computing-io/kepler/internal/monitor.newProcess (inline)
         0     0% 29.05%   525.43kB  7.44%  github.com/sustainable-computing-io/kepler/internal/exporter/prometheus/collector.(*PowerCollector).Collect
  525.43kB  7.44% 36.49%   525.43kB  7.44%  github.com/sustainable-computing-io/kepler/internal/monitor.(*Snapshot).Clone
         0     0% 36.49%   512.14kB  7.25%  github.com/sustainable-computing-io/kepler/internal/exporter/prometheus/collector.(*gpuInfoCollector).Collect
         0     0% 36.49%   512.14kB  7.25%  github.com/sustainable-computing-io/kepler/internal/monitor.(*PowerMonitor).ensureFreshData
         0     0% 36.49%   512.06kB  7.25%  github.com/sustainable-computing-io/kepler/internal/monitor.(*PowerMonitor).scheduleNextCollection.func1
💾 Memory Comparison with base Kepler (Alloc)
File: kepler
Build ID: 89958f1275694eaa73d74da42d67496ecd83471a
Type: alloc_space
Time: 2026-05-03 19:51:14 UTC
Duration: 120.02s, Total samples = 183.15MB 
Active filters:
   show=github.com/sustainable-computing-io
Showing nodes accounting for 10.51MB, 5.74% of 183.15MB total
Dropped 1 node (cum <= 0.92MB)
      flat  flat%   sum%        cum   cum%
         0     0%     0%     9.51MB  5.19%  github.com/sustainable-computing-io/kepler/internal/monitor.(*PowerMonitor).calculatePower
         0     0%     0%     9.51MB  5.19%  github.com/sustainable-computing-io/kepler/internal/monitor.(*PowerMonitor).refreshSnapshot
         0     0%     0%     9.51MB  5.19%  github.com/sustainable-computing-io/kepler/internal/monitor.(*PowerMonitor).synchronizedPowerRefresh
         0     0%     0%     9.51MB  5.19%  github.com/sustainable-computing-io/kepler/internal/monitor.(*PowerMonitor).synchronizedPowerRefresh.func1
    0.50MB  0.28%  0.28%     8.02MB  4.38%  github.com/sustainable-computing-io/kepler/internal/resource.(*resourceInformer).Refresh
         0     0%  0.28%     7.52MB  4.11%  github.com/sustainable-computing-io/kepler/internal/resource.(*resourceInformer).refreshProcesses
         0     0%  0.28%     6.50MB  3.55%  github.com/sustainable-computing-io/kepler/internal/resource.(*resourceInformer).updateProcessCache
         0     0%  0.28%     6.50MB  3.55%  github.com/sustainable-computing-io/kepler/internal/resource.populateProcessFields
         0     0%  0.28%     6.02MB  3.29%  github.com/sustainable-computing-io/kepler/internal/exporter/prometheus/collector.(*gpuInfoCollector).Collect
       6MB  3.28%  3.55%        6MB  3.28%  github.com/sustainable-computing-io/kepler/internal/resource.(*procWrapper).CPUTime
         0     0%  3.55%     5.52MB  3.01%  github.com/sustainable-computing-io/kepler/internal/monitor.(*PowerMonitor).ensureFreshData
         0     0%  3.55%     3.99MB  2.18%  github.com/sustainable-computing-io/kepler/internal/monitor.(*PowerMonitor).scheduleNextCollection.func1
         0     0%  3.55%     3.03MB  1.66%  github.com/sustainable-computing-io/kepler/internal/monitor.(*PowerMonitor).Snapshot
    0.51MB  0.28%  3.83%    -2.49MB  1.36%  github.com/sustainable-computing-io/kepler/internal/monitor.(*Snapshot).Clone
         0     0%  3.83%    -2.48MB  1.36%  github.com/sustainable-computing-io/kepler/internal/exporter/prometheus/collector.(*PowerCollector).Collect
      -1MB  0.55%  3.29%       -2MB  1.09%  github.com/sustainable-computing-io/kepler/internal/monitor.(*Process).Clone (inline)
    1.93MB  1.05%  4.34%     1.93MB  1.05%  github.com/sustainable-computing-io/kepler/internal/exporter/prometheus/collector.(*realProcFS).CPUInfo
    1.54MB  0.84%  5.18%     1.54MB  0.84%  github.com/sustainable-computing-io/kepler/internal/resource.(*procFSReader).CPUUsageRatio
         0     0%  5.18%     1.54MB  0.84%  github.com/sustainable-computing-io/kepler/internal/resource.(*resourceInformer).Refresh.func3
         0     0%  5.18%     1.54MB  0.84%  github.com/sustainable-computing-io/kepler/internal/resource.(*resourceInformer).refreshNode
    1.02MB  0.56%  5.74%     1.02MB  0.56%  github.com/sustainable-computing-io/kepler/internal/resource.(*procFSReader).AllProcs
      -1MB  0.55%  5.19%       -1MB  0.55%  maps.Copy[go.shape.map[github.com/sustainable-computing-io/kepler/internal/device.EnergyZone]github.com/sustainable-computing-io/kepler/internal/monitor.Usage,go.shape.map[github.com/sustainable-computing-io/kepler/internal/device.EnergyZone]github.com/sustainable-computing-io/kepler/internal/monitor.Usage,go.shape.interface { Energy ; Index int; MaxEnergy github.com/sustainable-computing-io/kepler/internal/device.Energy; Name string; Path string; Power  },go.shape.struct { EnergyTotal github.com/sustainable-computing-io/kepler/internal/device.Energy; Power github.com/sustainable-computing-io/kepler/internal/device.Power }] (inline)
       1MB  0.55%  5.74%        1MB  0.55%  github.com/sustainable-computing-io/kepler/internal/monitor.(*Process).StringID (inline)
   -0.51MB  0.28%  5.46%     0.99MB  0.54%  github.com/sustainable-computing-io/kepler/internal/monitor.(*PowerMonitor).calculateProcessPower
      -1MB  0.55%  4.91%     0.93MB  0.51%  github.com/sustainable-computing-io/kepler/internal/exporter/prometheus/collector.(*cpuInfoCollector).Collect
    0.50MB  0.28%  5.19%     0.50MB  0.28%  github.com/sustainable-computing-io/kepler/internal/device.(*AggregatedZone).Path
         0     0%  5.19%     0.50MB  0.28%  github.com/sustainable-computing-io/kepler/internal/exporter/prometheus/collector.(*PowerCollector).collectNodeMetrics
    0.50MB  0.28%  5.46%     0.50MB  0.28%  github.com/sustainable-computing-io/kepler/internal/exporter/prometheus/collector.(*PowerCollector).collectProcessMetrics
         0     0%  5.46%     0.50MB  0.27%  github.com/sustainable-computing-io/kepler/internal/resource.computeTypeInfoFromProc.func1
    0.50MB  0.27%  5.74%     0.50MB  0.27%  github.com/sustainable-computing-io/kepler/internal/resource.containerInfoFromCgroupPaths
         0     0%  5.74%     0.50MB  0.27%  github.com/sustainable-computing-io/kepler/internal/resource.containerInfoFromProc
    0.50MB  0.27%  6.01%     0.50MB  0.27%  github.com/sustainable-computing-io/kepler/internal/monitor.(*PowerMonitor).calculateNodePower
    0.50MB  0.27%  6.28%     0.50MB  0.27%  github.com/sustainable-computing-io/kepler/internal/resource.(*procWrapper).Comm
   -0.50MB  0.27%  6.01%    -0.50MB  0.27%  github.com/sustainable-computing-io/kepler/internal/exporter/prometheus/collector.(*PowerCollector).collectContainerMetrics
   -0.50MB  0.27%  5.74%    -0.50MB  0.27%  github.com/sustainable-computing-io/kepler/internal/monitor.(*Container).Clone (inline)

⬇️ Download the Profiling artifacts from the Actions Summary page

📦 Artifact name: profile-artifacts-2468

🔧 Or use GitHub CLI to download artifacts:

gh run download 25288808461 -n profile-artifacts-2468

@nikimanoledaki nikimanoledaki changed the title feat(device): add PowerMeter interface and CPU registry feat(device): add cpu.meters config and switch-based CPU meter selection May 3, 2026
Three CI fixes for PR #2468:

- `yamllint`: drop redundant double-quotes in `meters: [rapl, hwmon]`
  across `hack/config.yaml`, `compose/dev/kepler-dev/etc/kepler/config.yaml`,
  and `manifests/helm/kepler/values.yaml`. Project's `.yamllint.yaml`
  enforces `quoted-strings: required: only-when-needed`.

- `compose-deploy` / `build-and-deploy`: the CI runs
  `sed -i '/fake-cpu-meter:/{n;s/enabled: false/enabled: true/}'` to flip
  the fake meter on for tests. The previous commit added a multi-line
  deprecation comment between `fake-cpu-meter:` and `enabled: false`,
  which broke the sed (`n` jumped to the comment instead of `enabled:`).
  Move the deprecation note to a trailing comment on the same line as
  `enabled: false` in all four affected files.

- `codecov/patch`: add `internal/device/cpu_power_meter_test.go`
  covering `CreateCPUMeter` and `buildCPUMeter` (success, unknown name,
  fallthrough, empty meters).

Signed-off-by: nikimanoledaki <niki.manoledaki@grafana.com>
@github-actions github-actions Bot added the fix A bug fix label May 3, 2026
@github-actions
Copy link
Copy Markdown
Contributor

github-actions Bot commented May 3, 2026

⚠️ Config changes detected in this PR
Please make sure that the config changes are updated in the following places as part of this PR:

  • compose/default/kepler/etc/kepler/config.yaml

@github-actions
Copy link
Copy Markdown
Contributor

github-actions Bot commented May 3, 2026

📊 Profiling reports are ready to be viewed

⚠️ Variability in pprof CPU and Memory profiles
When comparing pprof profiles of Kepler versions, expect variability in CPU and memory. Focus only on significant, consistent differences.

💻 CPU Comparison with base Kepler
File: kepler
Build ID: 5db39f46b22029bb63b341bd3d16ced04fa36de2
Type: cpu
Time: 2026-05-03 21:47:31 UTC
Duration: 120s, Total samples = 3.86s ( 3.22%)
Active filters:
   show=github.com/sustainable-computing-io
Showing nodes accounting for 0.04s, 1.04% of 3.86s total
Dropped 3 nodes (cum <= 0.02s)
      flat  flat%   sum%        cum   cum%
         0     0%     0%      0.15s  3.89%  github.com/sustainable-computing-io/kepler/internal/exporter/prometheus/collector.(*PowerCollector).Collect
         0     0%     0%     -0.14s  3.63%  github.com/sustainable-computing-io/kepler/internal/exporter/prometheus/collector.(*gpuInfoCollector).Collect
     0.05s  1.30%  1.30%      0.05s  1.30%  github.com/sustainable-computing-io/kepler/internal/exporter/prometheus/collector.(*PowerCollector).collectProcessMetrics
         0     0%  1.30%      0.05s  1.30%  github.com/sustainable-computing-io/kepler/internal/monitor.(*PowerMonitor).scheduleNextCollection.func1
         0     0%  1.30%      0.04s  1.04%  github.com/sustainable-computing-io/kepler/internal/monitor.(*PowerMonitor).refreshSnapshot
         0     0%  1.30%      0.04s  1.04%  github.com/sustainable-computing-io/kepler/internal/monitor.(*PowerMonitor).synchronizedPowerRefresh
         0     0%  1.30%      0.04s  1.04%  github.com/sustainable-computing-io/kepler/internal/monitor.(*PowerMonitor).synchronizedPowerRefresh.func1
         0     0%  1.30%      0.04s  1.04%  github.com/sustainable-computing-io/kepler/internal/resource.(*resourceInformer).Refresh
     0.01s  0.26%  1.55%      0.04s  1.04%  github.com/sustainable-computing-io/kepler/internal/resource.(*resourceInformer).refreshProcesses
         0     0%  1.55%      0.03s  0.78%  github.com/sustainable-computing-io/kepler/internal/monitor.(*PowerMonitor).calculatePower
    -0.03s  0.78%  0.78%     -0.03s  0.78%  github.com/sustainable-computing-io/kepler/internal/resource.(*procFSReader).CPUUsageRatio
     0.03s  0.78%  1.55%      0.03s  0.78%  github.com/sustainable-computing-io/kepler/internal/resource.(*procWrapper).CPUTime
         0     0%  1.55%      0.03s  0.78%  github.com/sustainable-computing-io/kepler/internal/resource.(*resourceInformer).updateProcessCache
         0     0%  1.55%      0.03s  0.78%  github.com/sustainable-computing-io/kepler/internal/resource.populateProcessFields
         0     0%  1.55%     -0.02s  0.52%  github.com/sustainable-computing-io/kepler/internal/monitor.(*PowerMonitor).Snapshot
         0     0%  1.55%     -0.02s  0.52%  github.com/sustainable-computing-io/kepler/internal/resource.(*resourceInformer).Refresh.func3
     0.01s  0.26%  1.81%     -0.02s  0.52%  github.com/sustainable-computing-io/kepler/internal/resource.(*resourceInformer).refreshNode
         0     0%  1.81%      0.01s  0.26%  github.com/sustainable-computing-io/kepler/internal/exporter/prometheus/collector.(*PlatformCollector).Collect
    -0.01s  0.26%  1.55%     -0.01s  0.26%  github.com/sustainable-computing-io/kepler/internal/exporter/prometheus/collector.(*PowerCollector).collectContainerMetrics
    -0.01s  0.26%  1.30%     -0.01s  0.26%  github.com/sustainable-computing-io/kepler/internal/exporter/prometheus/collector.(*PowerCollector).collectVMMetrics
     0.01s  0.26%  1.55%      0.01s  0.26%  github.com/sustainable-computing-io/kepler/internal/exporter/prometheus/collector.(*realProcFS).CPUInfo
    -0.01s  0.26%  1.30%     -0.01s  0.26%  github.com/sustainable-computing-io/kepler/internal/monitor.(*PowerMonitor).calculateNodePower
         0     0%  1.30%     -0.01s  0.26%  github.com/sustainable-computing-io/kepler/internal/monitor.(*PowerMonitor).ensureFreshData
     0.01s  0.26%  1.55%      0.01s  0.26%  github.com/sustainable-computing-io/kepler/internal/monitor.(*PowerMonitor).signalNewData
    -0.01s  0.26%  1.30%     -0.01s  0.26%  github.com/sustainable-computing-io/kepler/internal/monitor.(*Process).Clone (inline)
         0     0%  1.30%     -0.01s  0.26%  github.com/sustainable-computing-io/kepler/internal/monitor.(*Snapshot).Clone
    -0.01s  0.26%  1.04%     -0.01s  0.26%  github.com/sustainable-computing-io/kepler/internal/monitor.(*TerminatedResourceTracker[go.shape.*uint8]).Add
    -0.01s  0.26%  0.78%     -0.01s  0.26%  github.com/sustainable-computing-io/kepler/internal/monitor.newProcess (inline)
         0     0%  0.78%      0.01s  0.26%  github.com/sustainable-computing-io/kepler/internal/platform/redfish.(*PowerReader).ReadAll
     0.01s  0.26%  1.04%      0.01s  0.26%  github.com/sustainable-computing-io/kepler/internal/platform/redfish.(*PowerReader).readPowerSubsystem
         0     0%  1.04%      0.01s  0.26%  github.com/sustainable-computing-io/kepler/internal/platform/redfish.(*Service).Power
     0.01s  0.26%  1.30%      0.01s  0.26%  github.com/sustainable-computing-io/kepler/internal/resource.WrapProc (inline)
         0     0%  1.30%     -0.01s  0.26%  github.com/sustainable-computing-io/kepler/internal/resource.computeTypeInfoFromProc.func2
    -0.01s  0.26%  1.04%     -0.01s  0.26%  github.com/sustainable-computing-io/kepler/internal/resource.vmInfoFromCmdLine
         0     0%  1.04%     -0.01s  0.26%  github.com/sustainable-computing-io/kepler/internal/resource.vmInfoFromProc
💾 Memory Comparison with base Kepler (Inuse)
File: kepler
Build ID: 5db39f46b22029bb63b341bd3d16ced04fa36de2
Type: inuse_space
Time: 2026-05-03 21:49:31 UTC
Duration: 120.02s, Total samples = 12641.09kB 
Active filters:
   show=github.com/sustainable-computing-io
Showing nodes accounting for 1565.72kB, 12.39% of 12641.09kB total
      flat  flat%   sum%        cum   cum%
         0     0%     0%  2061.77kB 16.31%  github.com/sustainable-computing-io/kepler/internal/exporter/prometheus/collector.(*gpuInfoCollector).Collect
         0     0%     0%  1037.61kB  8.21%  github.com/sustainable-computing-io/kepler/internal/monitor.(*PowerMonitor).calculatePower
  525.43kB  4.16%  4.16%  1037.61kB  8.21%  github.com/sustainable-computing-io/kepler/internal/monitor.(*PowerMonitor).calculateProcessPower
         0     0%  4.16%  1037.61kB  8.21%  github.com/sustainable-computing-io/kepler/internal/monitor.(*PowerMonitor).ensureFreshData
         0     0%  4.16%  1037.61kB  8.21%  github.com/sustainable-computing-io/kepler/internal/monitor.(*PowerMonitor).refreshSnapshot
         0     0%  4.16%  1037.61kB  8.21%  github.com/sustainable-computing-io/kepler/internal/monitor.(*PowerMonitor).synchronizedPowerRefresh
         0     0%  4.16%  1037.61kB  8.21%  github.com/sustainable-computing-io/kepler/internal/monitor.(*PowerMonitor).synchronizedPowerRefresh.func1
 1024.09kB  8.10% 12.26%  1024.09kB  8.10%  github.com/sustainable-computing-io/kepler/internal/exporter/prometheus/collector.(*PowerCollector).collectProcessMetrics
         0     0% 12.26%   528.17kB  4.18%  github.com/sustainable-computing-io/kepler/internal/resource.computeTypeInfoFromProc.func1
  528.17kB  4.18% 16.44%   528.17kB  4.18%  github.com/sustainable-computing-io/kepler/internal/resource.containerInfoFromCgroupPaths
         0     0% 16.44%   528.17kB  4.18%  github.com/sustainable-computing-io/kepler/internal/resource.containerInfoFromProc
         0     0% 16.44%   525.47kB  4.16%  github.com/sustainable-computing-io/kepler/internal/monitor.(*PowerMonitor).Snapshot
         0     0% 16.44%  -512.21kB  4.05%  github.com/sustainable-computing-io/kepler/internal/exporter/prometheus/collector.(*PowerCollector).Collect
  512.18kB  4.05% 20.49%   512.18kB  4.05%  github.com/sustainable-computing-io/kepler/internal/monitor.newProcess (inline)
         0     0% 20.49%  -512.14kB  4.05%  github.com/sustainable-computing-io/kepler/internal/monitor.(*Process).Clone (inline)
         0     0% 20.49%  -512.14kB  4.05%  github.com/sustainable-computing-io/kepler/internal/monitor.(*Snapshot).Clone
 -512.14kB  4.05% 16.44%  -512.14kB  4.05%  maps.Copy[go.shape.map[github.com/sustainable-computing-io/kepler/internal/device.EnergyZone]github.com/sustainable-computing-io/kepler/internal/monitor.Usage,go.shape.map[github.com/sustainable-computing-io/kepler/internal/device.EnergyZone]github.com/sustainable-computing-io/kepler/internal/monitor.Usage,go.shape.interface { Energy ; Index int; MaxEnergy github.com/sustainable-computing-io/kepler/internal/device.Energy; Name string; Path string; Power  },go.shape.struct { EnergyTotal github.com/sustainable-computing-io/kepler/internal/device.Energy; Power github.com/sustainable-computing-io/kepler/internal/device.Power }] (inline)
 -512.01kB  4.05% 12.39%  -512.01kB  4.05%  github.com/sustainable-computing-io/kepler/internal/exporter/prometheus/collector.(*cpuInfoCollector).Collect
💾 Memory Comparison with base Kepler (Alloc)
File: kepler
Build ID: 5db39f46b22029bb63b341bd3d16ced04fa36de2
Type: alloc_space
Time: 2026-05-03 21:49:31 UTC
Duration: 120.02s, Total samples = 222842.72kB 
Active filters:
   show=github.com/sustainable-computing-io
Showing nodes accounting for -11324.44kB, 5.08% of 222842.72kB total
Dropped 1 node (cum <= 1114.21kB)
      flat  flat%   sum%        cum   cum%
         0     0%     0% -5112.47kB  2.29%  github.com/sustainable-computing-io/kepler/internal/exporter/prometheus/collector.(*gpuInfoCollector).Collect
         0     0%     0% -4631.97kB  2.08%  github.com/sustainable-computing-io/kepler/internal/monitor.(*PowerMonitor).scheduleNextCollection.func1
-4603.61kB  2.07%  2.07% -4603.61kB  2.07%  github.com/sustainable-computing-io/kepler/internal/exporter/prometheus/collector.(*PowerCollector).collectProcessMetrics
 -512.03kB  0.23%  2.30% -2647.21kB  1.19%  github.com/sustainable-computing-io/kepler/internal/exporter/prometheus/collector.(*cpuInfoCollector).Collect
         0     0%  2.30%  2578.15kB  1.16%  github.com/sustainable-computing-io/kepler/internal/monitor.(*PowerMonitor).ensureFreshData
-2135.18kB  0.96%  3.25% -2135.18kB  0.96%  github.com/sustainable-computing-io/kepler/internal/exporter/prometheus/collector.(*realProcFS).CPUInfo
-2062.64kB  0.93%  4.18% -2062.64kB  0.93%  github.com/sustainable-computing-io/kepler/internal/resource.(*procFSReader).CPUUsageRatio
         0     0%  4.18% -2062.64kB  0.93%  github.com/sustainable-computing-io/kepler/internal/resource.(*resourceInformer).Refresh.func3
         0     0%  4.18% -2062.64kB  0.93%  github.com/sustainable-computing-io/kepler/internal/resource.(*resourceInformer).refreshNode
         0     0%  4.18% -2053.82kB  0.92%  github.com/sustainable-computing-io/kepler/internal/monitor.(*PowerMonitor).calculatePower
         0     0%  4.18% -2053.82kB  0.92%  github.com/sustainable-computing-io/kepler/internal/monitor.(*PowerMonitor).refreshSnapshot
         0     0%  4.18% -2053.82kB  0.92%  github.com/sustainable-computing-io/kepler/internal/monitor.(*PowerMonitor).synchronizedPowerRefresh
         0     0%  4.18% -2053.82kB  0.92%  github.com/sustainable-computing-io/kepler/internal/monitor.(*PowerMonitor).synchronizedPowerRefresh.func1
 1584.50kB  0.71%  3.47%  1584.50kB  0.71%  github.com/sustainable-computing-io/kepler/internal/resource.containerInfoFromCgroupPaths
         0     0%  3.47%  1553.98kB   0.7%  github.com/sustainable-computing-io/kepler/internal/monitor.(*PowerMonitor).Snapshot
         0     0%  3.47%  1550.73kB   0.7%  github.com/sustainable-computing-io/kepler/internal/exporter/prometheus/collector.(*PowerCollector).Collect
         0     0%  3.47%  1072.25kB  0.48%  github.com/sustainable-computing-io/kepler/internal/resource.computeTypeInfoFromProc.func1
         0     0%  3.47%  1072.25kB  0.48%  github.com/sustainable-computing-io/kepler/internal/resource.containerInfoFromProc
-1042.07kB  0.47%  3.94% -1042.07kB  0.47%  github.com/sustainable-computing-io/kepler/internal/monitor.(*PowerMonitor).calculateProcessPower
 -512.02kB  0.23%  4.17% -1024.16kB  0.46%  github.com/sustainable-computing-io/kepler/internal/monitor.(*Process).Clone (inline)
         0     0%  4.17% -1024.16kB  0.46%  github.com/sustainable-computing-io/kepler/internal/monitor.(*Snapshot).Clone
         0     0%  4.17%  -514.38kB  0.23%  github.com/sustainable-computing-io/kepler/internal/device.(*AggregatedZone).Energy
 -514.38kB  0.23%  4.40%  -514.38kB  0.23%  github.com/sustainable-computing-io/kepler/internal/device.sysfsRaplZone.Energy
         0     0%  4.40%  -514.38kB  0.23%  github.com/sustainable-computing-io/kepler/internal/monitor.(*PowerMonitor).calculateNodePower
 -512.25kB  0.23%  4.63%  -512.25kB  0.23%  github.com/sustainable-computing-io/kepler/internal/resource.(*procWrapper).Cgroups
         0     0%  4.63%   512.20kB  0.23%  github.com/sustainable-computing-io/kepler/internal/exporter/prometheus/collector.(*PlatformCollector).Collect
         0     0%  4.63%   512.20kB  0.23%  github.com/sustainable-computing-io/kepler/internal/platform/redfish.(*PowerReader).ReadAll
  512.20kB  0.23%  4.40%   512.20kB  0.23%  github.com/sustainable-computing-io/kepler/internal/platform/redfish.(*PowerReader).readPowerSubsystem
         0     0%  4.40%   512.20kB  0.23%  github.com/sustainable-computing-io/kepler/internal/platform/redfish.(*Service).Power
 -512.14kB  0.23%  4.63%  -512.14kB  0.23%  maps.Copy[go.shape.map[github.com/sustainable-computing-io/kepler/internal/device.EnergyZone]github.com/sustainable-computing-io/kepler/internal/monitor.Usage,go.shape.map[github.com/sustainable-computing-io/kepler/internal/device.EnergyZone]github.com/sustainable-computing-io/kepler/internal/monitor.Usage,go.shape.interface { Energy ; Index int; MaxEnergy github.com/sustainable-computing-io/kepler/internal/device.Energy; Name string; Path string; Power  },go.shape.struct { EnergyTotal github.com/sustainable-computing-io/kepler/internal/device.Energy; Power github.com/sustainable-computing-io/kepler/internal/device.Power }] (inline)
 -512.12kB  0.23%  4.86%  -512.12kB  0.23%  github.com/sustainable-computing-io/kepler/internal/exporter/prometheus/collector.(*PowerCollector).collectContainerMetrics
 -512.06kB  0.23%  5.09%  -512.06kB  0.23%  github.com/sustainable-computing-io/kepler/internal/monitor.(*TerminatedResourceTracker[go.shape.*uint8]).Add
  512.06kB  0.23%  4.86%   512.06kB  0.23%  github.com/sustainable-computing-io/kepler/internal/monitor.newProcess (inline)
 -511.76kB  0.23%  5.09%  -511.76kB  0.23%  github.com/sustainable-computing-io/kepler/internal/resource.(*procWrapper).CPUTime
         0     0%  5.09%  -511.76kB  0.23%  github.com/sustainable-computing-io/kepler/internal/resource.(*resourceInformer).updateProcessCache
         0     0%  5.09%  -511.76kB  0.23%  github.com/sustainable-computing-io/kepler/internal/resource.populateProcessFields
         0     0%  5.09%  -497.38kB  0.22%  github.com/sustainable-computing-io/kepler/internal/resource.(*resourceInformer).Refresh
    9.04kB 0.0041%  5.08%  -497.38kB  0.22%  github.com/sustainable-computing-io/kepler/internal/resource.(*resourceInformer).refreshProcesses

⬇️ Download the Profiling artifacts from the Actions Summary page

📦 Artifact name: profile-artifacts-2468

🔧 Or use GitHub CLI to download artifacts:

gh run download 25291674840 -n profile-artifacts-2468

…eter

Extends `cpu_power_meter_test.go` to exercise the previously-uncovered
new lines flagged by codecov/patch:

- `buildCPUMeter` "rapl" case (with `cfg.Rapl.Zones` filter logging).
- `buildCPUMeter` "hwmon" case with experimental config (zones + chipRules).
- `buildCPUMeter` "hwmon" case with nil experimental config.
- `CreateCPUMeter` factory-error path (rapl with bogus sysfs).
- `CreateCPUMeter` Init-error path (hwmon with bogus sysfs).
- `CreateCPUMeter` aggregated-error path (rapl + hwmon both fail).

Tests use `/nonexistent/sysfs/path` to force factory or Init failures
without requiring real hardware.

Signed-off-by: nikimanoledaki <niki.manoledaki@grafana.com>
@github-actions github-actions Bot added the test Adding or updating tests label May 4, 2026
@github-actions
Copy link
Copy Markdown
Contributor

github-actions Bot commented May 4, 2026

⚠️ Config changes detected in this PR
Please make sure that the config changes are updated in the following places as part of this PR:

  • compose/default/kepler/etc/kepler/config.yaml

@github-actions
Copy link
Copy Markdown
Contributor

github-actions Bot commented May 4, 2026

📊 Profiling reports are ready to be viewed

⚠️ Variability in pprof CPU and Memory profiles
When comparing pprof profiles of Kepler versions, expect variability in CPU and memory. Focus only on significant, consistent differences.

💻 CPU Comparison with base Kepler
File: kepler
Build ID: 1aca6b39f0719a055c79f5d2d1903dbf4966aef9
Type: cpu
Time: 2026-05-04 05:45:12 UTC
Duration: 120s, Total samples = 3.97s ( 3.31%)
Active filters:
   show=github.com/sustainable-computing-io
Showing nodes accounting for 0.05s, 1.26% of 3.97s total
      flat  flat%   sum%        cum   cum%
         0     0%     0%     -0.10s  2.52%  github.com/sustainable-computing-io/kepler/internal/exporter/prometheus/collector.(*PowerCollector).Collect
         0     0%     0%      0.07s  1.76%  github.com/sustainable-computing-io/kepler/internal/exporter/prometheus/collector.(*gpuInfoCollector).Collect
         0     0%     0%     -0.06s  1.51%  github.com/sustainable-computing-io/kepler/internal/monitor.(*PowerMonitor).calculatePower
    -0.02s   0.5%   0.5%     -0.05s  1.26%  github.com/sustainable-computing-io/kepler/internal/monitor.(*PowerMonitor).calculateProcessPower
         0     0%   0.5%     -0.05s  1.26%  github.com/sustainable-computing-io/kepler/internal/monitor.(*PowerMonitor).refreshSnapshot
         0     0%   0.5%     -0.05s  1.26%  github.com/sustainable-computing-io/kepler/internal/monitor.(*PowerMonitor).scheduleNextCollection.func1
         0     0%   0.5%     -0.05s  1.26%  github.com/sustainable-computing-io/kepler/internal/monitor.(*PowerMonitor).synchronizedPowerRefresh
         0     0%   0.5%     -0.05s  1.26%  github.com/sustainable-computing-io/kepler/internal/monitor.(*PowerMonitor).synchronizedPowerRefresh.func1
         0     0%   0.5%      0.04s  1.01%  github.com/sustainable-computing-io/kepler/internal/exporter/prometheus/collector.(*PlatformCollector).Collect
         0     0%   0.5%      0.04s  1.01%  github.com/sustainable-computing-io/kepler/internal/platform/redfish.(*PowerReader).ReadAll
     0.04s  1.01%   0.5%      0.04s  1.01%  github.com/sustainable-computing-io/kepler/internal/platform/redfish.(*PowerReader).readPowerSubsystem
         0     0%   0.5%      0.04s  1.01%  github.com/sustainable-computing-io/kepler/internal/platform/redfish.(*Service).Power
     0.04s  1.01%  1.51%      0.04s  1.01%  github.com/sustainable-computing-io/kepler/internal/resource.(*procFSReader).CPUUsageRatio
         0     0%  1.51%     -0.04s  1.01%  github.com/sustainable-computing-io/kepler/internal/resource.(*resourceInformer).Refresh
         0     0%  1.51%      0.04s  1.01%  github.com/sustainable-computing-io/kepler/internal/resource.(*resourceInformer).Refresh.func3
         0     0%  1.51%      0.04s  1.01%  github.com/sustainable-computing-io/kepler/internal/resource.(*resourceInformer).refreshNode
         0     0%  1.51%     -0.04s  1.01%  github.com/sustainable-computing-io/kepler/internal/resource.(*resourceInformer).refreshProcesses
    -0.02s   0.5%  1.01%     -0.04s  1.01%  github.com/sustainable-computing-io/kepler/internal/resource.(*resourceInformer).updateProcessCache
         0     0%  1.01%      0.03s  0.76%  github.com/sustainable-computing-io/kepler/internal/exporter/prometheus/collector.(*cpuInfoCollector).Collect
     0.03s  0.76%  1.76%      0.03s  0.76%  github.com/sustainable-computing-io/kepler/internal/exporter/prometheus/collector.(*realProcFS).CPUInfo
     0.01s  0.25%  2.02%      0.03s  0.76%  github.com/sustainable-computing-io/kepler/internal/monitor.(*PowerMonitor).calculateNodePower
    -0.01s  0.25%  1.76%     -0.03s  0.76%  github.com/sustainable-computing-io/kepler/internal/monitor.(*Process).Clone (inline)
    -0.03s  0.76%  1.01%     -0.03s  0.76%  github.com/sustainable-computing-io/kepler/internal/resource.(*procWrapper).CPUTime
         0     0%  1.01%     -0.02s   0.5%  github.com/sustainable-computing-io/kepler/internal/monitor.(*PowerMonitor).Snapshot
     0.01s  0.25%  1.26%     -0.02s   0.5%  github.com/sustainable-computing-io/kepler/internal/monitor.(*Snapshot).Clone
    -0.02s   0.5%  0.76%     -0.02s   0.5%  github.com/sustainable-computing-io/kepler/internal/monitor.newProcess (inline)
         0     0%  0.76%     -0.02s   0.5%  github.com/sustainable-computing-io/kepler/internal/resource.populateProcessFields
    -0.02s   0.5%  0.25%     -0.02s   0.5%  maps.Copy[go.shape.map[github.com/sustainable-computing-io/kepler/internal/device.EnergyZone]github.com/sustainable-computing-io/kepler/internal/monitor.Usage,go.shape.map[github.com/sustainable-computing-io/kepler/internal/device.EnergyZone]github.com/sustainable-computing-io/kepler/internal/monitor.Usage,go.shape.interface { Energy ; Index int; MaxEnergy github.com/sustainable-computing-io/kepler/internal/device.Energy; Name string; Path string; Power  },go.shape.struct { EnergyTotal github.com/sustainable-computing-io/kepler/internal/device.Energy; Power github.com/sustainable-computing-io/kepler/internal/device.Power }] (inline)
         0     0%  0.25%      0.01s  0.25%  github.com/sustainable-computing-io/kepler/internal/device.(*AggregatedZone).Energy
     0.01s  0.25%   0.5%      0.01s  0.25%  github.com/sustainable-computing-io/kepler/internal/device.(*AggregatedZone).Power
     0.01s  0.25%  0.76%      0.01s  0.25%  github.com/sustainable-computing-io/kepler/internal/device.sysfsRaplZone.Energy
    -0.01s  0.25%   0.5%     -0.01s  0.25%  github.com/sustainable-computing-io/kepler/internal/exporter/prometheus/collector.(*PowerCollector).collectContainerMetrics
    -0.01s  0.25%  0.25%     -0.01s  0.25%  github.com/sustainable-computing-io/kepler/internal/exporter/prometheus/collector.(*PowerCollector).collectProcessMetrics
     0.01s  0.25%   0.5%      0.01s  0.25%  github.com/sustainable-computing-io/kepler/internal/exporter/prometheus/collector.(*PowerCollector).collectVMMetrics
     0.01s  0.25%  0.76%      0.01s  0.25%  github.com/sustainable-computing-io/kepler/internal/monitor.(*PowerMonitor).signalNewData
    -0.01s  0.25%   0.5%     -0.01s  0.25%  github.com/sustainable-computing-io/kepler/internal/monitor.(*TerminatedResourceTracker[go.shape.*uint8]).Add
     0.01s  0.25%  0.76%      0.01s  0.25%  github.com/sustainable-computing-io/kepler/internal/resource.(*procWrapper).CmdLine
     0.01s  0.25%  1.01%      0.01s  0.25%  github.com/sustainable-computing-io/kepler/internal/resource.computeTypeInfoFromProc
     0.01s  0.25%  1.26%      0.01s  0.25%  github.com/sustainable-computing-io/kepler/internal/resource.computeTypeInfoFromProc.func1
         0     0%  1.26%      0.01s  0.25%  github.com/sustainable-computing-io/kepler/internal/resource.computeTypeInfoFromProc.func2
         0     0%  1.26%      0.01s  0.25%  github.com/sustainable-computing-io/kepler/internal/resource.newProcess
         0     0%  1.26%      0.01s  0.25%  github.com/sustainable-computing-io/kepler/internal/resource.vmInfoFromProc
💾 Memory Comparison with base Kepler (Inuse)
File: kepler
Build ID: 1aca6b39f0719a055c79f5d2d1903dbf4966aef9
Type: inuse_space
Time: 2026-05-04 05:47:12 UTC
Duration: 120.02s, Total samples = 12785.60kB 
Active filters:
   show=github.com/sustainable-computing-io
Showing nodes accounting for 2488.91kB, 19.47% of 12785.60kB total
      flat  flat%   sum%        cum   cum%
         0     0%     0%  4096.35kB 32.04%  github.com/sustainable-computing-io/kepler/internal/exporter/prometheus/collector.(*PowerCollector).Collect
 2560.09kB 20.02% 20.02%  2560.09kB 20.02%  github.com/sustainable-computing-io/kepler/internal/exporter/prometheus/collector.(*PowerCollector).collectProcessMetrics
         0     0% 20.02%  1536.27kB 12.02%  github.com/sustainable-computing-io/kepler/internal/monitor.(*PowerMonitor).Snapshot
 1024.12kB  8.01% 28.03%  1536.27kB 12.02%  github.com/sustainable-computing-io/kepler/internal/monitor.(*Process).Clone (inline)
         0     0% 28.03%  1536.27kB 12.02%  github.com/sustainable-computing-io/kepler/internal/monitor.(*Snapshot).Clone
         0     0% 28.03% -1028.78kB  8.05%  github.com/sustainable-computing-io/kepler/internal/monitor.(*PowerMonitor).calculatePower
         0     0% 28.03% -1028.78kB  8.05%  github.com/sustainable-computing-io/kepler/internal/monitor.(*PowerMonitor).refreshSnapshot
         0     0% 28.03% -1028.78kB  8.05%  github.com/sustainable-computing-io/kepler/internal/monitor.(*PowerMonitor).scheduleNextCollection.func1
         0     0% 28.03% -1028.78kB  8.05%  github.com/sustainable-computing-io/kepler/internal/monitor.(*PowerMonitor).synchronizedPowerRefresh
         0     0% 28.03% -1028.78kB  8.05%  github.com/sustainable-computing-io/kepler/internal/monitor.(*PowerMonitor).synchronizedPowerRefresh.func1
         0     0% 28.03%  -578.66kB  4.53%  github.com/sustainable-computing-io/kepler/internal/exporter/prometheus/collector.(*cpuInfoCollector).Collect
 -578.66kB  4.53% 23.51%  -578.66kB  4.53%  github.com/sustainable-computing-io/kepler/internal/exporter/prometheus/collector.(*realProcFS).CPUInfo
         0     0% 23.51%   528.17kB  4.13%  github.com/sustainable-computing-io/kepler/internal/resource.computeTypeInfoFromProc.func1
         0     0% 23.51%  -528.17kB  4.13%  github.com/sustainable-computing-io/kepler/internal/resource.computeTypeInfoFromProc.func2
  528.17kB  4.13% 27.64%   528.17kB  4.13%  github.com/sustainable-computing-io/kepler/internal/resource.containerInfoFromCgroupPaths
         0     0% 27.64%   528.17kB  4.13%  github.com/sustainable-computing-io/kepler/internal/resource.containerInfoFromProc
 -528.17kB  4.13% 23.51%  -528.17kB  4.13%  github.com/sustainable-computing-io/kepler/internal/resource.vmInfoFromCmdLine
         0     0% 23.51%  -528.17kB  4.13%  github.com/sustainable-computing-io/kepler/internal/resource.vmInfoFromProc
 -516.64kB  4.04% 19.47%  -516.64kB  4.04%  github.com/sustainable-computing-io/kepler/internal/resource.(*procWrapper).CPUTime
         0     0% 19.47%  -516.64kB  4.04%  github.com/sustainable-computing-io/kepler/internal/resource.(*resourceInformer).Refresh
         0     0% 19.47%  -516.64kB  4.04%  github.com/sustainable-computing-io/kepler/internal/resource.(*resourceInformer).refreshProcesses
         0     0% 19.47%  -516.64kB  4.04%  github.com/sustainable-computing-io/kepler/internal/resource.(*resourceInformer).updateProcessCache
         0     0% 19.47%  -516.64kB  4.04%  github.com/sustainable-computing-io/kepler/internal/resource.populateProcessFields
         0     0% 19.47%  -512.14kB  4.01%  github.com/sustainable-computing-io/kepler/internal/monitor.(*PowerMonitor).calculateProcessPower
 -512.14kB  4.01% 15.46%  -512.14kB  4.01%  github.com/sustainable-computing-io/kepler/internal/monitor.newProcess (inline)
  512.14kB  4.01% 19.47%   512.14kB  4.01%  maps.Copy[go.shape.map[github.com/sustainable-computing-io/kepler/internal/device.EnergyZone]github.com/sustainable-computing-io/kepler/internal/monitor.Usage,go.shape.map[github.com/sustainable-computing-io/kepler/internal/device.EnergyZone]github.com/sustainable-computing-io/kepler/internal/monitor.Usage,go.shape.interface { Energy ; Index int; MaxEnergy github.com/sustainable-computing-io/kepler/internal/device.Energy; Name string; Path string; Power  },go.shape.struct { EnergyTotal github.com/sustainable-computing-io/kepler/internal/device.Energy; Power github.com/sustainable-computing-io/kepler/internal/device.Power }] (inline)
💾 Memory Comparison with base Kepler (Alloc)
File: kepler
Build ID: 1aca6b39f0719a055c79f5d2d1903dbf4966aef9
Type: alloc_space
Time: 2026-05-04 05:47:12 UTC
Duration: 120.02s, Total samples = 189.45MB 
Active filters:
   show=github.com/sustainable-computing-io
Showing nodes accounting for 9.71MB, 5.13% of 189.45MB total
Dropped 3 nodes (cum <= 0.95MB)
      flat  flat%   sum%        cum   cum%
         0     0%     0%     5.50MB  2.90%  github.com/sustainable-computing-io/kepler/internal/exporter/prometheus/collector.(*PowerCollector).Collect
         0     0%     0%     4.51MB  2.38%  github.com/sustainable-computing-io/kepler/internal/monitor.(*PowerMonitor).Snapshot
         0     0%     0%     3.20MB  1.69%  github.com/sustainable-computing-io/kepler/internal/exporter/prometheus/collector.(*cpuInfoCollector).Collect
    3.20MB  1.69%  1.69%     3.20MB  1.69%  github.com/sustainable-computing-io/kepler/internal/exporter/prometheus/collector.(*realProcFS).CPUInfo
       3MB  1.59%  3.27%        3MB  1.59%  github.com/sustainable-computing-io/kepler/internal/exporter/prometheus/collector.(*PowerCollector).collectProcessMetrics
       2MB  1.06%  4.33%        3MB  1.58%  github.com/sustainable-computing-io/kepler/internal/monitor.(*Process).Clone (inline)
         0     0%  4.33%     2.52MB  1.33%  github.com/sustainable-computing-io/kepler/internal/exporter/prometheus/collector.(*gpuInfoCollector).Collect
   -0.51MB  0.27%  4.06%     2.49MB  1.31%  github.com/sustainable-computing-io/kepler/internal/monitor.(*Snapshot).Clone
         0     0%  4.06%    -2.44MB  1.29%  github.com/sustainable-computing-io/kepler/internal/monitor.(*PowerMonitor).scheduleNextCollection.func1
         0     0%  4.06%     2.02MB  1.07%  github.com/sustainable-computing-io/kepler/internal/monitor.(*PowerMonitor).ensureFreshData
   -1.50MB  0.79%  3.27%    -1.50MB  0.79%  github.com/sustainable-computing-io/kepler/internal/monitor.newProcess (inline)
    1.48MB  0.78%  4.05%     1.48MB  0.78%  github.com/sustainable-computing-io/kepler/internal/resource.(*procFSReader).CPUUsageRatio
         0     0%  4.05%     1.48MB  0.78%  github.com/sustainable-computing-io/kepler/internal/resource.(*resourceInformer).Refresh.func3
         0     0%  4.05%     1.48MB  0.78%  github.com/sustainable-computing-io/kepler/internal/resource.(*resourceInformer).refreshNode
    1.05MB  0.55%  4.60%     1.05MB  0.55%  github.com/sustainable-computing-io/kepler/internal/resource.(*procFSReader).AllProcs
      -1MB  0.53%  4.07%       -1MB  0.53%  github.com/sustainable-computing-io/kepler/internal/resource.(*procWrapper).CPUTime
         0     0%  4.07%       -1MB  0.53%  github.com/sustainable-computing-io/kepler/internal/resource.(*resourceInformer).updateProcessCache
         0     0%  4.07%       -1MB  0.53%  github.com/sustainable-computing-io/kepler/internal/resource.populateProcessFields
       1MB  0.53%  4.60%        1MB  0.53%  maps.Copy[go.shape.map[github.com/sustainable-computing-io/kepler/internal/device.EnergyZone]github.com/sustainable-computing-io/kepler/internal/monitor.Usage,go.shape.map[github.com/sustainable-computing-io/kepler/internal/device.EnergyZone]github.com/sustainable-computing-io/kepler/internal/monitor.Usage,go.shape.interface { Energy ; Index int; MaxEnergy github.com/sustainable-computing-io/kepler/internal/device.Energy; Name string; Path string; Power  },go.shape.struct { EnergyTotal github.com/sustainable-computing-io/kepler/internal/device.Energy; Power github.com/sustainable-computing-io/kepler/internal/device.Power }] (inline)
         0     0%  4.60%     0.50MB  0.26%  github.com/sustainable-computing-io/kepler/internal/resource.computeTypeInfoFromProc.func1
    0.50MB  0.26%  4.86%     0.50MB  0.26%  github.com/sustainable-computing-io/kepler/internal/resource.containerInfoFromCgroupPaths
         0     0%  4.86%     0.50MB  0.26%  github.com/sustainable-computing-io/kepler/internal/resource.containerInfoFromProc
   -0.50MB  0.26%  4.60%    -0.50MB  0.26%  github.com/sustainable-computing-io/kepler/internal/monitor.(*TerminatedResourceTracker[go.shape.*uint8]).Add
         0     0%  4.60%    -0.50MB  0.26%  github.com/sustainable-computing-io/kepler/internal/device.(*AggregatedZone).Energy
   -0.50MB  0.26%  4.34%    -0.50MB  0.26%  github.com/sustainable-computing-io/kepler/internal/device.sysfsRaplZone.Energy
         0     0%  4.34%    -0.50MB  0.26%  github.com/sustainable-computing-io/kepler/internal/monitor.(*PowerMonitor).calculateNodePower
    0.50MB  0.26%  4.60%     0.50MB  0.26%  github.com/sustainable-computing-io/kepler/internal/exporter/prometheus/collector.(*PowerCollector).collectContainerMetrics
    0.50MB  0.26%  4.86%     0.50MB  0.26%  github.com/sustainable-computing-io/kepler/internal/monitor.(*Process).StringID (inline)
         0     0%  4.86%     0.49MB  0.26%  github.com/sustainable-computing-io/kepler/internal/resource.computeTypeInfoFromProc.func2
    0.49MB  0.26%  5.13%     0.49MB  0.26%  github.com/sustainable-computing-io/kepler/internal/resource.vmInfoFromCmdLine
         0     0%  5.13%     0.49MB  0.26%  github.com/sustainable-computing-io/kepler/internal/resource.vmInfoFromProc
         0     0%  5.13%    -0.42MB  0.22%  github.com/sustainable-computing-io/kepler/internal/monitor.(*PowerMonitor).calculatePower
         0     0%  5.13%    -0.42MB  0.22%  github.com/sustainable-computing-io/kepler/internal/monitor.(*PowerMonitor).refreshSnapshot
         0     0%  5.13%    -0.42MB  0.22%  github.com/sustainable-computing-io/kepler/internal/monitor.(*PowerMonitor).synchronizedPowerRefresh
         0     0%  5.13%    -0.42MB  0.22%  github.com/sustainable-computing-io/kepler/internal/monitor.(*PowerMonitor).synchronizedPowerRefresh.func1

⬇️ Download the Profiling artifacts from the Actions Summary page

📦 Artifact name: profile-artifacts-2468

🔧 Or use GitHub CLI to download artifacts:

gh run download 25303089672 -n profile-artifacts-2468

Three polish changes on top of the switch-based design:

- `ApplyCpuMeterDeprecations` rewritten as a `switch` for symmetry. The
  previous `if { ...; return } if { ... }` shape had a load-bearing early
  return that read as asymmetric.

- `cpu_power_meter.go` logging uses static messages with a `"meter"` attr
  instead of `fmt.Sprintf`-baked dynamic strings. Mirrors the existing
  convention in `gpu/registry.go` and the rest of `internal/device/`,
  and gives operators a queryable `"meter"` attr that didn't exist before.

- `config_cpu_test.go` collapses `TestCpuMetersDefault` and
  `TestApplyCpuMeterDeprecations` into a single `TestCpuMeters` table.
  The default case is one row where `setup` is a no-op. Drops the
  `io.Discard` boilerplate for `slog.DiscardHandler` (Go 1.24+).

Signed-off-by: nikimanoledaki <niki.manoledaki@grafana.com>
@github-actions github-actions Bot added the refactor Code refactoring without changing functionality label May 4, 2026
@github-actions
Copy link
Copy Markdown
Contributor

github-actions Bot commented May 4, 2026

⚠️ Config changes detected in this PR
Please make sure that the config changes are updated in the following places as part of this PR:

  • compose/default/kepler/etc/kepler/config.yaml

@nikimanoledaki nikimanoledaki requested review from SamYuan1990, kaiyiliu-strala, sunya-ch, vimalk78 and vprashar2929 and removed request for vimalk78 May 4, 2026 08:54
Comment thread internal/device/cpu_power_meter.go Outdated
Comment thread internal/device/cpu_power_meter_test.go
Comment thread config/config.go Outdated
Comment thread internal/device/cpu_power_meter.go
When all configured backends in `cpu.Meters` returned empty zones, the
soft-skip path discarded that signal and the function returned a misleading
"cpu.meters is empty" error. Append to `errs` on the empty-zones path so
the joined error reports each skipped backend by name. Handle the truly
empty-config case with an early return at the top of the function.

Addresses review feedback on #2468.

Signed-off-by: nikimanoledaki <niki.manoledaki@grafana.com>
Validate `cpu.meters` against the set of known backends in
`Config.Validate` and return an explicit error listing the valid names.
A typo such as `["rappl", "hwmon"]` is now caught at startup
instead of silently falling through to the next backend. The `Warn` in
`CreateCPUMeter` stays as defense-in-depth for callers that skip
validation.

Addresses review feedback on #2468.

Signed-off-by: nikimanoledaki <niki.manoledaki@grafana.com>
- Switch `discardLogger()` in `cpu_power_meter_test.go` to
  `slog.New(slog.DiscardHandler)` to match `config_cpu_test.go`.
  Drops the unused `io` import.
- Note in `ApplyCpuMeterDeprecations` that `fake` takes precedence
  over `hwmon` when both legacy keys are set.

Addresses review feedback on #2468.

Signed-off-by: nikimanoledaki <niki.manoledaki@grafana.com>
@github-actions github-actions Bot added the chore Routine tasks or maintenance label May 6, 2026
@github-actions
Copy link
Copy Markdown
Contributor

github-actions Bot commented May 6, 2026

⚠️ Config changes detected in this PR
Please make sure that the config changes are updated in the following places as part of this PR:

  • compose/default/kepler/etc/kepler/config.yaml

@github-actions
Copy link
Copy Markdown
Contributor

github-actions Bot commented May 6, 2026

📊 Profiling reports are ready to be viewed

⚠️ Variability in pprof CPU and Memory profiles
When comparing pprof profiles of Kepler versions, expect variability in CPU and memory. Focus only on significant, consistent differences.

💻 CPU Comparison with base Kepler
File: kepler
Build ID: 8b605f60f34228865d6153d23442b330467157ee
Type: cpu
Time: 2026-05-06 12:43:04 UTC
Duration: 120s, Total samples = 3.95s ( 3.29%)
Active filters:
   show=github.com/sustainable-computing-io
Showing nodes accounting for 0.03s, 0.76% of 3.95s total
Dropped 1 node (cum <= 0.02s)
      flat  flat%   sum%        cum   cum%
         0     0%     0%     -0.05s  1.27%  github.com/sustainable-computing-io/kepler/internal/monitor.(*PowerMonitor).scheduleNextCollection.func1
         0     0%     0%     -0.05s  1.27%  github.com/sustainable-computing-io/kepler/internal/resource.(*resourceInformer).refreshProcesses
     0.01s  0.25%  0.25%      0.04s  1.01%  github.com/sustainable-computing-io/kepler/internal/exporter/prometheus/collector.(*PlatformCollector).Collect
         0     0%  0.25%     -0.04s  1.01%  github.com/sustainable-computing-io/kepler/internal/monitor.(*PowerMonitor).calculatePower
         0     0%  0.25%     -0.04s  1.01%  github.com/sustainable-computing-io/kepler/internal/monitor.(*PowerMonitor).refreshSnapshot
         0     0%  0.25%     -0.04s  1.01%  github.com/sustainable-computing-io/kepler/internal/monitor.(*PowerMonitor).synchronizedPowerRefresh
         0     0%  0.25%     -0.04s  1.01%  github.com/sustainable-computing-io/kepler/internal/monitor.(*PowerMonitor).synchronizedPowerRefresh.func1
    -0.04s  1.01%  0.76%     -0.04s  1.01%  github.com/sustainable-computing-io/kepler/internal/resource.(*procWrapper).CPUTime
     0.01s  0.25%  0.51%     -0.04s  1.01%  github.com/sustainable-computing-io/kepler/internal/resource.(*resourceInformer).Refresh
         0     0%  0.51%     -0.04s  1.01%  github.com/sustainable-computing-io/kepler/internal/resource.(*resourceInformer).updateProcessCache
    -0.01s  0.25%  0.76%     -0.04s  1.01%  github.com/sustainable-computing-io/kepler/internal/resource.populateProcessFields
         0     0%  0.76%      0.03s  0.76%  github.com/sustainable-computing-io/kepler/internal/platform/redfish.(*PowerReader).ReadAll
     0.03s  0.76%     0%      0.03s  0.76%  github.com/sustainable-computing-io/kepler/internal/platform/redfish.(*PowerReader).readPowerSubsystem
         0     0%     0%      0.03s  0.76%  github.com/sustainable-computing-io/kepler/internal/platform/redfish.(*Service).Power
         0     0%     0%     -0.02s  0.51%  github.com/sustainable-computing-io/kepler/internal/exporter/prometheus/collector.(*PowerCollector).Collect
    -0.02s  0.51%  0.51%     -0.02s  0.51%  github.com/sustainable-computing-io/kepler/internal/exporter/prometheus/collector.(*PowerCollector).Collect.func1
         0     0%  0.51%      0.02s  0.51%  github.com/sustainable-computing-io/kepler/internal/exporter/prometheus/collector.(*cpuInfoCollector).Collect
         0     0%  0.51%      0.02s  0.51%  github.com/sustainable-computing-io/kepler/internal/exporter/prometheus/collector.(*gpuInfoCollector).Collect
     0.02s  0.51%     0%      0.02s  0.51%  github.com/sustainable-computing-io/kepler/internal/exporter/prometheus/collector.(*realProcFS).CPUInfo
         0     0%     0%      0.02s  0.51%  github.com/sustainable-computing-io/kepler/internal/monitor.(*PowerMonitor).Snapshot
     0.02s  0.51%  0.51%      0.02s  0.51%  github.com/sustainable-computing-io/kepler/internal/resource.(*procFSReader).CPUUsageRatio
         0     0%  0.51%      0.02s  0.51%  github.com/sustainable-computing-io/kepler/internal/resource.(*resourceInformer).Refresh.func3
         0     0%  0.51%      0.02s  0.51%  github.com/sustainable-computing-io/kepler/internal/resource.(*resourceInformer).refreshNode
         0     0%  0.51%      0.01s  0.25%  github.com/sustainable-computing-io/kepler/internal/monitor.(*PowerMonitor).ensureFreshData
    -0.01s  0.25%  0.25%     -0.01s  0.25%  github.com/sustainable-computing-io/kepler/internal/monitor.(*Process).StringID (inline)
     0.01s  0.25%  0.51%      0.01s  0.25%  github.com/sustainable-computing-io/kepler/internal/monitor.(*Snapshot).Clone
     0.01s  0.25%  0.76%      0.01s  0.25%  github.com/sustainable-computing-io/kepler/internal/monitor.(*TerminatedResourceTracker[go.shape.*uint8]).Add
    -0.01s  0.25%  0.51%     -0.01s  0.25%  github.com/sustainable-computing-io/kepler/internal/resource.(*procFSReader).AllProcs
    -0.01s  0.25%  0.25%     -0.01s  0.25%  github.com/sustainable-computing-io/kepler/internal/resource.(*procWrapper).Cgroups
     0.01s  0.25%  0.51%      0.01s  0.25%  github.com/sustainable-computing-io/kepler/internal/resource.(*procWrapper).Executable
         0     0%  0.51%     -0.01s  0.25%  github.com/sustainable-computing-io/kepler/internal/resource.computeTypeInfoFromProc.func1
         0     0%  0.51%     -0.01s  0.25%  github.com/sustainable-computing-io/kepler/internal/resource.containerInfoFromProc
     0.01s  0.25%  0.76%      0.01s  0.25%  maps.Copy[go.shape.map[github.com/sustainable-computing-io/kepler/internal/device.EnergyZone]github.com/sustainable-computing-io/kepler/internal/monitor.Usage,go.shape.map[github.com/sustainable-computing-io/kepler/internal/device.EnergyZone]github.com/sustainable-computing-io/kepler/internal/monitor.Usage,go.shape.interface { Energy ; Index int; MaxEnergy github.com/sustainable-computing-io/kepler/internal/device.Energy; Name string; Path string; Power  },go.shape.struct { EnergyTotal github.com/sustainable-computing-io/kepler/internal/device.Energy; Power github.com/sustainable-computing-io/kepler/internal/device.Power }] (inline)
💾 Memory Comparison with base Kepler (Inuse)
File: kepler
Build ID: 8b605f60f34228865d6153d23442b330467157ee
Type: inuse_space
Time: 2026-05-06 12:45:04 UTC
Duration: 120.02s, Total samples = 8544.16kB 
Active filters:
   show=github.com/sustainable-computing-io
Showing nodes accounting for 2582.76kB, 30.23% of 8544.16kB total
      flat  flat%   sum%        cum   cum%
         0     0%     0%  1554.09kB 18.19%  github.com/sustainable-computing-io/kepler/internal/monitor.(*PowerMonitor).calculatePower
         0     0%     0%  1554.09kB 18.19%  github.com/sustainable-computing-io/kepler/internal/monitor.(*PowerMonitor).refreshSnapshot
         0     0%     0%  1554.09kB 18.19%  github.com/sustainable-computing-io/kepler/internal/monitor.(*PowerMonitor).synchronizedPowerRefresh
         0     0%     0%  1554.09kB 18.19%  github.com/sustainable-computing-io/kepler/internal/monitor.(*PowerMonitor).synchronizedPowerRefresh.func1
         0     0%     0%  1037.57kB 12.14%  github.com/sustainable-computing-io/kepler/internal/monitor.(*PowerMonitor).scheduleNextCollection.func1
  525.43kB  6.15%  6.15%  1037.45kB 12.14%  github.com/sustainable-computing-io/kepler/internal/monitor.(*PowerMonitor).calculateProcessPower
 1028.67kB 12.04% 18.19%  1028.67kB 12.04%  github.com/sustainable-computing-io/kepler/internal/exporter/prometheus/collector.(*cpuInfoCollector).Collect
  516.64kB  6.05% 24.24%   516.64kB  6.05%  github.com/sustainable-computing-io/kepler/internal/resource.(*resourceInformer).Refresh
         0     0% 24.24%   516.52kB  6.05%  github.com/sustainable-computing-io/kepler/internal/exporter/prometheus/collector.(*gpuInfoCollector).Collect
         0     0% 24.24%   516.52kB  6.05%  github.com/sustainable-computing-io/kepler/internal/monitor.(*PowerMonitor).Snapshot
         0     0% 24.24%   516.52kB  6.05%  github.com/sustainable-computing-io/kepler/internal/monitor.(*PowerMonitor).ensureFreshData
  512.02kB  5.99% 30.23%   512.02kB  5.99%  github.com/sustainable-computing-io/kepler/internal/monitor.newProcess (inline)
💾 Memory Comparison with base Kepler (Alloc)
File: kepler
Build ID: 8b605f60f34228865d6153d23442b330467157ee
Type: alloc_space
Time: 2026-05-06 12:45:04 UTC
Duration: 120.02s, Total samples = 194.20MB 
Active filters:
   show=github.com/sustainable-computing-io
Showing nodes accounting for -10.39MB, 5.35% of 194.20MB total
Dropped 3 nodes (cum <= 0.97MB)
      flat  flat%   sum%        cum   cum%
         0     0%     0%   -12.59MB  6.48%  github.com/sustainable-computing-io/kepler/internal/exporter/prometheus/collector.(*PowerCollector).Collect
         0     0%     0%    -9.08MB  4.67%  github.com/sustainable-computing-io/kepler/internal/monitor.(*PowerMonitor).Snapshot
   -0.50MB  0.26%  0.26%    -9.04MB  4.65%  github.com/sustainable-computing-io/kepler/internal/monitor.(*PowerMonitor).refreshSnapshot
         0     0%  0.26%    -9.04MB  4.65%  github.com/sustainable-computing-io/kepler/internal/monitor.(*PowerMonitor).synchronizedPowerRefresh
         0     0%  0.26%    -9.04MB  4.65%  github.com/sustainable-computing-io/kepler/internal/monitor.(*PowerMonitor).synchronizedPowerRefresh.func1
         0     0%  0.26%    -8.54MB  4.40%  github.com/sustainable-computing-io/kepler/internal/monitor.(*PowerMonitor).calculatePower
   -1.02MB  0.52%  0.78%    -7.04MB  3.62%  github.com/sustainable-computing-io/kepler/internal/resource.(*resourceInformer).refreshProcesses
         0     0%  0.78%    -6.05MB  3.12%  github.com/sustainable-computing-io/kepler/internal/monitor.(*PowerMonitor).ensureFreshData
       1MB  0.52%  0.26%    -6.03MB  3.11%  github.com/sustainable-computing-io/kepler/internal/resource.(*resourceInformer).Refresh
   -5.50MB  2.83%  3.10%    -5.50MB  2.83%  github.com/sustainable-computing-io/kepler/internal/resource.(*procWrapper).CPUTime
         0     0%  3.10%       -5MB  2.58%  github.com/sustainable-computing-io/kepler/internal/resource.(*resourceInformer).updateProcessCache
         0     0%  3.10%       -5MB  2.58%  github.com/sustainable-computing-io/kepler/internal/resource.populateProcessFields
   -1.03MB  0.53%  3.63%    -3.03MB  1.56%  github.com/sustainable-computing-io/kepler/internal/monitor.(*Snapshot).Clone
         0     0%  3.63%    -2.99MB  1.54%  github.com/sustainable-computing-io/kepler/internal/monitor.(*PowerMonitor).scheduleNextCollection.func1
   -2.51MB  1.29%  4.92%    -2.51MB  1.29%  github.com/sustainable-computing-io/kepler/internal/exporter/prometheus/collector.(*PowerCollector).collectProcessMetrics
         0     0%  4.92%     2.05MB  1.06%  github.com/sustainable-computing-io/kepler/internal/resource.computeTypeInfoFromProc.func1
         0     0%  4.92%     2.05MB  1.06%  github.com/sustainable-computing-io/kepler/internal/resource.containerInfoFromProc
         0     0%  4.92%       -2MB  1.03%  github.com/sustainable-computing-io/kepler/internal/monitor.(*PowerMonitor).calculateProcessPower
   -1.50MB  0.77%  5.69%       -2MB  1.03%  github.com/sustainable-computing-io/kepler/internal/monitor.(*Process).Clone (inline)
      -2MB  1.03%  6.72%       -2MB  1.03%  github.com/sustainable-computing-io/kepler/internal/monitor.newProcess (inline)
    1.55MB   0.8%  5.92%     1.55MB   0.8%  github.com/sustainable-computing-io/kepler/internal/resource.containerInfoFromCgroupPaths
    1.53MB  0.79%  5.13%     1.53MB  0.79%  github.com/sustainable-computing-io/kepler/internal/resource.(*procFSReader).CPUUsageRatio
         0     0%  5.13%     1.53MB  0.79%  github.com/sustainable-computing-io/kepler/internal/resource.(*resourceInformer).Refresh.func3
         0     0%  5.13%     1.53MB  0.79%  github.com/sustainable-computing-io/kepler/internal/resource.(*resourceInformer).refreshNode
    0.50MB  0.26%  4.88%     1.10MB  0.57%  github.com/sustainable-computing-io/kepler/internal/exporter/prometheus/collector.(*cpuInfoCollector).Collect
   -1.02MB  0.52%  5.40%    -1.02MB  0.52%  github.com/sustainable-computing-io/kepler/internal/resource.(*procFSReader).AllProcs
    0.60MB  0.31%  5.09%     0.60MB  0.31%  github.com/sustainable-computing-io/kepler/internal/exporter/prometheus/collector.(*realProcFS).CPUInfo
         0     0%  5.09%    -0.50MB  0.26%  github.com/sustainable-computing-io/kepler/internal/resource.computeTypeInfoFromProc.func2
   -0.50MB  0.26%  5.35%    -0.50MB  0.26%  github.com/sustainable-computing-io/kepler/internal/resource.vmInfoFromCmdLine
         0     0%  5.35%    -0.50MB  0.26%  github.com/sustainable-computing-io/kepler/internal/resource.vmInfoFromProc
         0     0%  5.35%     0.50MB  0.26%  github.com/sustainable-computing-io/kepler/internal/exporter/prometheus/collector.(*gpuInfoCollector).Collect
    0.50MB  0.26%  5.09%     0.50MB  0.26%  github.com/sustainable-computing-io/kepler/internal/resource.(*procWrapper).Cgroups
    0.50MB  0.26%  4.84%     0.50MB  0.26%  github.com/sustainable-computing-io/kepler/internal/resource.(*procWrapper).Comm
         0     0%  4.84%     0.50MB  0.26%  github.com/sustainable-computing-io/kepler/internal/exporter/prometheus/collector.(*PlatformCollector).Collect
         0     0%  4.84%     0.50MB  0.26%  github.com/sustainable-computing-io/kepler/internal/platform/redfish.(*PowerReader).ReadAll
    0.50MB  0.26%  4.58%     0.50MB  0.26%  github.com/sustainable-computing-io/kepler/internal/platform/redfish.(*PowerReader).readPowerSubsystem
         0     0%  4.58%     0.50MB  0.26%  github.com/sustainable-computing-io/kepler/internal/platform/redfish.(*Service).Power
   -0.50MB  0.26%  4.84%    -0.50MB  0.26%  maps.Copy[go.shape.map[github.com/sustainable-computing-io/kepler/internal/device.EnergyZone]github.com/sustainable-computing-io/kepler/internal/monitor.Usage,go.shape.map[github.com/sustainable-computing-io/kepler/internal/device.EnergyZone]github.com/sustainable-computing-io/kepler/internal/monitor.Usage,go.shape.interface { Energy ; Index int; MaxEnergy github.com/sustainable-computing-io/kepler/internal/device.Energy; Name string; Path string; Power  },go.shape.struct { EnergyTotal github.com/sustainable-computing-io/kepler/internal/device.Energy; Power github.com/sustainable-computing-io/kepler/internal/device.Power }] (inline)
   -0.50MB  0.26%  5.09%    -0.50MB  0.26%  github.com/sustainable-computing-io/kepler/internal/monitor.(*PowerMonitor).calculatePodPower
   -0.50MB  0.26%  5.35%    -0.50MB  0.26%  github.com/sustainable-computing-io/kepler/internal/exporter/prometheus/collector.(*PowerCollector).collectContainerMetrics
    0.50MB  0.26%  5.09%     0.50MB  0.26%  github.com/sustainable-computing-io/kepler/internal/monitor.(*Process).StringID (inline)
   -0.50MB  0.26%  5.35%    -0.50MB  0.26%  github.com/sustainable-computing-io/kepler/internal/monitor.(*TerminatedResourceTracker[go.shape.*uint8]).Add

⬇️ Download the Profiling artifacts from the Actions Summary page

📦 Artifact name: profile-artifacts-2468

🔧 Or use GitHub CLI to download artifacts:

gh run download 25435843659 -n profile-artifacts-2468

@nikimanoledaki nikimanoledaki enabled auto-merge May 12, 2026 07:46
@nikimanoledaki nikimanoledaki disabled auto-merge May 12, 2026 07:46
Comment thread internal/device/cpu_power_meter.go
Copy link
Copy Markdown
Collaborator

@vimalk78 vimalk78 left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

minor comment on the new config name already in the proposal PR, can be addressed in later PRs.

@vimalk78 vimalk78 enabled auto-merge (squash) May 12, 2026 08:45
@vimalk78 vimalk78 merged commit 55f6f4d into main May 12, 2026
30 checks passed
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

chore Routine tasks or maintenance feat A new feature or enhancement fix A bug fix refactor Code refactoring without changing functionality test Adding or updating tests

Projects

None yet

Development

Successfully merging this pull request may close these issues.

4 participants