mirror of
https://github.com/newnius/YAO-scheduler.git
synced 2025-12-16 16:36:45 +00:00
bugfix
This commit is contained in:
@@ -3,11 +3,14 @@ package main
|
||||
import (
|
||||
log "github.com/sirupsen/logrus"
|
||||
"sync"
|
||||
"strings"
|
||||
)
|
||||
|
||||
type Optimizer struct {
|
||||
scheduler Scheduler
|
||||
killedFlag bool
|
||||
|
||||
predicts map[string]OptimizerJobExecutionTime
|
||||
}
|
||||
|
||||
var optimizerInstance *Optimizer
|
||||
@@ -19,11 +22,42 @@ func InstanceOfOptimizer() *Optimizer {
|
||||
|
||||
if optimizerInstance == nil {
|
||||
optimizerInstance = &Optimizer{}
|
||||
optimizerInstance.predicts = map[string]OptimizerJobExecutionTime{}
|
||||
}
|
||||
return optimizerInstance
|
||||
}
|
||||
|
||||
func (jhl *Optimizer) feed(job string, utils []int) {
|
||||
func (optimizer *Optimizer) feed(job string, utils []int) {
|
||||
log.Info("optimizer feed")
|
||||
log.Info(job, utils)
|
||||
|
||||
go func() {
|
||||
str := strings.Split(job, "-")
|
||||
if len(str) == 2 {
|
||||
preCnt := 0
|
||||
for i := 0; i < len(utils); i++ {
|
||||
if utils[i] > 15 {
|
||||
break
|
||||
}
|
||||
preCnt++
|
||||
}
|
||||
|
||||
postCnt := 0
|
||||
for i := len(utils); i >= 0; i-- {
|
||||
if utils[i] > 15 {
|
||||
break
|
||||
}
|
||||
postCnt++
|
||||
}
|
||||
|
||||
if _, ok := optimizer.predicts[str[0]]; !ok {
|
||||
optimizer.predicts[str[0]] = OptimizerJobExecutionTime{}
|
||||
}
|
||||
predict := optimizer.predicts[str[0]]
|
||||
predict.Pre = ((predict.Pre * predict.Version) + preCnt) / (predict.Version + 1)
|
||||
predict.Post = ((predict.Post * predict.Version) + postCnt) / (predict.Version + 1)
|
||||
predict.Total = ((predict.Total * predict.Version) + len(utils)) / (predict.Version + 1)
|
||||
predict.Version++
|
||||
}
|
||||
}()
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user