Use existing Mean
and Variance
functions
Available in github.com/montanaflynn/stats
This commit is contained in:
parent
46be28ef8d
commit
39d1cf980c
2 changed files with 5 additions and 21 deletions
|
@ -10,6 +10,7 @@ import (
|
||||||
"os/exec"
|
"os/exec"
|
||||||
"syscall"
|
"syscall"
|
||||||
"time"
|
"time"
|
||||||
|
"github.com/montanaflynn/stats"
|
||||||
)
|
)
|
||||||
|
|
||||||
func Start(quit chan struct{}, logging *bool, logMType chan elecLogDef.LogMessageType, logMsg chan string, s scheduler.Scheduler) {
|
func Start(quit chan struct{}, logging *bool, logMType chan elecLogDef.LogMessageType, logMsg chan string, s scheduler.Scheduler) {
|
||||||
|
@ -65,10 +66,10 @@ func Start(quit chan struct{}, logging *bool, logMType chan elecLogDef.LogMessag
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
cpuVariance := calcVariance(cpuUtils)
|
cpuVariance, _ := stats.Variance(cpuUtils)
|
||||||
cpuTaskSharesVariance := calcVariance(cpuTaskShares)
|
cpuTaskSharesVariance, _ := stats.Variance(cpuTaskShares)
|
||||||
memVariance := calcVariance(memUtils)
|
memVariance, _ := stats.Variance(memUtils)
|
||||||
memTaskSharesVariance := calcVariance(memTaskShares)
|
memTaskSharesVariance, _ := stats.Variance(memTaskShares)
|
||||||
|
|
||||||
logMType <- elecLogDef.DEG_COL
|
logMType <- elecLogDef.DEG_COL
|
||||||
logMsg <- fmt.Sprintf("%f, %f, %f, %f", cpuVariance, cpuTaskSharesVariance, memVariance, memTaskSharesVariance)
|
logMsg <- fmt.Sprintf("%f, %f, %f, %f", cpuVariance, cpuTaskSharesVariance, memVariance, memTaskSharesVariance)
|
||||||
|
|
17
pcp/utils.go
17
pcp/utils.go
|
@ -59,23 +59,6 @@ func sumAndNormalize(tokenSlice []string, normalizer float64) float64 {
|
||||||
return sum / normalizer
|
return sum / normalizer
|
||||||
}
|
}
|
||||||
|
|
||||||
func calcMean(a []float64) float64 {
|
|
||||||
total := 0.0
|
|
||||||
for _, v := range a {
|
|
||||||
total += v
|
|
||||||
}
|
|
||||||
return total / float64(len(a))
|
|
||||||
}
|
|
||||||
|
|
||||||
func calcVariance(a []float64) float64 {
|
|
||||||
mean := calcMean(a)
|
|
||||||
total := 0.0
|
|
||||||
for _, v := range a {
|
|
||||||
total += math.Pow(mean-v, 2)
|
|
||||||
}
|
|
||||||
return total / float64(len(a))
|
|
||||||
}
|
|
||||||
|
|
||||||
func utilization(used string, free string) float64 {
|
func utilization(used string, free string) float64 {
|
||||||
u, _ := strconv.ParseFloat(used, 64)
|
u, _ := strconv.ParseFloat(used, 64)
|
||||||
f, _ := strconv.ParseFloat(free, 64)
|
f, _ := strconv.ParseFloat(free, 64)
|
||||||
|
|
Reference in a new issue