code cleanup

This commit is contained in:
alu
2026-08-06 09:21:49 -07:00
parent aa114e4f73
commit 0998633e5c
3 changed files with 20 additions and 38 deletions
+1
View File
@@ -22,6 +22,7 @@ type PowerDriver interface {
type ClockSensor struct {
path string
number int
Name string
FrequencyGHz float64
}
+17 -37
View File
@@ -2,7 +2,6 @@ package drivers
import (
"fmt"
"math"
"os"
"path/filepath"
"strconv"
@@ -10,6 +9,8 @@ import (
"time"
)
const milliJoulePerJoule = float64(1000000)
type EnergyState struct {
lastEnergy uint64
lastTime time.Time
@@ -72,19 +73,9 @@ func getRaplLabel(inputPath string) string {
}
func (r *RaplDriver) calculateEnergyDelta(inputs []string, out *[]PowerSensor) {
now := time.Now()
if r.energyState == nil {
r.energyState = make(map[string]EnergyState)
}
for _, rawPath := range inputs {
key, err := filepath.EvalSymlinks(rawPath)
if err != nil {
key = filepath.Clean(rawPath)
}
valBytes, err := os.ReadFile(key)
for _, path := range inputs {
now := time.Now()
valBytes, err := os.ReadFile(path)
if err != nil {
continue
}
@@ -94,49 +85,38 @@ func (r *RaplDriver) calculateEnergyDelta(inputs []string, out *[]PowerSensor) {
continue
}
prevState, exists := r.energyState[key]
sensorLabel := getRaplLabel(path)
prevState, exists := r.energyState[path]
if !exists {
r.energyState[key] = EnergyState{
r.energyState[path] = EnergyState{
lastEnergy: microJoules,
lastTime: now,
}
*out = append(*out, PowerSensor{
Name: getRaplLabel(key),
Name: sensorLabel,
Watts: 0.0,
})
continue
}
timeDiff := now.Sub(prevState.lastTime).Seconds()
if timeDiff < 0.05 {
continue
}
maxRange := uint64(math.MaxUint64)
rangeBytes, err := os.ReadFile(filepath.Join(filepath.Dir(key), "max_energy_range_uj"))
if err == nil {
if parsedMax, err := strconv.ParseUint(strings.TrimSpace(string(rangeBytes)), 10, 64); err == nil && parsedMax > 0 {
maxRange = parsedMax
}
}
// technically the energy counter could overflow, at ~18 TerraJoules
// the value will be off for that one measurement, then become correct again
energyDiff := float64(microJoules - prevState.lastEnergy)
var energyDiff uint64
if microJoules >= prevState.lastEnergy {
energyDiff = microJoules - prevState.lastEnergy
} else {
energyDiff = (maxRange - prevState.lastEnergy) + microJoules
}
watts := (energyDiff / milliJoulePerJoule) / timeDiff
watts := (float64(energyDiff) / 1_000_000.0) / timeDiff
r.energyState[key] = EnergyState{
r.energyState[path] = EnergyState{
lastEnergy: microJoules,
lastTime: now,
}
*out = append(*out, PowerSensor{
Name: getRaplLabel(key),
Name: sensorLabel,
Watts: watts,
})
}
+2 -1
View File
@@ -53,6 +53,7 @@ func (r *SysDriver) ReadClockSensors() ([]ClockSensor, error) {
clockSensors = append(clockSensors, ClockSensor{
path: path,
number: coreID,
Name: fmt.Sprintf("core %d", coreID),
FrequencyGHz: khz / 1000000.0, // Convert KHz to GHz
})
@@ -60,7 +61,7 @@ func (r *SysDriver) ReadClockSensors() ([]ClockSensor, error) {
// Guarantee numerical order by core ID
sort.Slice(clockSensors, func(i, j int) bool {
return clockSensors[i].Name < clockSensors[j].Name
return clockSensors[i].number < clockSensors[j].number
})
return clockSensors, nil