Skip to content

Conversation

@KaiyiLiu1234
Copy link
Collaborator

Implemented hwmon device reader to allow Kepler to acquire power metrics (watts) from hwmon subsystem. Hwmon enablement added as an experimental feature in config.

Precise changes:

  • hwmon subsystem reader added to devices called hwmon_power_meter.go
  • Kepler Config updated to include experimental field called Hwmon with Enable boolean

@github-actions github-actions bot added the feat A new feature or enhancement label Dec 18, 2025
@github-actions
Copy link
Contributor

⚠️ 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/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

codecov bot commented Dec 18, 2025

Codecov Report

❌ Patch coverage is 72.81879% with 81 lines in your changes missing coverage. Please review.
✅ Project coverage is 89.52%. Comparing base (ef60d4c) to head (0fc4ee5).
⚠️ Report is 1 commits behind head on main.

Files with missing lines Patch % Lines
internal/device/hwmon_power_meter.go 69.37% 57 Missing and 22 partials ⚠️
config/config.go 95.00% 1 Missing and 1 partial ⚠️
Additional details and impacted files
@@            Coverage Diff             @@
##             main    #2372      +/-   ##
==========================================
- Coverage   90.71%   89.52%   -1.19%     
==========================================
  Files          44       45       +1     
  Lines        3865     4163     +298     
==========================================
+ Hits         3506     3727     +221     
- Misses        269      323      +54     
- Partials       90      113      +23     

☔ 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
Contributor

⚠️ 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/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

@KaiyiLiu1234
Copy link
Collaborator Author

TODO: Update documentation to include experimental hwmon enable feature.

@KaiyiLiu1234
Copy link
Collaborator Author

TODO: Add unit tests for config.go

@github-actions
Copy link
Contributor

📊 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: 975a377695623808d7a3683442093a6ac0c4b412
Type: cpu
Time: 2025-12-18 20:28:38 UTC
Duration: 120s, Total samples = 4.14s ( 3.45%)
Active filters:
   show=github.com/sustainable-computing-io
Showing nodes accounting for -0.04s, 0.97% of 4.14s total
      flat  flat%   sum%        cum   cum%
    -0.05s  1.21%  1.21%     -0.05s  1.21%  github.com/sustainable-computing-io/kepler/internal/exporter/prometheus/collector.(*realProcFS).CPUInfo
     0.01s  0.24%  0.97%     -0.04s  0.97%  github.com/sustainable-computing-io/kepler/internal/exporter/prometheus/collector.(*cpuInfoCollector).Collect
         0     0%  0.97%      0.03s  0.72%  github.com/sustainable-computing-io/kepler/internal/exporter/prometheus/collector.(*PlatformCollector).Collect
         0     0%  0.97%     -0.03s  0.72%  github.com/sustainable-computing-io/kepler/internal/monitor.(*PowerMonitor).scheduleNextCollection.func1
         0     0%  0.97%      0.03s  0.72%  github.com/sustainable-computing-io/kepler/internal/platform/redfish.(*PowerReader).ReadAll
     0.03s  0.72%  0.24%      0.03s  0.72%  github.com/sustainable-computing-io/kepler/internal/platform/redfish.(*PowerReader).readPowerSubsystem
         0     0%  0.24%      0.03s  0.72%  github.com/sustainable-computing-io/kepler/internal/platform/redfish.(*Service).Power
         0     0%  0.24%     -0.03s  0.72%  github.com/sustainable-computing-io/kepler/internal/resource.(*resourceInformer).updateProcessCache
    -0.01s  0.24%  0.48%     -0.03s  0.72%  github.com/sustainable-computing-io/kepler/internal/resource.populateProcessFields
         0     0%  0.48%      0.02s  0.48%  github.com/sustainable-computing-io/kepler/internal/monitor.(*PowerMonitor).Snapshot
         0     0%  0.48%     -0.02s  0.48%  github.com/sustainable-computing-io/kepler/internal/monitor.(*PowerMonitor).calculatePower
         0     0%  0.48%     -0.02s  0.48%  github.com/sustainable-computing-io/kepler/internal/monitor.(*PowerMonitor).refreshSnapshot
         0     0%  0.48%     -0.02s  0.48%  github.com/sustainable-computing-io/kepler/internal/monitor.(*PowerMonitor).synchronizedPowerRefresh
         0     0%  0.48%     -0.02s  0.48%  github.com/sustainable-computing-io/kepler/internal/monitor.(*PowerMonitor).synchronizedPowerRefresh.func1
     0.02s  0.48%     0%      0.02s  0.48%  github.com/sustainable-computing-io/kepler/internal/monitor.newProcess (inline)
     0.02s  0.48%  0.48%      0.02s  0.48%  github.com/sustainable-computing-io/kepler/internal/resource.(*procFSReader).AllProcs
    -0.02s  0.48%     0%     -0.02s  0.48%  github.com/sustainable-computing-io/kepler/internal/resource.(*procWrapper).CPUTime
         0     0%     0%     -0.02s  0.48%  github.com/sustainable-computing-io/kepler/internal/resource.(*resourceInformer).Refresh
    -0.01s  0.24%  0.24%     -0.02s  0.48%  github.com/sustainable-computing-io/kepler/internal/resource.(*resourceInformer).refreshProcesses
         0     0%  0.24%      0.01s  0.24%  github.com/sustainable-computing-io/kepler/internal/exporter/prometheus/collector.(*PowerCollector).Collect
    -0.01s  0.24%  0.48%     -0.01s  0.24%  github.com/sustainable-computing-io/kepler/internal/exporter/prometheus/collector.(*PowerCollector).collectProcessMetrics
    -0.01s  0.24%  0.72%     -0.01s  0.24%  github.com/sustainable-computing-io/kepler/internal/monitor.(*PowerMonitor).calculateNodePower
         0     0%  0.72%      0.01s  0.24%  github.com/sustainable-computing-io/kepler/internal/monitor.(*PowerMonitor).calculateProcessPower
         0     0%  0.72%      0.01s  0.24%  github.com/sustainable-computing-io/kepler/internal/monitor.(*PowerMonitor).ensureFreshData
         0     0%  0.72%      0.01s  0.24%  github.com/sustainable-computing-io/kepler/internal/monitor.(*Process).Clone (inline)
         0     0%  0.72%      0.01s  0.24%  github.com/sustainable-computing-io/kepler/internal/monitor.(*Snapshot).Clone
    -0.01s  0.24%  0.97%     -0.01s  0.24%  github.com/sustainable-computing-io/kepler/internal/monitor.(*TerminatedResourceTracker[go.shape.*uint8]).Add
         0     0%  0.97%     -0.01s  0.24%  github.com/sustainable-computing-io/kepler/internal/resource.(*resourceInformer).Refresh.func3
    -0.01s  0.24%  1.21%     -0.01s  0.24%  github.com/sustainable-computing-io/kepler/internal/resource.(*resourceInformer).refreshNode
         0     0%  1.21%      0.01s  0.24%  github.com/sustainable-computing-io/kepler/internal/resource.newProcess
     0.01s  0.24%  0.97%      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: 975a377695623808d7a3683442093a6ac0c4b412
Type: inuse_space
Time: 2025-12-18 20:30:38 UTC
Duration: 120.02s, Total samples = 7.89MB 
Active filters:
   show=github.com/sustainable-computing-io
Showing nodes accounting for 0.01MB, 0.17% of 7.89MB total
      flat  flat%   sum%        cum   cum%
         0     0%     0%     1.01MB 12.84%  github.com/sustainable-computing-io/kepler/internal/monitor.(*PowerMonitor).Snapshot
    0.51MB  6.50%  6.50%     1.01MB 12.84%  github.com/sustainable-computing-io/kepler/internal/monitor.(*Snapshot).Clone
         0     0%  6.50%     0.50MB  6.34%  github.com/sustainable-computing-io/kepler/internal/monitor.(*Process).Clone (inline)
    0.50MB  6.34% 12.84%     0.50MB  6.34%  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  6.34%  6.50%    -0.50MB  6.34%  github.com/sustainable-computing-io/kepler/internal/exporter/prometheus/collector.(*PowerCollector).collectProcessMetrics
   -0.50MB  6.34%  0.17%    -0.50MB  6.34%  github.com/sustainable-computing-io/kepler/internal/exporter/prometheus/collector.(*PowerCollector).collectNodeMetrics
         0     0%  0.17%     0.01MB  0.17%  github.com/sustainable-computing-io/kepler/internal/exporter/prometheus/collector.(*PowerCollector).Collect
