diff --git a/process/process.go b/process/process.go index 3866fae..f44abb8 100644 --- a/process/process.go +++ b/process/process.go @@ -4,6 +4,7 @@ import ( "context" "encoding/json" "errors" + "math" "runtime" "time" @@ -197,7 +198,7 @@ func calculatePercent(t1, t2 *cpu.TimesStat, delta float64, numcpu int) float64 } delta_proc := t2.Total() - t1.Total() overall_percent := ((delta_proc / delta) * 100) * float64(numcpu) - return overall_percent + return math.Min(100, math.Max(0, overall_percent)) } // MemoryPercent returns how many percent of the total RAM this process uses @@ -218,7 +219,7 @@ func (p *Process) MemoryPercentWithContext(ctx context.Context) (float32, error) } used := processMemory.RSS - return (100 * float32(used) / float32(total)), nil + return float32(math.Min(100, math.Max(0, (100*float64(used)/float64(total))))), nil } // CPU_Percent returns how many percent of the CPU time this process uses @@ -243,5 +244,5 @@ func (p *Process) CPUPercentWithContext(ctx context.Context) (float64, error) { return 0, nil } - return 100 * cput.Total() / totalTime, nil + return math.Min(100, math.Max(0, 100*cput.Total()/totalTime)), nil }