diff --git a/utils/hwstats/cpu.go b/utils/hwstats/cpu.go index 3edbb177..165f426f 100644 --- a/utils/hwstats/cpu.go +++ b/utils/hwstats/cpu.go @@ -205,8 +205,14 @@ func (c *CPUStats) monitorProcesses() { } for pid, stat := range procStats { + pidForGroup := pid + for ppids[pidForGroup] != self.PID && ppids[pidForGroup] != 0 { + // bundle usage up to first child of main go process + pidForGroup = ppids[pidForGroup] + } + memory := stat.RSS * pageSize - stats.Memory[pid] += memory + stats.Memory[pidForGroup] += memory stats.MemoryTotal += memory // process usage as percent of total host cpu @@ -215,13 +221,8 @@ func (c *CPUStats) monitorProcesses() { continue } - for ppids[pid] != self.PID && ppids[pid] != 0 { - // bundle usage up to first child of main go process - pid = ppids[pid] - } - cpu := hostCPU * procPercentUsage / 100 / (totalHostTime - prevTotalTime) - stats.Cpu[pid] += cpu + stats.Cpu[pidForGroup] += cpu stats.CpuIdle -= cpu }