💾 Memory Comparison with base Kepler (Alloc)
File: kepler
Build ID: 975a377695623808d7a3683442093a6ac0c4b412
Type: alloc_space
Time: 2025-12-18 20:30:38 UTC
Duration: 120.02s, Total samples = 191.84MB 
Active filters:
   show=github.com/sustainable-computing-io
Showing nodes accounting for -2.84MB, 1.48% of 191.84MB total
      flat  flat%   sum%        cum   cum%
    1.03MB  0.53%  0.53%     4.03MB  2.10%  github.com/sustainable-computing-io/kepler/internal/monitor.(*PowerMonitor).calculateProcessPower
      -4MB  2.08%  1.55%       -4MB  2.08%  github.com/sustainable-computing-io/kepler/internal/resource.(*procWrapper).CPUTime
         0     0%  1.55%       -4MB  2.08%  github.com/sustainable-computing-io/kepler/internal/resource.(*resourceInformer).updateProcessCache
         0     0%  1.55%       -4MB  2.08%  github.com/sustainable-computing-io/kepler/internal/resource.populateProcessFields
   -0.50MB  0.26%  1.81%    -3.98MB  2.07%  github.com/sustainable-computing-io/kepler/internal/resource.(*resourceInformer).Refresh
    3.50MB  1.82% 0.014%     3.50MB  1.82%  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)
    1.53MB   0.8%  0.81%    -3.47MB  1.81%  github.com/sustainable-computing-io/kepler/internal/resource.(*resourceInformer).refreshProcesses
   -3.45MB  1.80%  0.99%    -3.45MB  1.80%  github.com/sustainable-computing-io/kepler/internal/exporter/prometheus/collector.(*realProcFS).CPUInfo
       3MB  1.56%  0.57%        3MB  1.56%  github.com/sustainable-computing-io/kepler/internal/monitor.newProcess (inline)
    0.50MB  0.26%  0.83%    -2.95MB  1.54%  github.com/sustainable-computing-io/kepler/internal/exporter/prometheus/collector.(*cpuInfoCollector).Collect
   -1.50MB  0.78% 0.053%        2MB  1.04%  github.com/sustainable-computing-io/kepler/internal/monitor.(*Process).Clone (inline)
         0     0% 0.053%        2MB  1.04%  github.com/sustainable-computing-io/kepler/internal/monitor.(*Snapshot).Clone
    1.55MB  0.81%  0.86%     1.55MB  0.81%  github.com/sustainable-computing-io/kepler/internal/resource.containerInfoFromCgroupPaths
         0     0%  0.86%     1.54MB   0.8%  github.com/sustainable-computing-io/kepler/internal/monitor.(*PowerMonitor).Snapshot
      -1MB  0.52%  0.34%       -1MB  0.52%  github.com/sustainable-computing-io/kepler/internal/resource.(*procWrapper).Cgroups
   -1.50MB  0.78%  0.45%       -1MB  0.52%  github.com/sustainable-computing-io/kepler/internal/resource.(*procFSReader).AllProcs
      -1MB  0.52%  0.97%       -1MB  0.52%  github.com/sustainable-computing-io/kepler/internal/exporter/prometheus/collector.(*PowerCollector).collectProcessMetrics
         0     0%  0.97%    -0.95MB   0.5%  github.com/sustainable-computing-io/kepler/internal/monitor.(*PowerMonitor).refreshSnapshot
         0     0%  0.97%    -0.95MB   0.5%  github.com/sustainable-computing-io/kepler/internal/monitor.(*PowerMonitor).synchronizedPowerRefresh
         0     0%  0.97%    -0.95MB   0.5%  github.com/sustainable-computing-io/kepler/internal/monitor.(*PowerMonitor).synchronizedPowerRefresh.func1
         0     0%  0.97%     0.54MB  0.28%  github.com/sustainable-computing-io/kepler/internal/resource.computeTypeInfoFromProc.func1
         0     0%  0.97%     0.54MB  0.28%  github.com/sustainable-computing-io/kepler/internal/resource.containerInfoFromProc
         0     0%  0.97%     0.54MB  0.28%  github.com/sustainable-computing-io/kepler/internal/exporter/prometheus/collector.(*PowerCollector).Collect
         0     0%  0.97%    -0.52MB  0.27%  github.com/sustainable-computing-io/kepler/internal/resource.computeTypeInfoFromProc.func2
   -0.52MB  0.27%  1.24%    -0.52MB  0.27%  github.com/sustainable-computing-io/kepler/internal/resource.vmInfoFromCmdLine
         0     0%  1.24%    -0.52MB  0.27%  github.com/sustainable-computing-io/kepler/internal/resource.vmInfoFromProc
         0     0%  1.24%     0.50MB  0.26%  github.com/sustainable-computing-io/kepler/internal/exporter/prometheus/collector.(*PlatformCollector).Collect
         0     0%  1.24%     0.50MB  0.26%  github.com/sustainable-computing-io/kepler/internal/platform/redfish.(*PowerReader).ReadAll
    0.50MB  0.26%  0.98%     0.50MB  0.26%  github.com/sustainable-computing-io/kepler/internal/platform/redfish.(*PowerReader).readPowerSubsystem
         0     0%  0.98%     0.50MB  0.26%  github.com/sustainable-computing-io/kepler/internal/platform/redfish.(*Service).Power
   -0.50MB  0.26%  1.24%    -0.50MB  0.26%  github.com/sustainable-computing-io/kepler/internal/monitor.(*PowerMonitor).calculateContainerPower
   -0.50MB  0.26%  1.50%    -0.50MB  0.26%  github.com/sustainable-computing-io/kepler/internal/logger.handlerForFormat.func1
         0     0%  1.50%    -0.50MB  0.26%  github.com/sustainable-computing-io/kepler/internal/monitor.(*PowerMonitor).refreshSnapshot.func1
    0.50MB  0.26%  1.24%     0.50MB  0.26%  github.com/sustainable-computing-io/kepler/internal/resource.WrapProc (inline)
         0     0%  1.24%    -0.49MB  0.25%  github.com/sustainable-computing-io/kepler/internal/monitor.(*PowerMonitor).scheduleNextCollection.func1
   -0.47MB  0.25%  1.48%    -0.47MB  0.25%  github.com/sustainable-computing-io/kepler/internal/resource.(*procFSReader).CPUUsageRatio
         0     0%  1.48%    -0.47MB  0.25%  github.com/sustainable-computing-io/kepler/internal/resource.(*resourceInformer).Refresh.func3
         0     0%  1.48%    -0.47MB  0.25%  github.com/sustainable-computing-io/kepler/internal/resource.(*resourceInformer).refreshNode
         0     0%  1.48%    -0.46MB  0.24%  github.com/sustainable-computing-io/kepler/internal/monitor.(*PowerMonitor).ensureFreshData
         0     0%  1.48%    -0.45MB  0.24%  github.com/sustainable-computing-io/kepler/internal/monitor.(*PowerMonitor).calculatePower

⬇️ Download the Profiling artifacts from the Actions Summary page

📦 Artifact name: profile-artifacts-2372

🔧 Or use GitHub CLI to download artifacts:

gh run download 20350200717 -n profile-artifacts-2372

@github-actions
Copy link
Contributor

📊 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: fcc4efe36267ec2a5d7e3c520df77ac313d110d6
Type: cpu
Time: 2025-12-18 20:31:59 UTC
Duration: 120s, Total samples = 4.12s ( 3.43%)
Active filters:
   show=github.com/sustainable-computing-io
