Skip to content

fix(monitor): Fix stale resource utilization due to refresh ordering#2452

Open
HananAwwad wants to merge 22 commits into
sustainable-computing-io:mainfrom
HananAwwad:fix/2446-refresh-resources-before-power-calc
Open

fix(monitor): Fix stale resource utilization due to refresh ordering#2452
HananAwwad wants to merge 22 commits into
sustainable-computing-io:mainfrom
HananAwwad:fix/2446-refresh-resources-before-power-calc

Conversation

@HananAwwad

Copy link
Copy Markdown

Summary

This PR fixes a bug where energy calculations used stale resource utilization
because resources.Refresh() was called after node power calculation.

Fix

  • Move resources.Refresh() before:
    • firstNodeRead()
    • calculateNodePower()

This ensures energy attribution uses current snapshot data.

Tests

  • Added integration test using a stateful SwitchingResourceInformer
  • Verifies that:
    • Snapshot N uses utilization from snapshot N (not N-1)
    • No one-snapshot lag in energy attribution

Validation

  • Reproduced issue locally
  • Confirmed correct behavior after fix
  • All monitor tests pass

Fixes #2446

@github-actions github-actions Bot added the fix A bug fix label Mar 31, 2026
@HananAwwad HananAwwad force-pushed the fix/2446-refresh-resources-before-power-calc branch 2 times, most recently from dcac7a3 to 5368d0d Compare March 31, 2026 13:11
@codecov

codecov Bot commented Mar 31, 2026

Copy link
Copy Markdown

Codecov Report

❌ Patch coverage is 84.00000% with 4 lines in your changes missing coverage. Please review.
✅ Project coverage is 91.85%. Comparing base (e03f613) to head (c04da7f).

Files with missing lines Patch % Lines
internal/monitor/mock_utils.go 80.95% 4 Missing ⚠️

❌ Your patch check has failed because the patch coverage (84.00%) is below the target coverage (90.00%). You can increase the patch coverage or adjust the target coverage.

Additional details and impacted files
@@            Coverage Diff             @@
##             main    #2452      +/-   ##
==========================================
- Coverage   91.89%   91.85%   -0.04%     
==========================================
  Files          55       55              
  Lines        5858     5879      +21     
==========================================
+ Hits         5383     5400      +17     
- Misses        340      344       +4     
  Partials      135      135              

☔ 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

📊 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: 2d18fae1ed15df03d9662c59a560a1cac552abb9
Type: cpu
Time: 2026-03-31 17:21:57 UTC
Duration: 120s, Total samples = 3.94s ( 3.28%)
Active filters:
   show=github.com/sustainable-computing-io
