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

This commit is contained in:
Lomanic 2019-07-07 20:19:25 +02:00
parent 428e65cdb0
commit f4e23559a2
1 changed files with 4 additions and 3 deletions

View File

@ -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
}