Showing nodes accounting for -0.05s, 1.21% of 4.12s total
      flat  flat%   sum%        cum   cum%
         0     0%     0%     -0.05s  1.21%  github.com/sustainable-computing-io/kepler/internal/resource.(*resourceInformer).Refresh
         0     0%     0%     -0.05s  1.21%  github.com/sustainable-computing-io/kepler/internal/resource.(*resourceInformer).refreshProcesses
    -0.04s  0.97%  0.97%     -0.04s  0.97%  github.com/sustainable-computing-io/kepler/internal/exporter/prometheus/collector.(*PowerCollector).collectProcessMetrics
         0     0%  0.97%      0.04s  0.97%  github.com/sustainable-computing-io/kepler/internal/monitor.(*PowerMonitor).Snapshot
         0     0%  0.97%     -0.03s  0.73%  github.com/sustainable-computing-io/kepler/internal/exporter/prometheus/collector.(*cpuInfoCollector).Collect
    -0.03s  0.73%  1.70%     -0.03s  0.73%  github.com/sustainable-computing-io/kepler/internal/exporter/prometheus/collector.(*realProcFS).CPUInfo
         0     0%  1.70%     -0.03s  0.73%  github.com/sustainable-computing-io/kepler/internal/monitor.(*PowerMonitor).scheduleNextCollection.func1
     0.02s  0.49%  1.21%      0.03s  0.73%  github.com/sustainable-computing-io/kepler/internal/monitor.(*Process).Clone (inline)
     0.03s  0.73%  0.49%      0.03s  0.73%  github.com/sustainable-computing-io/kepler/internal/resource.(*procFSReader).CPUUsageRatio
         0     0%  0.49%      0.03s  0.73%  github.com/sustainable-computing-io/kepler/internal/resource.(*resourceInformer).refreshNode
         0     0%  0.49%     -0.03s  0.73%  github.com/sustainable-computing-io/kepler/internal/resource.(*resourceInformer).updateProcessCache
    -0.01s  0.24%  0.73%     -0.03s  0.73%  github.com/sustainable-computing-io/kepler/internal/resource.populateProcessFields
         0     0%  0.73%     -0.02s  0.49%  github.com/sustainable-computing-io/kepler/internal/monitor.(*PowerMonitor).calculatePower
         0     0%  0.73%      0.02s  0.49%  github.com/sustainable-computing-io/kepler/internal/monitor.(*PowerMonitor).calculateProcessPower
         0     0%  0.73%      0.02s  0.49%  github.com/sustainable-computing-io/kepler/internal/monitor.(*PowerMonitor).ensureFreshData
         0     0%  0.73%      0.02s  0.49%  github.com/sustainable-computing-io/kepler/internal/monitor.(*Snapshot).Clone
    -0.02s  0.49%  1.21%     -0.02s  0.49%  github.com/sustainable-computing-io/kepler/internal/resource.(*procFSReader).AllProcs
    -0.02s  0.49%  1.70%     -0.02s  0.49%  github.com/sustainable-computing-io/kepler/internal/resource.(*procWrapper).CPUTime
    -0.01s  0.24%  1.94%      0.02s  0.49%  github.com/sustainable-computing-io/kepler/internal/resource.(*resourceInformer).Refresh.func3
         0     0%  1.94%      0.01s  0.24%  github.com/sustainable-computing-io/kepler/internal/exporter/prometheus/collector.(*PlatformCollector).Collect
    -0.01s  0.24%  2.18%     -0.01s  0.24%  github.com/sustainable-computing-io/kepler/internal/exporter/prometheus/collector.(*PowerCollector).Collect
     0.01s  0.24%  1.94%      0.01s  0.24%  github.com/sustainable-computing-io/kepler/internal/monitor.(*PowerMonitor).calculateNodePower
     0.01s  0.24%  1.70%     -0.01s  0.24%  github.com/sustainable-computing-io/kepler/internal/monitor.(*PowerMonitor).refreshSnapshot
         0     0%  1.70%     -0.01s  0.24%  github.com/sustainable-computing-io/kepler/internal/monitor.(*PowerMonitor).synchronizedPowerRefresh
         0     0%  1.70%     -0.01s  0.24%  github.com/sustainable-computing-io/kepler/internal/monitor.(*PowerMonitor).synchronizedPowerRefresh.func1
     0.01s  0.24%  1.46%      0.01s  0.24%  github.com/sustainable-computing-io/kepler/internal/monitor.(*TerminatedResourceTracker[go.shape.*uint8]).Add
         0     0%  1.46%      0.01s  0.24%  github.com/sustainable-computing-io/kepler/internal/platform/redfish.(*PowerReader).ReadAll
     0.01s  0.24%  1.21%      0.01s  0.24%  github.com/sustainable-computing-io/kepler/internal/platform/redfish.(*PowerReader).readPowerSubsystem
         0     0%  1.21%      0.01s  0.24%  github.com/sustainable-computing-io/kepler/internal/platform/redfish.(*Service).Power
    -0.01s  0.24%  1.46%     -0.01s  0.24%  github.com/sustainable-computing-io/kepler/internal/resource.(*procWrapper).CmdLine
    -0.01s  0.24%  1.70%     -0.01s  0.24%  github.com/sustainable-computing-io/kepler/internal/resource.(*procWrapper).Comm
     0.01s  0.24%  1.46%      0.01s  0.24%  github.com/sustainable-computing-io/kepler/internal/resource.(*procWrapper).Executable
         0     0%  1.46%     -0.01s  0.24%  github.com/sustainable-computing-io/kepler/internal/resource.computeTypeInfoFromProc.func2
         0     0%  1.46%     -0.01s  0.24%  github.com/sustainable-computing-io/kepler/internal/resource.newProcess
         0     0%  1.46%     -0.01s  0.24%  github.com/sustainable-computing-io/kepler/internal/resource.vmInfoFromProc
     0.01s  0.24%  1.21%      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: fcc4efe36267ec2a5d7e3c520df77ac313d110d6
Type: inuse_space
Time: 2025-12-18 20:33:59 UTC
Duration: 120.02s, Total samples = 6537.20kB 
Active filters:
   show=github.com/sustainable-computing-io
Showing nodes accounting for -1028.66kB, 15.74% of 6537.20kB total
Dropped 3 nodes (cum <= 32.69kB)
      flat  flat%   sum%        cum   cum%
         0     0%     0%  1024.16kB 15.67%  github.com/sustainable-computing-io/kepler/internal/monitor.(*PowerMonitor).Snapshot
         0     0%     0%  1024.16kB 15.67%  github.com/sustainable-computing-io/kepler/internal/monitor.(*PowerMonitor).ensureFreshData
 -516.64kB  7.90%  7.90%  -516.64kB  7.90%  github.com/sustainable-computing-io/kepler/internal/exporter/prometheus/collector.(*PowerCollector).collectProcessMetrics
         0     0%  7.90%  -512.14kB  7.83%  github.com/sustainable-computing-io/kepler/internal/monitor.(*PowerMonitor).scheduleNextCollection.func1
 -512.03kB  7.83% 15.74%  -512.03kB  7.83%  github.com/sustainable-computing-io/kepler/internal/exporter/prometheus/collector.(*cpuInfoCollector).Collect
         0     0% 15.74%   512.02kB  7.83%  github.com/sustainable-computing-io/kepler/internal/monitor.(*PowerMonitor).calculatePower
         0     0% 15.74%   512.02kB  7.83%  github.com/sustainable-computing-io/kepler/internal/monitor.(*PowerMonitor).calculateProcessPower
  512.02kB  7.83%  7.90%   512.02kB  7.83%  github.com/sustainable-computing-io/kepler/internal/monitor.newProcess (inline)
         0     0%  7.90%  -512.01kB  7.83%  github.com/sustainable-computing-io/kepler/internal/monitor.(*PowerMonitor).Run
         0     0%  7.90%  -512.01kB  7.83%  github.com/sustainable-computing-io/kepler/internal/monitor.(*PowerMonitor).collectionLoop
         0     0%  7.90%  -512.01kB  7.83%  github.com/sustainable-computing-io/kepler/internal/monitor.(*PowerMonitor).firstReading
 -512.01kB  7.83% 15.74%  -512.01kB  7.83%  github.com/sustainable-computing-io/kepler/internal/resource.(*procWrapper).Comm
         0     0% 15.74%  -512.01kB  7.83%  github.com/sustainable-computing-io/kepler/internal/resource.(*resourceInformer).Refresh
         0     0% 15.74%  -512.01kB  7.83%  github.com/sustainable-computing-io/kepler/internal/resource.(*resourceInformer).refreshProcesses
         0     0% 15.74%  -512.01kB  7.83%  github.com/sustainable-computing-io/kepler/internal/resource.(*resourceInformer).updateProcessCache
         0     0% 15.74%  -512.01kB  7.83%  github.com/sustainable-computing-io/kepler/internal/resource.newProcess
         0     0% 15.74%  -512.01kB  7.83%  github.com/sustainable-computing-io/kepler/internal/resource.populateProcessFields
         0     0% 15.74%  -512.01kB  7.83%  github.com/sustainable-computing-io/kepler/internal/service.Run.func1
         0     0% 15.74%   507.53kB  7.76%  github.com/sustainable-computing-io/kepler/internal/exporter/prometheus/collector.(*PowerCollector).Collect
