[process] Fix #599 cap percent values returned by *Percent() between 0 and 100
This commit is contained in:
parent
428e65cdb0
commit
f4e23559a2
|
@ -4,6 +4,7 @@ import (
|
|||
"context"
|
||||
"encoding/json"
|
||||
"errors"
|
||||
"math"
|
||||
"runtime"
|
||||
"time"
|
||||
|
||||
|
@ -212,7 +213,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
|
||||
|
@ -233,7 +234,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
|
||||
|
@ -258,5 +259,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
|
||||
}
|
||||
|
|
Loading…
Reference in New Issue