Showing nodes accounting for 0.04s, 1.02% of 3.94s total
      flat  flat%   sum%        cum   cum%
         0     0%     0%      0.12s  3.05%  github.com/sustainable-computing-io/kepler/internal/monitor.(*PowerMonitor).calculatePower
    -0.01s  0.25%  0.25%      0.11s  2.79%  github.com/sustainable-computing-io/kepler/internal/monitor.(*PowerMonitor).refreshSnapshot
         0     0%  0.25%      0.11s  2.79%  github.com/sustainable-computing-io/kepler/internal/monitor.(*PowerMonitor).synchronizedPowerRefresh
         0     0%  0.25%      0.11s  2.79%  github.com/sustainable-computing-io/kepler/internal/monitor.(*PowerMonitor).synchronizedPowerRefresh.func1
         0     0%  0.25%      0.09s  2.28%  github.com/sustainable-computing-io/kepler/internal/resource.(*resourceInformer).refreshProcesses
     0.08s  2.03%  1.78%      0.08s  2.03%  github.com/sustainable-computing-io/kepler/internal/resource.(*procWrapper).CPUTime
    -0.01s  0.25%  1.52%      0.08s  2.03%  github.com/sustainable-computing-io/kepler/internal/resource.(*resourceInformer).Refresh
         0     0%  1.52%      0.08s  2.03%  github.com/sustainable-computing-io/kepler/internal/resource.(*resourceInformer).updateProcessCache
         0     0%  1.52%      0.08s  2.03%  github.com/sustainable-computing-io/kepler/internal/resource.populateProcessFields
         0     0%  1.52%      0.07s  1.78%  github.com/sustainable-computing-io/kepler/internal/monitor.(*PowerMonitor).ensureFreshData
         0     0%  1.52%      0.04s  1.02%  github.com/sustainable-computing-io/kepler/internal/monitor.(*PowerMonitor).Snapshot
         0     0%  1.52%      0.04s  1.02%  github.com/sustainable-computing-io/kepler/internal/monitor.(*PowerMonitor).scheduleNextCollection.func1
    -0.02s  0.51%  1.02%     -0.04s  1.02%  github.com/sustainable-computing-io/kepler/internal/monitor.(*Process).Clone (inline)
    -0.02s  0.51%  0.51%     -0.03s  0.76%  github.com/sustainable-computing-io/kepler/internal/exporter/prometheus/collector.(*PowerCollector).collectProcessMetrics
     0.01s  0.25%  0.76%     -0.03s  0.76%  github.com/sustainable-computing-io/kepler/internal/monitor.(*Snapshot).Clone
    -0.01s  0.25%  0.51%      0.02s  0.51%  github.com/sustainable-computing-io/kepler/internal/monitor.(*PowerMonitor).calculateProcessPower
     0.02s  0.51%  1.02%      0.02s  0.51%  github.com/sustainable-computing-io/kepler/internal/monitor.newProcess (inline)
    -0.02s  0.51%  0.51%     -0.02s  0.51%  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.51%      0.01s  0.25%  github.com/sustainable-computing-io/kepler/internal/device.(*AggregatedZone).Energy
     0.01s  0.25%  0.76%      0.01s  0.25%  github.com/sustainable-computing-io/kepler/internal/device.sysfsRaplZone.Energy
         0     0%  0.76%      0.01s  0.25%  github.com/sustainable-computing-io/kepler/internal/exporter/prometheus/collector.(*PlatformCollector).Collect
    -0.01s  0.25%  0.51%     -0.01s  0.25%  github.com/sustainable-computing-io/kepler/internal/exporter/prometheus/collector.(*PowerCollector).collectContainerMetrics
         0     0%  0.51%     -0.01s  0.25%  github.com/sustainable-computing-io/kepler/internal/exporter/prometheus/collector.(*cpuInfoCollector).Collect
    -0.01s  0.25%  0.25%     -0.01s  0.25%  github.com/sustainable-computing-io/kepler/internal/exporter/prometheus/collector.(*realProcFS).CPUInfo
    -0.01s  0.25%     0%     -0.01s  0.25%  github.com/sustainable-computing-io/kepler/internal/logger.handlerForFormat.func1
     0.01s  0.25%  0.25%      0.01s  0.25%  github.com/sustainable-computing-io/kepler/internal/monitor.(*PowerMonitor).calculateContainerPower
         0     0%  0.25%      0.01s  0.25%  github.com/sustainable-computing-io/kepler/internal/monitor.(*PowerMonitor).calculateNodePower
     0.01s  0.25%  0.51%      0.01s  0.25%  github.com/sustainable-computing-io/kepler/internal/monitor.(*TerminatedResourceTracker[go.shape.*uint8]).Add
         0     0%  0.51%      0.01s  0.25%  github.com/sustainable-computing-io/kepler/internal/platform/redfish.(*PowerReader).ReadAll
     0.01s  0.25%  0.76%      0.01s  0.25%  github.com/sustainable-computing-io/kepler/internal/platform/redfish.(*PowerReader).readPowerSubsystem
         0     0%  0.76%      0.01s  0.25%  github.com/sustainable-computing-io/kepler/internal/platform/redfish.(*Service).Power
     0.01s  0.25%  1.02%      0.01s  0.25%  github.com/sustainable-computing-io/kepler/internal/resource.(*procFSReader).AllProcs
    -0.01s  0.25%  0.76%     -0.01s  0.25%  github.com/sustainable-computing-io/kepler/internal/resource.(*procFSReader).CPUUsageRatio
     0.01s  0.25%  1.02%      0.01s  0.25%  github.com/sustainable-computing-io/kepler/internal/resource.(*procWrapper).CmdLine
         0     0%  1.02%     -0.01s  0.25%  github.com/sustainable-computing-io/kepler/internal/resource.(*resourceInformer).Refresh.func3
         0     0%  1.02%     -0.01s  0.25%  github.com/sustainable-computing-io/kepler/internal/resource.(*resourceInformer).refreshNode
         0     0%  1.02%      0.01s  0.25%  github.com/sustainable-computing-io/kepler/internal/resource.computeTypeInfoFromProc.func2
         0     0%  1.02%      0.01s  0.25%  github.com/sustainable-computing-io/kepler/internal/resource.newProcess
         0     0%  1.02%      0.01s  0.25%  github.com/sustainable-computing-io/kepler/internal/resource.vmInfoFromProc