💾 Memory Comparison with base Kepler (Alloc)
File: kepler
Build ID: fcc4efe36267ec2a5d7e3c520df77ac313d110d6
Type: alloc_space
Time: 2025-12-18 20:33:59 UTC
Duration: 120.02s, Total samples = 169.04MB 
Active filters:
   show=github.com/sustainable-computing-io
Showing nodes accounting for 14.17MB, 8.38% of 169.04MB total
Dropped 6 nodes (cum <= 0.85MB)
      flat  flat%   sum%        cum   cum%
         0     0%     0%    10.05MB  5.95%  github.com/sustainable-computing-io/kepler/internal/exporter/prometheus/collector.(*PowerCollector).Collect
         0     0%     0%     5.05MB  2.99%  github.com/sustainable-computing-io/kepler/internal/monitor.(*PowerMonitor).Snapshot
    4.50MB  2.66%  2.66%     4.50MB  2.66%  github.com/sustainable-computing-io/kepler/internal/exporter/prometheus/collector.(*PowerCollector).collectProcessMetrics
    3.56MB  2.11%  4.77%     3.56MB  2.11%  github.com/sustainable-computing-io/kepler/internal/exporter/prometheus/collector.(*realProcFS).CPUInfo
         0     0%  4.77%     3.05MB  1.80%  github.com/sustainable-computing-io/kepler/internal/monitor.(*PowerMonitor).ensureFreshData
   -2.50MB  1.48%  3.29%    -2.50MB  1.48%  github.com/sustainable-computing-io/kepler/internal/resource.(*procWrapper).CPUTime
         0     0%  3.29%    -2.50MB  1.48%  github.com/sustainable-computing-io/kepler/internal/resource.(*resourceInformer).updateProcessCache
         0     0%  3.29%    -2.50MB  1.48%  github.com/sustainable-computing-io/kepler/internal/resource.populateProcessFields
   -1.50MB  0.89%  2.40%     2.06MB  1.22%  github.com/sustainable-computing-io/kepler/internal/exporter/prometheus/collector.(*cpuInfoCollector).Collect
    2.05MB  1.21%  3.61%     2.05MB  1.21%  github.com/sustainable-computing-io/kepler/internal/resource.(*procFSReader).AllProcs
       1MB  0.59%  4.21%        2MB  1.18%  github.com/sustainable-computing-io/kepler/internal/monitor.(*Process).Clone (inline)
         0     0%  4.21%        2MB  1.18%  github.com/sustainable-computing-io/kepler/internal/monitor.(*Snapshot).Clone
         0     0%  4.21%     1.55MB  0.92%  github.com/sustainable-computing-io/kepler/internal/monitor.(*PowerMonitor).refreshSnapshot
         0     0%  4.21%     1.55MB  0.92%  github.com/sustainable-computing-io/kepler/internal/monitor.(*PowerMonitor).synchronizedPowerRefresh
         0     0%  4.21%     1.55MB  0.92%  github.com/sustainable-computing-io/kepler/internal/monitor.(*PowerMonitor).synchronizedPowerRefresh.func1
    1.53MB   0.9%  5.11%     1.53MB   0.9%  github.com/sustainable-computing-io/kepler/internal/resource.(*procFSReader).CPUUsageRatio
         0     0%  5.11%     1.53MB   0.9%  github.com/sustainable-computing-io/kepler/internal/resource.(*resourceInformer).Refresh.func3
         0     0%  5.11%     1.53MB   0.9%  github.com/sustainable-computing-io/kepler/internal/resource.(*resourceInformer).refreshNode
         0     0%  5.11%     1.50MB  0.89%  github.com/sustainable-computing-io/kepler/internal/exporter/prometheus/collector.(*PlatformCollector).Collect
         0     0%  5.11%     1.50MB  0.89%  github.com/sustainable-computing-io/kepler/internal/platform/redfish.(*PowerReader).ReadAll
    1.50MB  0.89%  6.00%     1.50MB  0.89%  github.com/sustainable-computing-io/kepler/internal/platform/redfish.(*PowerReader).readPowerSubsystem
         0     0%  6.00%     1.50MB  0.89%  github.com/sustainable-computing-io/kepler/internal/platform/redfish.(*Service).Power
         0     0%  6.00%    -1.50MB  0.88%  github.com/sustainable-computing-io/kepler/internal/monitor.(*PowerMonitor).scheduleNextCollection.func1
         0     0%  6.00%     1.05MB  0.62%  github.com/sustainable-computing-io/kepler/internal/monitor.(*PowerMonitor).calculatePower
         0     0%  6.00%     1.02MB   0.6%  github.com/sustainable-computing-io/kepler/internal/resource.computeTypeInfoFromProc.func1
    1.02MB   0.6%  6.60%     1.02MB   0.6%  github.com/sustainable-computing-io/kepler/internal/resource.containerInfoFromCgroupPaths
         0     0%  6.60%     1.02MB   0.6%  github.com/sustainable-computing-io/kepler/internal/resource.containerInfoFromProc
       1MB  0.59%  7.19%        1MB  0.59%  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.52MB  0.31%  7.50%     0.52MB  0.31%  github.com/sustainable-computing-io/kepler/internal/resource.vmInfoFromCmdLine
   -0.50MB   0.3%  7.20%    -0.50MB   0.3%  github.com/sustainable-computing-io/kepler/internal/resource.(*procWrapper).CmdLine
    0.50MB   0.3%  7.50%     0.50MB   0.3%  github.com/sustainable-computing-io/kepler/internal/logger.handlerForFormat.func1
         0     0%  7.50%     0.50MB   0.3%  github.com/sustainable-computing-io/kepler/internal/monitor.(*PowerMonitor).calculateContainerPower
    0.50MB   0.3%  7.79%     0.50MB   0.3%  github.com/sustainable-computing-io/kepler/internal/exporter/prometheus/collector.(*PowerCollector).collectContainerMetrics
    0.50MB   0.3%  8.09%     0.50MB   0.3%  github.com/sustainable-computing-io/kepler/internal/monitor.NewSnapshot (inline)
    0.50MB   0.3%  8.38%     0.50MB   0.3%  github.com/sustainable-computing-io/kepler/internal/monitor.(*PowerMonitor).calculateProcessPower

⬇️ Download the Profiling artifacts from the Actions Summary page

📦 Artifact name: profile-artifacts-2372

🔧 Or use GitHub CLI to download artifacts:

gh run download 20350294686 -n profile-artifacts-2372

@github-actions
Copy link
Contributor

⚠️ 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/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
Contributor

📊 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: e8c8b4ea0991d45b7472fea4fd2d4e6d022b13a0
Type: cpu
Time: 2025-12-18 20:52:47 UTC
Duration: 120s, Total samples = 3.92s ( 3.27%)
Active filters:
   show=github.com/sustainable-computing-io
