Merge pull request #715 from Lomanic/issue599process

[process] Fix #599 cap percent values returned by *Percent() between 0 and 100
pull/733/head
shirou 6 years ago committed by GitHub
commit 3ad4fbbb0c
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23

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

Loading…
Cancel
Save