💾 Memory Comparison with base Kepler (Inuse)
File: kepler
Build ID: 2d18fae1ed15df03d9662c59a560a1cac552abb9
Type: inuse_space
Time: 2026-03-31 17:23:57 UTC
Duration: 120.02s, Total samples = 11676.83kB 
Active filters:
   show=github.com/sustainable-computing-io
Showing nodes accounting for -2057.83kB, 17.62% of 11676.83kB total
      flat  flat%   sum%        cum   cum%
         0     0%     0% -3584.33kB 30.70%  github.com/sustainable-computing-io/kepler/internal/exporter/prometheus/collector.(*PowerCollector).Collect
         0     0%     0%  2050.80kB 17.56%  github.com/sustainable-computing-io/kepler/internal/monitor.(*PowerMonitor).calculatePower
         0     0%     0%  2050.80kB 17.56%  github.com/sustainable-computing-io/kepler/internal/monitor.(*PowerMonitor).refreshSnapshot
         0     0%     0%  2050.80kB 17.56%  github.com/sustainable-computing-io/kepler/internal/monitor.(*PowerMonitor).synchronizedPowerRefresh
         0     0%     0%  2050.80kB 17.56%  github.com/sustainable-computing-io/kepler/internal/monitor.(*PowerMonitor).synchronizedPowerRefresh.func1
-1024.09kB  8.77%  8.77% -2048.37kB 17.54%  github.com/sustainable-computing-io/kepler/internal/monitor.(*Process).Clone (inline)
         0     0%  8.77% -2048.37kB 17.54%  github.com/sustainable-computing-io/kepler/internal/monitor.(*Snapshot).Clone
-2048.10kB 17.54% 26.31% -2048.10kB 17.54%  github.com/sustainable-computing-io/kepler/internal/exporter/prometheus/collector.(*PowerCollector).collectProcessMetrics
         0     0% 26.31%  1536.42kB 13.16%  github.com/sustainable-computing-io/kepler/internal/monitor.(*PowerMonitor).calculateProcessPower
 1536.42kB 13.16% 13.15%  1536.42kB 13.16%  github.com/sustainable-computing-io/kepler/internal/monitor.newProcess (inline)
         0     0% 13.15%  1026.52kB  8.79%  github.com/sustainable-computing-io/kepler/internal/monitor.(*PowerMonitor).ensureFreshData
         0     0% 13.15%  1024.28kB  8.77%  github.com/sustainable-computing-io/kepler/internal/monitor.(*PowerMonitor).scheduleNextCollection.func1