Showing nodes accounting for -0.06s, 1.53% of 3.92s total
      flat  flat%   sum%        cum   cum%
         0     0%     0%     -0.11s  2.81%  github.com/sustainable-computing-io/kepler/internal/resource.(*resourceInformer).Refresh
     0.01s  0.26%  0.26%     -0.11s  2.81%  github.com/sustainable-computing-io/kepler/internal/resource.(*resourceInformer).refreshProcesses
    -0.01s  0.26%     0%     -0.10s  2.55%  github.com/sustainable-computing-io/kepler/internal/resource.(*resourceInformer).updateProcessCache
         0     0%     0%     -0.09s  2.30%  github.com/sustainable-computing-io/kepler/internal/monitor.(*PowerMonitor).scheduleNextCollection.func1
    -0.09s  2.30%  2.30%     -0.09s  2.30%  github.com/sustainable-computing-io/kepler/internal/resource.(*procWrapper).CPUTime
         0     0%  2.30%     -0.09s  2.30%  github.com/sustainable-computing-io/kepler/internal/resource.populateProcessFields
         0     0%  2.30%      0.07s  1.79%  github.com/sustainable-computing-io/kepler/internal/exporter/prometheus/collector.(*PowerCollector).Collect
         0     0%  2.30%      0.05s  1.28%  github.com/sustainable-computing-io/kepler/internal/monitor.(*PowerMonitor).Snapshot
     0.01s  0.26%  2.04%      0.05s  1.28%  github.com/sustainable-computing-io/kepler/internal/monitor.(*PowerMonitor).calculateProcessPower
         0     0%  2.04%      0.05s  1.28%  github.com/sustainable-computing-io/kepler/internal/monitor.(*PowerMonitor).ensureFreshData
    -0.05s  1.28%  3.32%     -0.05s  1.28%  github.com/sustainable-computing-io/kepler/internal/resource.(*procFSReader).CPUUsageRatio
         0     0%  3.32%     -0.05s  1.28%  github.com/sustainable-computing-io/kepler/internal/resource.(*resourceInformer).Refresh.func3
         0     0%  3.32%     -0.05s  1.28%  github.com/sustainable-computing-io/kepler/internal/resource.(*resourceInformer).refreshNode
         0     0%  3.32%     -0.04s  1.02%  github.com/sustainable-computing-io/kepler/internal/monitor.(*PowerMonitor).calculatePower
         0     0%  3.32%     -0.04s  1.02%  github.com/sustainable-computing-io/kepler/internal/monitor.(*PowerMonitor).refreshSnapshot
         0     0%  3.32%     -0.04s  1.02%  github.com/sustainable-computing-io/kepler/internal/monitor.(*PowerMonitor).synchronizedPowerRefresh
         0     0%  3.32%     -0.04s  1.02%  github.com/sustainable-computing-io/kepler/internal/monitor.(*PowerMonitor).synchronizedPowerRefresh.func1
     0.04s  1.02%  2.30%      0.04s  1.02%  github.com/sustainable-computing-io/kepler/internal/monitor.newProcess (inline)
     0.02s  0.51%  1.79%      0.02s  0.51%  github.com/sustainable-computing-io/kepler/internal/exporter/prometheus/collector.(*PowerCollector).collectProcessMetrics
     0.02s  0.51%  1.28%      0.02s  0.51%  github.com/sustainable-computing-io/kepler/internal/monitor.(*PowerMonitor).calculateNodePower
    -0.02s  0.51%  1.79%     -0.02s  0.51%  github.com/sustainable-computing-io/kepler/internal/resource.(*procFSReader).AllProcs
         0     0%  1.79%     -0.02s  0.51%  github.com/sustainable-computing-io/kepler/internal/resource.newProcess
         0     0%  1.79%      0.01s  0.26%  github.com/sustainable-computing-io/kepler/internal/exporter/prometheus/collector.(*PlatformCollector).Collect
    -0.02s  0.51%  2.30%     -0.01s  0.26%  github.com/sustainable-computing-io/kepler/internal/exporter/prometheus/collector.(*cpuInfoCollector).Collect
     0.01s  0.26%  2.04%      0.01s  0.26%  github.com/sustainable-computing-io/kepler/internal/exporter/prometheus/collector.(*realProcFS).CPUInfo
     0.01s  0.26%  1.79%      0.01s  0.26%  github.com/sustainable-computing-io/kepler/internal/monitor.(*PowerMonitor).calculateContainerPower
    -0.01s  0.26%  2.04%     -0.01s  0.26%  github.com/sustainable-computing-io/kepler/internal/monitor.(*PowerMonitor).calculateVMPower
         0     0%  2.04%      0.01s  0.26%  github.com/sustainable-computing-io/kepler/internal/platform/redfish.(*PowerReader).ReadAll
     0.01s  0.26%  1.79%      0.01s  0.26%  github.com/sustainable-computing-io/kepler/internal/platform/redfish.(*PowerReader).readPowerSubsystem
         0     0%  1.79%      0.01s  0.26%  github.com/sustainable-computing-io/kepler/internal/platform/redfish.(*Service).Power
     0.01s  0.26%  1.53%      0.01s  0.26%  github.com/sustainable-computing-io/kepler/internal/resource.(*procWrapper).CmdLine
         0     0%  1.53%      0.01s  0.26%  github.com/sustainable-computing-io/kepler/internal/resource.computeTypeInfoFromProc.func2
         0     0%  1.53%      0.01s  0.26%  github.com/sustainable-computing-io/kepler/internal/resource.vmInfoFromProc
💾 Memory Comparison with base Kepler (Inuse)
File: kepler
Build ID: e8c8b4ea0991d45b7472fea4fd2d4e6d022b13a0
Type: inuse_space
Time: 2025-12-18 20:54:47 UTC
Duration: 120.02s, Total samples = 9586.77kB 
Active filters:
   show=github.com/sustainable-computing-io
Showing nodes accounting for 1035.73kB, 10.80% of 9586.77kB total
Dropped 3 nodes (cum <= 47.93kB)
      flat  flat%   sum%        cum   cum%
         0     0%     0%  1545.13kB 16.12%  github.com/sustainable-computing-io/kepler/internal/monitor.(*PowerMonitor).calculatePower
         0     0%     0%  1545.13kB 16.12%  github.com/sustainable-computing-io/kepler/internal/monitor.(*PowerMonitor).refreshSnapshot
         0     0%     0%  1545.13kB 16.12%  github.com/sustainable-computing-io/kepler/internal/monitor.(*PowerMonitor).synchronizedPowerRefresh
         0     0%     0%  1545.13kB 16.12%  github.com/sustainable-computing-io/kepler/internal/monitor.(*PowerMonitor).synchronizedPowerRefresh.func1
 -525.43kB  5.48%  5.48% -1037.57kB 10.82%  github.com/sustainable-computing-io/kepler/internal/monitor.(*Snapshot).Clone
         0     0%  5.48%  1033.08kB 10.78%  github.com/sustainable-computing-io/kepler/internal/monitor.(*PowerMonitor).ensureFreshData
         0     0%  5.48%  1024.08kB 10.68%  github.com/sustainable-computing-io/kepler/internal/monitor.(*PowerMonitor).calculateProcessPower
 1024.08kB 10.68%  5.20%  1024.08kB 10.68%  github.com/sustainable-computing-io/kepler/internal/monitor.newProcess (inline)
         0     0%  5.20%   528.17kB  5.51%  github.com/sustainable-computing-io/kepler/internal/resource.computeTypeInfoFromProc.func2
  528.17kB  5.51% 10.71%   528.17kB  5.51%  github.com/sustainable-computing-io/kepler/internal/resource.vmInfoFromCmdLine
         0     0% 10.71%   528.17kB  5.51%  github.com/sustainable-computing-io/kepler/internal/resource.vmInfoFromProc
         0     0% 10.71%   521.05kB  5.44%  github.com/sustainable-computing-io/kepler/internal/resource.(*resourceInformer).Refresh
  521.05kB  5.44% 16.15%   521.05kB  5.44%  github.com/sustainable-computing-io/kepler/internal/resource.(*resourceInformer).refreshProcesses
         0     0% 16.15%  -512.14kB  5.34%  github.com/sustainable-computing-io/kepler/internal/monitor.(*Process).Clone (inline)
 -512.14kB  5.34% 10.80%  -512.14kB  5.34%  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% 10.80%   512.05kB  5.34%  github.com/sustainable-computing-io/kepler/internal/monitor.(*PowerMonitor).scheduleNextCollection.func1
💾 Memory Comparison with base Kepler (Alloc)
File: kepler
Build ID: e8c8b4ea0991d45b7472fea4fd2d4e6d022b13a0
Type: alloc_space
Time: 2025-12-18 20:54:47 UTC
Duration: 120.02s, Total samples = 178.62MB 
Active filters:
   show=github.com/sustainable-computing-io
