fix intel engine delta tracking across cache keys

- plus a couple tiny lil refactors
This commit is contained in:
henrygd
2025-10-02 20:24:54 -04:00
parent 7d6230de74
commit b1fd7e6695
2 changed files with 11 additions and 7 deletions

View File

@@ -5,6 +5,7 @@ import (
"bytes"
"encoding/json"
"fmt"
"maps"
"os/exec"
"regexp"
"strconv"
@@ -308,6 +309,9 @@ func (gm *GPUManager) calculateGPUAverage(id string, gpu *system.GPUData, cacheK
gpuAvg.Power = twoDecimals(deltaPower / float64(deltaCount))
if gpu.Engines != nil {
// make fresh map for averaged engine metrics to avoid mutating
// the accumulator map stored in gm.GpuDataMap
gpuAvg.Engines = make(map[string]float64, len(gpu.Engines))
gpuAvg.Usage = gm.calculateIntelGPUUsage(&gpuAvg, gpu, lastSnapshot, deltaCount)
gpuAvg.PowerPkg = twoDecimals(deltaPowerPkg / float64(deltaCount))
} else {
@@ -369,9 +373,7 @@ func (gm *GPUManager) storeSnapshot(id string, gpu *system.GPUData, cacheKey uin
}
if gpu.Engines != nil {
snapshot.engines = make(map[string]float64, len(gpu.Engines))
for name, value := range gpu.Engines {
snapshot.engines[name] = value
}
maps.Copy(snapshot.engines, gpu.Engines)
}
gm.lastSnapshots[cacheKey][id] = snapshot
}

View File

@@ -218,10 +218,12 @@ export default memo(function SystemDetail({ name }: { name: string }) {
`rt_metrics`,
(data: { container: ContainerStatsRecord[]; info: SystemInfo; stats: SystemStats }) => {
// console.log("received realtime metrics", data)
const newContainerData = makeContainerData([
{ created: Date.now(), stats: data.container } as unknown as ContainerStatsRecord,
])
setContainerData((prevData) => addEmptyValues(prevData, prevData.slice(-59).concat(newContainerData), 1000))
if (data.container.length > 0) {
const newContainerData = makeContainerData([
{ created: Date.now(), stats: data.container } as unknown as ContainerStatsRecord,
])
setContainerData((prevData) => addEmptyValues(prevData, prevData.slice(-59).concat(newContainerData), 1000))
}
setSystemStats((prevStats) =>
addEmptyValues(
prevStats,