-1024.28kB  8.77% 21.92% -1024.28kB  8.77%  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% 21.92% -1021.85kB  8.75%  github.com/sustainable-computing-io/kepler/internal/monitor.(*PowerMonitor).Snapshot
         0     0% 21.92%  -528.17kB  4.52%  github.com/sustainable-computing-io/kepler/internal/resource.computeTypeInfoFromProc.func1
 -528.17kB  4.52% 26.45%  -528.17kB  4.52%  github.com/sustainable-computing-io/kepler/internal/resource.containerInfoFromCgroupPaths
         0     0% 26.45%  -528.17kB  4.52%  github.com/sustainable-computing-io/kepler/internal/resource.containerInfoFromProc
  516.01kB  4.42% 22.03%   516.01kB  4.42%  github.com/sustainable-computing-io/kepler/internal/resource.(*procFSReader).CPUUsageRatio
         0     0% 22.03%   516.01kB  4.42%  github.com/sustainable-computing-io/kepler/internal/resource.(*resourceInformer).Refresh.func3
         0     0% 22.03%   516.01kB  4.42%  github.com/sustainable-computing-io/kepler/internal/resource.(*resourceInformer).refreshNode
         0     0% 22.03%   514.38kB  4.41%  github.com/sustainable-computing-io/kepler/internal/device.(*AggregatedZone).Energy
  514.38kB  4.41% 17.62%   514.38kB  4.41%  github.com/sustainable-computing-io/kepler/internal/device.sysfsRaplZone.Energy
         0     0% 17.62%   514.38kB  4.41%  github.com/sustainable-computing-io/kepler/internal/exporter/prometheus/collector.(*gpuInfoCollector).Collect
         0     0% 17.62%   514.38kB  4.41%  github.com/sustainable-computing-io/kepler/internal/monitor.(*PowerMonitor).calculateNodePower
💾 Memory Comparison with base Kepler (Alloc)
File: kepler
Build ID: 2d18fae1ed15df03d9662c59a560a1cac552abb9
Type: alloc_space
Time: 2026-03-31 17:23:57 UTC
Duration: 120.02s, Total samples = 193884.90kB 
Active filters:
   show=github.com/sustainable-computing-io
Showing nodes accounting for -12776.40kB, 6.59% of 193884.90kB total
Dropped 2 nodes (cum <= 969.42kB)
      flat  flat%   sum%        cum   cum%
-10717.03kB  5.53%  5.53% -10717.03kB  5.53%  github.com/sustainable-computing-io/kepler/internal/exporter/prometheus/collector.(*realProcFS).CPUInfo
  512.02kB  0.26%  5.26% -10205.01kB  5.26%  github.com/sustainable-computing-io/kepler/internal/exporter/prometheus/collector.(*cpuInfoCollector).Collect
         0     0%  5.26% -6639.99kB  3.42%  github.com/sustainable-computing-io/kepler/internal/exporter/prometheus/collector.(*PowerCollector).Collect
         0     0%  5.26%  6174.83kB  3.18%  github.com/sustainable-computing-io/kepler/internal/exporter/prometheus/collector.(*gpuInfoCollector).Collect
-4603.85kB  2.37%  7.64% -4603.85kB  2.37%  github.com/sustainable-computing-io/kepler/internal/exporter/prometheus/collector.(*PowerCollector).collectProcessMetrics
         0     0%  7.64%  4138.70kB  2.13%  github.com/sustainable-computing-io/kepler/internal/monitor.(*PowerMonitor).Snapshot
 3064.05kB  1.58%  6.06%  3064.05kB  1.58%  github.com/sustainable-computing-io/kepler/internal/resource.(*procWrapper).CPUTime
         0     0%  6.06%  2551.80kB  1.32%  github.com/sustainable-computing-io/kepler/internal/resource.(*resourceInformer).updateProcessCache
         0     0%  6.06%  2551.80kB  1.32%  github.com/sustainable-computing-io/kepler/internal/resource.populateProcessFields
 1050.86kB  0.54%  5.52%  2074.59kB  1.07%  github.com/sustainable-computing-io/kepler/internal/monitor.(*Snapshot).Clone
         0     0%  5.52%  2064.11kB  1.06%  github.com/sustainable-computing-io/kepler/internal/monitor.(*PowerMonitor).ensureFreshData