Showing nodes accounting for 12.13MB, 6.79% of 178.62MB total
Dropped 1 node (cum <= 0.89MB)
      flat  flat%   sum%        cum   cum%
       9MB  5.04%  5.04%        9MB  5.04%  github.com/sustainable-computing-io/kepler/internal/resource.(*procWrapper).CPUTime
         0     0%  5.04%        9MB  5.04%  github.com/sustainable-computing-io/kepler/internal/resource.(*resourceInformer).updateProcessCache
         0     0%  5.04%        9MB  5.04%  github.com/sustainable-computing-io/kepler/internal/resource.populateProcessFields
   -0.51MB  0.28%  4.75%     8.97MB  5.02%  github.com/sustainable-computing-io/kepler/internal/resource.(*resourceInformer).refreshProcesses
   -0.50MB  0.28%  4.47%     8.47MB  4.74%  github.com/sustainable-computing-io/kepler/internal/resource.(*resourceInformer).Refresh
         0     0%  4.47%     7.98MB  4.47%  github.com/sustainable-computing-io/kepler/internal/monitor.(*PowerMonitor).calculatePower
         0     0%  4.47%     7.98MB  4.47%  github.com/sustainable-computing-io/kepler/internal/monitor.(*PowerMonitor).refreshSnapshot
         0     0%  4.47%     7.98MB  4.47%  github.com/sustainable-computing-io/kepler/internal/monitor.(*PowerMonitor).synchronizedPowerRefresh
         0     0%  4.47%     7.98MB  4.47%  github.com/sustainable-computing-io/kepler/internal/monitor.(*PowerMonitor).synchronizedPowerRefresh.func1
         0     0%  4.47%     7.51MB  4.20%  github.com/sustainable-computing-io/kepler/internal/monitor.(*PowerMonitor).scheduleNextCollection.func1
    3.57MB  2.00%  6.47%     3.57MB  2.00%  github.com/sustainable-computing-io/kepler/internal/exporter/prometheus/collector.(*realProcFS).CPUInfo
      -3MB  1.68%  4.79%       -3MB  1.68%  github.com/sustainable-computing-io/kepler/internal/exporter/prometheus/collector.(*PowerCollector).collectProcessMetrics
      -1MB  0.56%  4.23%     2.57MB  1.44%  github.com/sustainable-computing-io/kepler/internal/exporter/prometheus/collector.(*cpuInfoCollector).Collect
    2.56MB  1.43%  5.66%     2.56MB  1.43%  github.com/sustainable-computing-io/kepler/internal/resource.(*procFSReader).CPUUsageRatio
         0     0%  5.66%     2.56MB  1.43%  github.com/sustainable-computing-io/kepler/internal/resource.(*resourceInformer).Refresh.func3
         0     0%  5.66%     2.56MB  1.43%  github.com/sustainable-computing-io/kepler/internal/resource.(*resourceInformer).refreshNode
         0     0%  5.66%    -2.04MB  1.14%  github.com/sustainable-computing-io/kepler/internal/exporter/prometheus/collector.(*PowerCollector).Collect
   -1.50MB  0.84%  4.82%    -1.50MB  0.84%  github.com/sustainable-computing-io/kepler/internal/monitor.newProcess (inline)
         0     0%  4.82%     1.03MB  0.58%  github.com/sustainable-computing-io/kepler/internal/resource.computeTypeInfoFromProc.func2
    1.03MB  0.58%  5.40%     1.03MB  0.58%  github.com/sustainable-computing-io/kepler/internal/resource.vmInfoFromCmdLine
         0     0%  5.40%     1.03MB  0.58%  github.com/sustainable-computing-io/kepler/internal/resource.vmInfoFromProc
       1MB  0.56%  5.96%        1MB  0.56%  github.com/sustainable-computing-io/kepler/internal/resource.WrapProc (inline)
    0.51MB  0.29%  6.25%    -0.99MB  0.55%  github.com/sustainable-computing-io/kepler/internal/monitor.(*PowerMonitor).calculateProcessPower
         0     0%  6.25%    -0.52MB  0.29%  github.com/sustainable-computing-io/kepler/internal/resource.computeTypeInfoFromProc.func1
   -0.52MB  0.29%  5.96%    -0.52MB  0.29%  github.com/sustainable-computing-io/kepler/internal/resource.containerInfoFromCgroupPaths
         0     0%  5.96%    -0.52MB  0.29%  github.com/sustainable-computing-io/kepler/internal/resource.containerInfoFromProc
         0     0%  5.96%     0.50MB  0.28%  github.com/sustainable-computing-io/kepler/internal/exporter/prometheus/collector.(*PlatformCollector).Collect
         0     0%  5.96%     0.50MB  0.28%  github.com/sustainable-computing-io/kepler/internal/platform/redfish.(*PowerReader).ReadAll
    0.50MB  0.28%  6.24%     0.50MB  0.28%  github.com/sustainable-computing-io/kepler/internal/platform/redfish.(*PowerReader).readPowerSubsystem
         0     0%  6.24%     0.50MB  0.28%  github.com/sustainable-computing-io/kepler/internal/platform/redfish.(*Service).Power
         0     0%  6.24%     0.50MB  0.28%  github.com/sustainable-computing-io/kepler/internal/device.(*AggregatedZone).Energy
    0.50MB  0.28%  6.52%     0.50MB  0.28%  github.com/sustainable-computing-io/kepler/internal/device.sysfsRaplZone.Energy
         0     0%  6.52%     0.50MB  0.28%  github.com/sustainable-computing-io/kepler/internal/monitor.(*PowerMonitor).calculateNodePower
    0.50MB  0.28%  6.80%     0.50MB  0.28%  github.com/sustainable-computing-io/kepler/internal/monitor.(*Process).Clone (inline)
    0.50MB  0.28%  7.08%     0.50MB  0.28%  github.com/sustainable-computing-io/kepler/internal/exporter/prometheus/collector.(*PowerCollector).collectNodeMetrics
   -0.52MB  0.29%  6.79%     0.48MB  0.27%  github.com/sustainable-computing-io/kepler/internal/resource.(*procFSReader).AllProcs
         0     0%  6.79%     0.48MB  0.27%  github.com/sustainable-computing-io/kepler/internal/monitor.(*PowerMonitor).ensureFreshData
         0     0%  6.79%     0.46MB  0.26%  github.com/sustainable-computing-io/kepler/internal/monitor.(*PowerMonitor).Snapshot

⬇️ Download the Profiling artifacts from the Actions Summary page

📦 Artifact name: profile-artifacts-2372

🔧 Or use GitHub CLI to download artifacts:

gh run download 20350934438 -n profile-artifacts-2372

…er sensors

Implemented hwmon device reader to allow Kepler to acquire power metrics (watts)
from hwmon subsystem. Hwmon enablement added as an experimental feature in
config.

Signed-off-by: Kaiyi Liu <[email protected]>
@github-actions
Copy link
Contributor

⚠️ 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/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
Contributor

📊 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: d8e1a7427cb6f83d7e090c2c52f9a9f6a9b632c8
Type: cpu
Time: 2025-12-19 06:24:22 UTC
Duration: 120s, Total samples = 4.01s ( 3.34%)
Active filters:
   show=github.com/sustainable-computing-io
Showing nodes accounting for 0.02s, 0.5% of 4.01s total
Dropped 2 nodes (cum <= 0.02s)
      flat  flat%   sum%        cum   cum%
         0     0%     0%      0.08s  2.00%  github.com/sustainable-computing-io/kepler/internal/exporter/prometheus/collector.(*PowerCollector).Collect
         0     0%     0%      0.06s  1.50%  github.com/sustainable-computing-io/kepler/internal/monitor.(*PowerMonitor).ensureFreshData
         0     0%     0%     -0.06s  1.50%  github.com/sustainable-computing-io/kepler/internal/monitor.(*PowerMonitor).scheduleNextCollection.func1
         0     0%     0%      0.05s  1.25%  github.com/sustainable-computing-io/kepler/internal/monitor.(*PowerMonitor).Snapshot
     0.03s  0.75%  0.75%      0.03s  0.75%  github.com/sustainable-computing-io/kepler/internal/exporter/prometheus/collector.(*PowerCollector).collectProcessMetrics
         0     0%  0.75%     -0.02s   0.5%  github.com/sustainable-computing-io/kepler/internal/exporter/prometheus/collector.(*cpuInfoCollector).Collect
    -0.02s   0.5%  0.25%     -0.02s   0.5%  github.com/sustainable-computing-io/kepler/internal/exporter/prometheus/collector.(*realProcFS).CPUInfo
    -0.02s   0.5%  0.25%     -0.02s   0.5%  github.com/sustainable-computing-io/kepler/internal/resource.(*procFSReader).AllProcs
     0.01s  0.25%     0%      0.01s  0.25%  github.com/sustainable-computing-io/kepler/internal/exporter/prometheus/collector.(*PlatformCollector).Collect
     0.01s  0.25%  0.25%      0.01s  0.25%  github.com/sustainable-computing-io/kepler/internal/monitor.(*PowerMonitor).calculateVMPower
    -0.01s  0.25%     0%     -0.01s  0.25%  github.com/sustainable-computing-io/kepler/internal/monitor.(*Process).Clone (inline)
         0     0%     0%     -0.01s  0.25%  github.com/sustainable-computing-io/kepler/internal/monitor.(*Snapshot).Clone
     0.01s  0.25%  0.25%      0.01s  0.25%  github.com/sustainable-computing-io/kepler/internal/monitor.newProcess (inline)
     0.01s  0.25%   0.5%      0.01s  0.25%  github.com/sustainable-computing-io/kepler/internal/resource.(*procFSReader).CPUUsageRatio
    -0.01s  0.25%  0.25%     -0.01s  0.25%  github.com/sustainable-computing-io/kepler/internal/resource.(*procWrapper).CPUTime
         0     0%  0.25%     -0.01s  0.25%  github.com/sustainable-computing-io/kepler/internal/resource.(*resourceInformer).Refresh
         0     0%  0.25%      0.01s  0.25%  github.com/sustainable-computing-io/kepler/internal/resource.(*resourceInformer).Refresh.func3
         0     0%  0.25%      0.01s  0.25%  github.com/sustainable-computing-io/kepler/internal/resource.(*resourceInformer).refreshNode
     0.01s  0.25%   0.5%     -0.01s  0.25%  github.com/sustainable-computing-io/kepler/internal/resource.(*resourceInformer).refreshProcesses
         0     0%   0.5%     -0.01s  0.25%  github.com/sustainable-computing-io/kepler/internal/resource.populateProcessFields
