[process] Fix #599 cap percent values returned by *Percent() between 0 and 100

pull/715/head
Lomanic 6 years ago
parent 428e65cdb0
commit f4e23559a2

@ -4,6 +4,7 @@ import (
"context" "context"
"encoding/json" "encoding/json"
"errors" "errors"
"math"
"runtime" "runtime"
"time" "time"
@ -212,7 +213,7 @@ func calculatePercent(t1, t2 *cpu.TimesStat, delta float64, numcpu int) float64
} }
delta_proc := t2.Total() - t1.Total() delta_proc := t2.Total() - t1.Total()
overall_percent := ((delta_proc / delta) * 100) * float64(numcpu) 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 // MemoryPercent returns how many percent of the total RAM this process uses
@ -233,7 +234,7 @@ func (p *Process) MemoryPercentWithContext(ctx context.Context) (float32, error)
} }
used := processMemory.RSS 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 // CPU_Percent returns how many percent of the CPU time this process uses
@ -258,5 +259,5 @@ func (p *Process) CPUPercentWithContext(ctx context.Context) (float64, error) {
return 0, nil return 0, nil
} }
return 100 * cput.Total() / totalTime, nil return math.Min(100, math.Max(0, 100*cput.Total()/totalTime)), nil
} }

Loading…
Cancel
Save