-1540.60kB  0.79%  6.31% -2052.62kB  1.06%  github.com/sustainable-computing-io/kepler/internal/resource.(*procFSReader).AllProcs
-2048.56kB  1.06%  7.37% -2048.56kB  1.06%  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%  7.37%  2046.53kB  1.06%  github.com/sustainable-computing-io/kepler/internal/monitor.(*PowerMonitor).calculatePower
         0     0%  7.37%  2046.53kB  1.06%  github.com/sustainable-computing-io/kepler/internal/monitor.(*PowerMonitor).refreshSnapshot
         0     0%  7.37%  2046.53kB  1.06%  github.com/sustainable-computing-io/kepler/internal/monitor.(*PowerMonitor).synchronizedPowerRefresh
         0     0%  7.37%  2046.53kB  1.06%  github.com/sustainable-computing-io/kepler/internal/monitor.(*PowerMonitor).synchronizedPowerRefresh.func1
-1570.33kB  0.81%  8.18% -1570.33kB  0.81%  github.com/sustainable-computing-io/kepler/internal/resource.containerInfoFromCgroupPaths
-1555.82kB   0.8%  8.98% -1555.82kB   0.8%  github.com/sustainable-computing-io/kepler/internal/resource.(*procFSReader).CPUUsageRatio
         0     0%  8.98% -1555.82kB   0.8%  github.com/sustainable-computing-io/kepler/internal/resource.(*resourceInformer).Refresh.func3
         0     0%  8.98% -1555.82kB   0.8%  github.com/sustainable-computing-io/kepler/internal/resource.(*resourceInformer).refreshNode
         0     0%  8.98% -1056.33kB  0.54%  github.com/sustainable-computing-io/kepler/internal/resource.computeTypeInfoFromProc.func1
         0     0%  8.98% -1056.33kB  0.54%  github.com/sustainable-computing-io/kepler/internal/resource.containerInfoFromProc
  512.01kB  0.26%  8.72%  1028.65kB  0.53%  github.com/sustainable-computing-io/kepler/internal/exporter/prometheus/collector.(*PlatformCollector).Collect
         0     0%  8.72%  1026.42kB  0.53%  github.com/sustainable-computing-io/kepler/internal/device.(*AggregatedZone).Energy
 1026.42kB  0.53%  8.19%  1026.42kB  0.53%  github.com/sustainable-computing-io/kepler/internal/device.sysfsRaplZone.Energy
         0     0%  8.19%  1026.42kB  0.53%  github.com/sustainable-computing-io/kepler/internal/monitor.(*PowerMonitor).calculateNodePower
 3072.30kB  1.58%  6.60%  1023.73kB  0.53%  github.com/sustainable-computing-io/kepler/internal/monitor.(*Process).Clone (inline)
  525.43kB  0.27%  6.33%   525.47kB  0.27%  github.com/sustainable-computing-io/kepler/internal/monitor.(*PowerMonitor).calculateProcessPower
         0     0%  6.33%   516.64kB  0.27%  github.com/sustainable-computing-io/kepler/internal/platform/redfish.(*PowerReader).ReadAll
  516.64kB  0.27%  6.06%   516.64kB  0.27%  github.com/sustainable-computing-io/kepler/internal/platform/redfish.(*PowerReader).readPowerSubsystem
         0     0%  6.06%   516.64kB  0.27%  github.com/sustainable-computing-io/kepler/internal/platform/redfish.(*Service).Power
     514kB  0.27%  5.80%      514kB  0.27%  github.com/sustainable-computing-io/kepler/internal/resource.(*procWrapper).Cgroups
 -512.25kB  0.26%  6.06%  -512.25kB  0.26%  github.com/sustainable-computing-io/kepler/internal/resource.(*procWrapper).Comm
 -512.02kB  0.26%  6.33%  -512.02kB  0.26%  github.com/sustainable-computing-io/kepler/internal/resource.WrapProc (inline)
         0     0%  6.33%  -505.11kB  0.26%  github.com/sustainable-computing-io/kepler/internal/resource.computeTypeInfoFromProc.func2
 -505.11kB  0.26%  6.59%  -505.11kB  0.26%  github.com/sustainable-computing-io/kepler/internal/resource.vmInfoFromCmdLine
         0     0%  6.59%  -505.11kB  0.26%  github.com/sustainable-computing-io/kepler/internal/resource.vmInfoFromProc
         0     0%  6.59%   499.18kB  0.26%  github.com/sustainable-computing-io/kepler/internal/resource.(*resourceInformer).refreshProcesses
   -4.54kB 0.0023%  6.59%   494.64kB  0.26%  github.com/sustainable-computing-io/kepler/internal/resource.(*resourceInformer).Refresh