💾 Memory Comparison with base Kepler (Inuse)
File: kepler
Build ID: d8e1a7427cb6f83d7e090c2c52f9a9f6a9b632c8
Type: inuse_space
Time: 2025-12-19 06:26:22 UTC
Duration: 120.02s, Total samples = 11.40MB 
Active filters:
   show=github.com/sustainable-computing-io
Showing nodes accounting for -0.55MB, 4.85% of 11.40MB total
      flat  flat%   sum%        cum   cum%
       2MB 17.54% 17.54%        2MB 17.54%  github.com/sustainable-computing-io/kepler/internal/monitor.newProcess (inline)
   -0.51MB  4.50% 13.04%     1.49MB 13.04%  github.com/sustainable-computing-io/kepler/internal/monitor.(*PowerMonitor).calculateProcessPower
         0     0% 13.04%     1.48MB 12.97%  github.com/sustainable-computing-io/kepler/internal/monitor.(*PowerMonitor).calculatePower
         0     0% 13.04%     1.48MB 12.97%  github.com/sustainable-computing-io/kepler/internal/monitor.(*PowerMonitor).refreshSnapshot
         0     0% 13.04%     1.48MB 12.97%  github.com/sustainable-computing-io/kepler/internal/monitor.(*PowerMonitor).synchronizedPowerRefresh
         0     0% 13.04%     1.48MB 12.97%  github.com/sustainable-computing-io/kepler/internal/monitor.(*PowerMonitor).synchronizedPowerRefresh.func1
         0     0% 13.04%        1MB  8.77%  github.com/sustainable-computing-io/kepler/internal/monitor.(*PowerMonitor).scheduleNextCollection.func1
         0     0% 13.04%    -0.52MB  4.58%  github.com/sustainable-computing-io/kepler/internal/exporter/prometheus/collector.(*PowerCollector).Collect
         0     0% 13.04%    -0.52MB  4.52%  github.com/sustainable-computing-io/kepler/internal/resource.computeTypeInfoFromProc.func1
         0     0% 13.04%    -0.52MB  4.52%  github.com/sustainable-computing-io/kepler/internal/resource.computeTypeInfoFromProc.func2
   -0.52MB  4.52%  8.52%    -0.52MB  4.52%  github.com/sustainable-computing-io/kepler/internal/resource.containerInfoFromCgroupPaths
         0     0%  8.52%    -0.52MB  4.52%  github.com/sustainable-computing-io/kepler/internal/resource.containerInfoFromProc
   -0.52MB  4.52%  4.00%    -0.52MB  4.52%  github.com/sustainable-computing-io/kepler/internal/resource.vmInfoFromCmdLine
         0     0%  4.00%    -0.52MB  4.52%  github.com/sustainable-computing-io/kepler/internal/resource.vmInfoFromProc
         0     0%  4.00%    -0.51MB  4.46%  github.com/sustainable-computing-io/kepler/internal/resource.(*resourceInformer).Refresh
   -0.51MB  4.46%  0.47%    -0.51MB  4.46%  github.com/sustainable-computing-io/kepler/internal/resource.(*resourceInformer).refreshProcesses
         0     0%  0.47%    -0.50MB  4.39%  github.com/sustainable-computing-io/kepler/internal/monitor.(*Process).Clone (inline)
         0     0%  0.47%    -0.50MB  4.39%  github.com/sustainable-computing-io/kepler/internal/monitor.(*Snapshot).Clone
   -0.50MB  4.39%  4.85%    -0.50MB  4.39%  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  4.39%  0.47%     0.50MB  4.39%  github.com/sustainable-computing-io/kepler/internal/monitor.(*PowerMonitor).calculateNodePower
   -0.50MB  4.39%  4.85%    -0.50MB  4.39%  github.com/sustainable-computing-io/kepler/internal/exporter/prometheus/collector.(*PowerCollector).collectProcessMetrics
         0     0%  4.85%     0.48MB  4.20%  github.com/sustainable-computing-io/kepler/internal/monitor.(*PowerMonitor).ensureFreshData
         0     0%  4.85%    -0.02MB  0.19%  github.com/sustainable-computing-io/kepler/internal/monitor.(*PowerMonitor).Snapshot
💾 Memory Comparison with base Kepler (Alloc)
File: kepler
Build ID: d8e1a7427cb6f83d7e090c2c52f9a9f6a9b632c8
Type: alloc_space
Time: 2025-12-19 06:26:22 UTC
Duration: 120.02s, Total samples = 181.01MB 
Active filters:
   show=github.com/sustainable-computing-io
Showing nodes accounting for 4.85MB, 2.68% of 181.01MB total
Dropped 1 node (cum <= 0.91MB)
      flat  flat%   sum%        cum   cum%
         0     0%     0%     9.04MB  5.00%  github.com/sustainable-computing-io/kepler/internal/exporter/prometheus/collector.(*PowerCollector).Collect
         0     0%     0%     8.54MB  4.72%  github.com/sustainable-computing-io/kepler/internal/monitor.(*PowerMonitor).Snapshot
         0     0%     0%     5.56MB  3.07%  github.com/sustainable-computing-io/kepler/internal/monitor.(*PowerMonitor).ensureFreshData
       3MB  1.66%  1.66%        4MB  2.21%  github.com/sustainable-computing-io/kepler/internal/monitor.(*Process).Clone (inline)
         0     0%  1.66%     3.54MB  1.96%  github.com/sustainable-computing-io/kepler/internal/monitor.(*PowerMonitor).calculatePower
         0     0%  1.66%     3.54MB  1.96%  github.com/sustainable-computing-io/kepler/internal/monitor.(*PowerMonitor).refreshSnapshot
         0     0%  1.66%     3.54MB  1.96%  github.com/sustainable-computing-io/kepler/internal/monitor.(*PowerMonitor).synchronizedPowerRefresh
         0     0%  1.66%     3.54MB  1.96%  github.com/sustainable-computing-io/kepler/internal/monitor.(*PowerMonitor).synchronizedPowerRefresh.func1
    0.51MB  0.28%  1.94%     3.51MB  1.94%  github.com/sustainable-computing-io/kepler/internal/monitor.(*PowerMonitor).calculateProcessPower
         0     0%  1.94%    -3.14MB  1.74%  github.com/sustainable-computing-io/kepler/internal/exporter/prometheus/collector.(*cpuInfoCollector).Collect
   -3.14MB  1.74%   0.2%    -3.14MB  1.74%  github.com/sustainable-computing-io/kepler/internal/exporter/prometheus/collector.(*realProcFS).CPUInfo
   -0.51MB  0.28% 0.079%     2.99MB  1.65%  github.com/sustainable-computing-io/kepler/internal/monitor.(*Snapshot).Clone
    2.50MB  1.38%  1.30%     2.50MB  1.38%  github.com/sustainable-computing-io/kepler/internal/monitor.newProcess (inline)
    1.03MB  0.57%  1.87%     1.53MB  0.84%  github.com/sustainable-computing-io/kepler/internal/resource.(*procFSReader).AllProcs
         0     0%  1.87%    -1.52MB  0.84%  github.com/sustainable-computing-io/kepler/internal/monitor.(*PowerMonitor).scheduleNextCollection.func1
   -1.50MB  0.83%  1.04%    -1.50MB  0.83%  github.com/sustainable-computing-io/kepler/internal/resource.(*procWrapper).CPUTime
         0     0%  1.04%    -1.50MB  0.83%  github.com/sustainable-computing-io/kepler/internal/resource.(*resourceInformer).updateProcessCache
         0     0%  1.04%    -1.50MB  0.83%  github.com/sustainable-computing-io/kepler/internal/resource.populateProcessFields
       1MB  0.55%  1.60%        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)
   -0.55MB   0.3%  1.30%    -0.55MB   0.3%  github.com/sustainable-computing-io/kepler/internal/resource.(*procFSReader).CPUUsageRatio
         0     0%  1.30%    -0.55MB   0.3%  github.com/sustainable-computing-io/kepler/internal/resource.(*resourceInformer).Refresh.func3
         0     0%  1.30%    -0.55MB   0.3%  github.com/sustainable-computing-io/kepler/internal/resource.(*resourceInformer).refreshNode
         0     0%  1.30%     0.51MB  0.28%  github.com/sustainable-computing-io/kepler/internal/resource.computeTypeInfoFromProc.func1
    0.51MB  0.28%  1.58%     0.51MB  0.28%  github.com/sustainable-computing-io/kepler/internal/resource.containerInfoFromCgroupPaths
         0     0%  1.58%     0.51MB  0.28%  github.com/sustainable-computing-io/kepler/internal/resource.containerInfoFromProc
         0     0%  1.58%     0.50MB  0.28%  github.com/sustainable-computing-io/kepler/internal/device.(*AggregatedZone).Energy
    0.50MB  0.28%  1.86%     0.50MB  0.28%  github.com/sustainable-computing-io/kepler/internal/device.sysfsRaplZone.Energy
         0     0%  1.86%     0.50MB  0.28%  github.com/sustainable-computing-io/kepler/internal/monitor.(*PowerMonitor).calculateNodePower
    0.50MB  0.28%  2.13%     0.50MB  0.28%  github.com/sustainable-computing-io/kepler/internal/exporter/prometheus/collector.(*PowerCollector).collectPodMetrics
    0.50MB  0.28%  2.41%     0.50MB  0.28%  github.com/sustainable-computing-io/kepler/internal/monitor.(*PowerMonitor).scheduleNextCollection
         0     0%  2.41%     0.50MB  0.28%  github.com/sustainable-computing-io/kepler/internal/exporter/prometheus/collector.(*PlatformCollector).Collect
         0     0%  2.41%     0.50MB  0.28%  github.com/sustainable-computing-io/kepler/internal/platform/redfish.(*PowerReader).ReadAll
    0.50MB  0.28%  2.68%     0.50MB  0.28%  github.com/sustainable-computing-io/kepler/internal/platform/redfish.(*PowerReader).readPowerSubsystem
         0     0%  2.68%     0.50MB  0.28%  github.com/sustainable-computing-io/kepler/internal/platform/redfish.(*Service).Power
    0.50MB  0.28%  2.96%     0.50MB  0.28%  github.com/sustainable-computing-io/kepler/internal/resource.WrapProc (inline)
         0     0%  2.96%    -0.48MB  0.26%  github.com/sustainable-computing-io/kepler/internal/resource.(*resourceInformer).Refresh
   -0.51MB  0.28%  2.68%    -0.48MB  0.26%  github.com/sustainable-computing-io/kepler/internal/resource.(*resourceInformer).refreshProcesses