⬇️ Download the Profiling artifacts from the Actions Summary page

📦 Artifact name: profile-artifacts-2452

🔧 Or use GitHub CLI to download artifacts:

gh run download 23799234875 -n profile-artifacts-2452

@vimalk78

vimalk78 commented Apr 8, 2026

Copy link
Copy Markdown
Collaborator

The fix in calculatePower() makes sense — Refresh() needs to happen before calculateNodePower() so that pm.resources.Node().CPUUsageRatio reflects the current cycle's utilization instead of the previous one.

However, I'm not sure the reorder is necessary. firstReading() is a seed/baseline — power is set to 0 for energy zones since there's no previous reading to compute ΔE/Δt. The Refresh() call there seeds the informer so the next calculatePower() cycle has resource data available. Moving it before firstNodeRead() changes the initial active/idle energy split, but that's just the baseline and not where the stale-data bug manifests.

Could the firstReading() change be reverted to keep the scope focused on the actual bug in calculatePower()?

Also, the .pre-commit-config.yaml version bumps should be a separate commit (or PR)

@github-actions github-actions Bot added chore Routine tasks or maintenance refactor Code refactoring without changing functionality labels Apr 17, 2026
HananAwwad and others added 20 commits April 17, 2026 15:09
…le utilization

Fixes sustainable-computing-io#2446

- Move resources.Refresh() before firstNodeRead and calculateNodePower
- Add integration test using SwitchingResourceInformer to verify no snapshot lag