⬇️ Download the Profiling artifacts from the Actions Summary page

📦 Artifact name: profile-artifacts-2372

🔧 Or use GitHub CLI to download artifacts:

gh run download 20361710986 -n profile-artifacts-2372

Comment on lines +60 to +61
Zones []string `yaml:"zones"`
Chips []string `yaml:"chips"`
Copy link
Collaborator

Choose a reason for hiding this comment

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

add comments briefly explaining what are zones and chips in hwmon.
are these hwmon concepts or arm concepts?

Comment on lines +470 to +492
func sysReadFile(file string) ([]byte, error) {
f, err := os.Open(file)
if err != nil {
return nil, err
}
defer func() { _ = f.Close() }()

// On some machines, hwmon drivers are broken and return EAGAIN. This causes
// Go's os.ReadFile implementation to poll forever.
//
// Since we either want to read data or bail immediately, do the simplest
// possible read using system call directly.
b := make([]byte, 128)
n, err := unix.Read(int(f.Fd()), b)
if err != nil {
return nil, err
}
if n < 0 {
return nil, fmt.Errorf("failed to read file: %q, read returned negative bytes value: %d", file, n)
}

return b[:n], nil
}
Copy link
Collaborator

Choose a reason for hiding this comment

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

can we do simple ioutil.ReadFile
in rapl support, procfs also uses filepath and os.ReadFile
https://github.com/prometheus/procfs/blob/master/sysfs/class_powercap.go#L90-L94

Copy link
Collaborator Author

Choose a reason for hiding this comment

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

So this is quite interesting. Counterintuitively, you actually should not use os.ReadFile. I initially did this, but according to node exporter themselves, for reading hwmon drivers, you should use system call directly:

// On some machines, hwmon drivers are broken and return EAGAIN.  This causes
// Go's os.ReadFile implementation to poll forever.
//
// Since we either want to read data or bail immediately, do the simplest
// possible read using system call directly.

Comment on lines +522 to +525
func (z *hwmonPowerZone) MaxEnergy() Energy {
// No maximum for power sensors
return 0
}
Copy link
Collaborator

Choose a reason for hiding this comment

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

is this function used anywhere? what is the implication of returning 0 as the MaxPower

Copy link
Collaborator Author

Choose a reason for hiding this comment

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

This is not MaxPower it is MaxEnergy. This is for satisfying the EnergyZone interface. Essentially, it means that because this zone only exposes Power, Energy and MaxEnergy will return 0.

Copy link
Collaborator

Choose a reason for hiding this comment

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

is lebel being read in hwmon_power_meter?

Copy link
Collaborator Author

Choose a reason for hiding this comment

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

Yes absolutely. We need the label to determine what kind of "zone" this sensor satisfies at the node level (ex. cpu_power, io_power)

// Returns a map of sensor number -> sensor files
func (r *sysfsHwmonReader) findSensorsByType(files []os.DirEntry, sensorType string) map[int]map[string]string {
sensors := make(map[int]map[string]string)
pattern := regexp.MustCompile(fmt.Sprintf(`^%s(\d+)_(.+)$`, sensorType))
Copy link
Collaborator

Choose a reason for hiding this comment

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

does this get compiled only at startup?

Copy link
Collaborator

Choose a reason for hiding this comment

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

better move it to package level

var zones []EnergyZone
for _, entry := range hwmonDirs {
// check for valid hwmon devices
if !entry.IsDir() && !isSymlink(filepath.Join(r.basePath, entry.Name())) {
Copy link
Collaborator

Choose a reason for hiding this comment

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

it needs to be a symlink?

// Scan for power sensors
files, err := os.ReadDir(hwmonPath)
if err != nil {
return nil, err
Copy link
Collaborator

Choose a reason for hiding this comment

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

need better error message


func (r *sysfsHwmonReader) discoverZones(hwmonPath string) ([]EnergyZone, error) {
// Get chip name
chipName, err := r.getChipName(hwmonPath)
Copy link
Collaborator

Choose a reason for hiding this comment

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

why not filter the chips here itself?

Copy link
Collaborator Author

Choose a reason for hiding this comment

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

It can be put there, but I followed rapl's setup which instead placed it in Zones() to be consistent. Please refer to rapl_sysfs_power_meter.go


// WithChipFilter sets chip names to include for monitoring
// If empty, all chips are included
func WithChipFilter(chips []string) HwmonOptionFn {
Copy link
Collaborator

Choose a reason for hiding this comment

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

how will the users decide which chip names are to be included here?

Copy link
Collaborator Author

@KaiyiLiu1234 KaiyiLiu1234 Dec 19, 2025

Choose a reason for hiding this comment

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

With the config:

experimental:
    hwmon:
      enabled: true
      zones: ["package", "core"]  # Filter by zone names
      chips: ["k10temp", "amdgpu"]  # Filter by chip names

Empty means everything will be included. Chip names are determined based on how node rapl determines them:

  1. Try to construct name from device path
  2. Fall back to /sys/class/hwmon/hwmonX/name file
  3. Fall back to hwmon directory name (hwmon0, hwmon1, etc.)

Copy link
Collaborator

Choose a reason for hiding this comment

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

lets clearly document what we mean by a "zone". does hwmon_power_meter use sensor as zone?

hwmon0                                                     << chip
├── power1_input                                   << sensor
└── power2_input                                   << sensor
hwmon1
├── power1_input
└── power2_input

Copy link
Collaborator Author

Choose a reason for hiding this comment

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

I will update the documentation

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

do-not-merge feat A new feature or enhancement

Projects

None yet

Development

Successfully merging this pull request may close these issues.

2 participants