Signed-off-by: Hanan Awwad <eng.hanan.awwad@gmail.com>
Signed-off-by: Sunyanan Choochotkaew <sunyanan.choochotkaew1@ibm.com>
Signed-off-by: Hanan Awwad <eng.hanan.awwad@gmail.com>
Signed-off-by: Hanan Awwad <eng.hanan.awwad@gmail.com>
Signed-off-by: Hanan Awwad <eng.hanan.awwad@gmail.com>
Bumps the github-actions group with 3 updates: [actions/setup-go](https://github.com/actions/setup-go), [azure/setup-helm](https://github.com/azure/setup-helm) and [codecov/codecov-action](https://github.com/codecov/codecov-action).

Updates `actions/setup-go` from 6.3.0 to 6.4.0
- [Release notes](https://github.com/actions/setup-go/releases)
- [Commits](actions/setup-go@v6.3.0...v6.4.0)

Updates `azure/setup-helm` from 4 to 5
- [Release notes](https://github.com/azure/setup-helm/releases)
- [Changelog](https://github.com/Azure/setup-helm/blob/main/CHANGELOG.md)
- [Commits](Azure/setup-helm@v4...v5)

Updates `codecov/codecov-action` from 5.5.3 to 6.0.0
- [Release notes](https://github.com/codecov/codecov-action/releases)
- [Changelog](https://github.com/codecov/codecov-action/blob/main/CHANGELOG.md)
- [Commits](codecov/codecov-action@v5.5.3...v6.0.0)

---
updated-dependencies:
- dependency-name: actions/setup-go
  dependency-version: 6.4.0
  dependency-type: direct:production
  update-type: version-update:semver-minor
  dependency-group: github-actions
- dependency-name: azure/setup-helm
  dependency-version: '5'
  dependency-type: direct:production
  update-type: version-update:semver-major
  dependency-group: github-actions
- dependency-name: codecov/codecov-action
  dependency-version: 6.0.0
  dependency-type: direct:production
  update-type: version-update:semver-major
  dependency-group: github-actions
...

Signed-off-by: dependabot[bot] <support@github.com>
Signed-off-by: Hanan Awwad <eng.hanan.awwad@gmail.com>
…uting-io#2453)

This commit disables the sarif-lint rule for pinned-deps in the scorecard workflow.

Signed-off-by: Vibhu Prashar <vibhu.sharma2929@gmail.com>
Signed-off-by: Hanan Awwad <eng.hanan.awwad@gmail.com>
…#2454)

This commit keeps the scorecard analysis job limited to `uses` step
so scorecard-action can publish the results successfully.

This moves SARIF filtering and core=scanning upload into a follow-up
job

Signed-off-by: Vibhu Prashar <vibhu.sharma2929@gmail.com>
Signed-off-by: Hanan Awwad <eng.hanan.awwad@gmail.com>
This commit updates the stale docs in the repo

Signed-off-by: vprashar2929 <vibhu.sharma2929@gmail.com>
Signed-off-by: Hanan Awwad <eng.hanan.awwad@gmail.com>
Signed-off-by: Sunyanan Choochotkaew <sunyanan.choochotkaew1@ibm.com>
Signed-off-by: Hanan Awwad <eng.hanan.awwad@gmail.com>
Signed-off-by: nikimanoledaki <niki.manoledaki@grafana.com>
Signed-off-by: Hanan Awwad <eng.hanan.awwad@gmail.com>
Proposals start as `draft-YYYYMMDD-short-title.md` and receive an
`EP-XXX` number only after approval. Prevents numbering conflicts
when draft PRs are closed or superseded.

Signed-off-by: nikimanoledaki <niki.manoledaki@grafana.com>
Signed-off-by: Hanan Awwad <eng.hanan.awwad@gmail.com>
Rename `EP_001` to `EP-001` and `EP_TEMPLATE` to `EP-TEMPLATE` for
consistent naming across all EPs. Update all references in `index.md`
and `AGENTS.md`.

Aligns with KEP file naming conventions:
https://github.com/kubernetes/enhancements/blob/master/keps/sig-architecture/0000-kep-process/README.md#git-and-github-implementation

Signed-off-by: nikimanoledaki <niki.manoledaki@grafana.com>
Signed-off-by: Hanan Awwad <eng.hanan.awwad@gmail.com>
Add `Authors`, `Reviewers`, `Approvers`, and `Editor` metadata fields
to the EP template, based on KEP metadata:
https://github.com/kubernetes/enhancements/blob/master/keps/sig-architecture/0000-kep-process/README.md#kep-metadata

Signed-off-by: nikimanoledaki <niki.manoledaki@grafana.com>
Signed-off-by: Hanan Awwad <eng.hanan.awwad@gmail.com>
Signed-off-by: nikimanoledaki <niki.manoledaki@grafana.com>
Signed-off-by: Hanan Awwad <eng.hanan.awwad@gmail.com>
Signed-off-by: nikimanoledaki <niki.manoledaki@grafana.com>
Signed-off-by: Hanan Awwad <eng.hanan.awwad@gmail.com>
This commit moves the nodename fallback logic from the exporter layer to the config layer.

Signed-off-by: vprashar2929 <vibhu.sharma2929@gmail.com>
Signed-off-by: Hanan Awwad <eng.hanan.awwad@gmail.com>
Signed-off-by: Sunyanan Choochotkaew <sunyanan.choochotkaew1@ibm.com>
Signed-off-by: Hanan Awwad <eng.hanan.awwad@gmail.com>
Modified cmd/kepler/main.go to automatically deploy HWMON when RAPL
is not available. This can be overriden by setting ForceEnabled to
true in the experimental hwmon field in which case kepler will force
HWMON power meter to be used only.

Renamed experimental.hwmon.enabled to experimental.hwmon.forceEnabled
for clarity.

Signed-off-by: Kaiyi Liu <kaliu@redhat.com>
Signed-off-by: Hanan Awwad <eng.hanan.awwad@gmail.com>
Bumps the github-actions group with 2 updates: [softprops/action-gh-release](https://github.com/softprops/action-gh-release) and [actions/stale](https://github.com/actions/stale).

Updates `softprops/action-gh-release` from 2 to 3
- [Release notes](https://github.com/softprops/action-gh-release/releases)
- [Changelog](https://github.com/softprops/action-gh-release/blob/master/CHANGELOG.md)
- [Commits](softprops/action-gh-release@v2...v3)

Updates `actions/stale` from 9 to 10
- [Release notes](https://github.com/actions/stale/releases)
- [Changelog](https://github.com/actions/stale/blob/main/CHANGELOG.md)
- [Commits](actions/stale@v9...v10)

---
updated-dependencies:
- dependency-name: softprops/action-gh-release
  dependency-version: '3'
  dependency-type: direct:production
  update-type: version-update:semver-major
  dependency-group: github-actions
- dependency-name: actions/stale
  dependency-version: '10'
  dependency-type: direct:production
  update-type: version-update:semver-major
  dependency-group: github-actions
...

Signed-off-by: dependabot[bot] <support@github.com>
Signed-off-by: Hanan Awwad <eng.hanan.awwad@gmail.com>
Bumps [github.com/moby/spdystream](https://github.com/moby/spdystream) from 0.5.0 to 0.5.1.
- [Release notes](https://github.com/moby/spdystream/releases)
- [Commits](moby/spdystream@v0.5.0...v0.5.1)

---
updated-dependencies:
- dependency-name: github.com/moby/spdystream
  dependency-version: 0.5.1
  dependency-type: indirect
...

Signed-off-by: dependabot[bot] <support@github.com>
Signed-off-by: Hanan Awwad <eng.hanan.awwad@gmail.com>
Bumps [golang.org/x/crypto](https://github.com/golang/crypto) from 0.42.0 to 0.45.0.
- [Commits](golang/crypto@v0.42.0...v0.45.0)

---
updated-dependencies:
- dependency-name: golang.org/x/crypto
  dependency-version: 0.45.0
  dependency-type: indirect
...

Signed-off-by: dependabot[bot] <support@github.com>
Signed-off-by: Hanan Awwad <eng.hanan.awwad@gmail.com>
@HananAwwad HananAwwad force-pushed the fix/2446-refresh-resources-before-power-calc branch from c78009b to c8eba9b Compare April 17, 2026 22:09
@github-actions github-actions Bot added feat A new feature or enhancement ci Changes to the CI pipeline docs Documentation changes labels Apr 17, 2026
@HananAwwad

Copy link
Copy Markdown
Author

I have addressed all feedback: reverted the pre-commit version bumps, reverted the firstReading reorder, and added mock coverage

@HananAwwad

Copy link
Copy Markdown
Author

any updates about this pull request?

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

Labels

chore Routine tasks or maintenance ci Changes to the CI pipeline docs Documentation changes feat A new feature or enhancement fix A bug fix refactor Code refactoring without changing functionality

Projects

None yet

Development

Successfully merging this pull request may close these issues.

Energy calculation uses stale resource utilization due to refresh ordering

5 participants