提交 535e0aad 编写于 作者: H hanxinke

atune:modify abnormal print information

上级 d71da5a1
......@@ -154,7 +154,7 @@ func (y *YamlPrjSvr) RunSet(optStr string) error {
for _, obj := range y.Object {
out, err := ExecCommand(obj.Info.GetScript)
if err != nil {
return err
return fmt.Errorf("faild to exec %s, err: %v", obj.Info.GetScript, err)
}
if strings.TrimSpace(string(out)) == paraMap[obj.Name] {
......@@ -166,7 +166,7 @@ func (y *YamlPrjSvr) RunSet(optStr string) error {
log.Info("set script:", newScript)
_, err = ExecCommand(newScript)
if err != nil {
return err
return fmt.Errorf("faild to exec %s, err: %v", newScript, err)
}
}
return nil
......@@ -188,13 +188,13 @@ func (y *YamlPrjSvr) RestartProject() error {
if needRestart {
out, err := ExecCommand(stopWorkload)
if err != nil {
return err
return fmt.Errorf("faild to exec %s, err: %v", stopWorkload, err)
}
log.Debug(string(out))
out, err = ExecCommand(startWorkload)
if err != nil {
return err
return fmt.Errorf("faild to exec %s, err: %v", startWorkload, err)
}
log.Debug(string(out))
}
......
......@@ -53,14 +53,7 @@ func (m *Monitor) Run() error {
return err
}
modules := m.Cfg.Raw.Section("monitor").Key("module").String()
if modules == "" {
log.Infof("module conf is empty string")
return nil
}
monitorModules := strings.Split(modules, ",")
monitorPath := config.DefaultCheckerPath
exist, err := utils.PathExist(monitorPath)
if err != nil {
return err
......@@ -72,6 +65,12 @@ func (m *Monitor) Run() error {
}
}
modules := m.Cfg.Raw.Section("monitor").Key("module").String()
if modules == "" {
log.Errorf("module conf is empty string")
return nil
}
monitorModules := strings.Split(modules, ",")
for _, module := range monitorModules {
module = strings.TrimSpace(module)
modulePurpose := strings.Split(module, "_")
......
......@@ -33,7 +33,6 @@ import (
// Optimizer : the type implement the bayes serch service
type Optimizer struct {
Prj *project.YamlPrjSvr
utils.MutexLock
}
//BenchMark : the benchmark data
......@@ -47,15 +46,11 @@ var evalMap map[string]float64
var respPutIns *models.RespPutBody
var iter int
var maxIter int
var optimizer = Optimizer{}
var startIterTime string
// InitTuned method for init tuning
func (o *Optimizer) InitTuned(ch chan *PB.AckCheck, askIter int) error {
//dynamic profle setting
if !optimizer.TryLock() {
return fmt.Errorf("dynamic optimizer search has been in running")
}
maxIter = askIter
if maxIter > o.Prj.Maxiterations {
maxIter = o.Prj.Maxiterations
......@@ -102,7 +97,7 @@ func (o *Optimizer) InitTuned(ch chan *PB.AckCheck, askIter int) error {
out, err := project.ExecCommand(item.Info.GetScript)
if err != nil {
return err
return fmt.Errorf("faild to exec %s, err: %v", item.Info.GetScript, err)
}
initConfigure += strings.TrimSpace(knob.Name+"="+string(out)) + ","
}
......@@ -135,7 +130,7 @@ func (o *Optimizer) InitTuned(ch chan *PB.AckCheck, askIter int) error {
iter = 0
benchmark := BenchMark{Content: nil}
if err := benchmark.DynamicTuned(ch); err != nil {
if _, err := benchmark.DynamicTuned(ch); err != nil {
return err
}
......@@ -145,13 +140,13 @@ func (o *Optimizer) InitTuned(ch chan *PB.AckCheck, askIter int) error {
/*
DynamicTuned method using bayes algorithm to search the best performance parameters
*/
func (bench *BenchMark) DynamicTuned(ch chan *PB.AckCheck) error {
func (bench *BenchMark) DynamicTuned(ch chan *PB.AckCheck) (bool, error) {
var evalValue string
var err error
if bench.Content != nil {
evalValue, err = bench.evalParsing(ch)
if err != nil {
return err
return true, err
}
}
......@@ -163,19 +158,19 @@ func (bench *BenchMark) DynamicTuned(ch chan *PB.AckCheck) error {
respPutIns, err = optPutBody.Put(optimizerPutURL)
if err != nil {
log.Errorf("get setting parameter error: %v", err)
return err
return true, err
}
log.Infof("setting params is: %s", respPutIns.Param)
if err := optimization.Prj.RunSet(respPutIns.Param); err != nil {
log.Error(err)
return err
return true, err
}
log.Info("set the parameter success")
if err := optimization.Prj.RestartProject(); err != nil {
log.Error(err)
return err
return true, err
}
log.Info("restart project success")
......@@ -195,21 +190,15 @@ func (bench *BenchMark) DynamicTuned(ch chan *PB.AckCheck) error {
if err = deleteTask(optimizerPutURL); err != nil {
log.Error(err)
}
optimizer.Unlock()
return nil
return true, nil
}
iter++
return nil
return false, nil
}
//restore tuning config
func (o *Optimizer) RestoreConfigTuned() error {
if !optimizer.TryLock() {
return fmt.Errorf("dynamic optimizer search has been in running")
}
defer optimizer.Unlock()
tuningRestoreConf := path.Join(config.DefaultTempPath, o.Prj.Project+config.TuningRestoreConfig)
exist, err := utils.PathExist(tuningRestoreConf)
if err != nil {
......
......@@ -284,7 +284,7 @@ func (s *ProfileServer) CheckInitProfile(profileInfo *PB.ProfileInfo,
// Analysis method analysis the system traffic load
func (s *ProfileServer) Analysis(message *PB.AnalysisMessage, stream PB.ProfileMgr_AnalysisServer) error {
if !s.TryLock() {
return fmt.Errorf("analysis has been in running")
return fmt.Errorf("dynamic optimizer search or analysis has been in running")
}
defer s.Unlock()
......@@ -465,7 +465,10 @@ func (s *ProfileServer) Tuning(profileInfo *PB.ProfileInfo, stream PB.ProfileMgr
// data == "" means in tuning process
if data == "" {
benchmark := tuning.BenchMark{Content: content}
err := benchmark.DynamicTuned(ch)
isEnd, err := benchmark.DynamicTuned(ch)
if isEnd {
s.Unlock()
}
if err != nil {
return err
}
......@@ -507,8 +510,12 @@ func (s *ProfileServer) Tuning(profileInfo *PB.ProfileInfo, stream PB.ProfileMgr
//content == nil means in restore config
if content == nil {
if !s.TryLock() {
return fmt.Errorf("dynamic optimizer search or analysis has been in running")
}
optimizer := tuning.Optimizer{Prj: prj}
err := optimizer.RestoreConfigTuned()
s.Unlock()
if err != nil {
return err
}
......@@ -518,11 +525,16 @@ func (s *ProfileServer) Tuning(profileInfo *PB.ProfileInfo, stream PB.ProfileMgr
log.Info("begin to dynamic optimizer search")
_ = stream.Send(&PB.AckCheck{Name: fmt.Sprintf("begin to dynamic optimizer search")})
if !s.TryLock() {
return fmt.Errorf("dynamic optimizer search or analysis has been in running")
}
optimizer := tuning.Optimizer{Prj: prj}
iter, _ := strconv.Atoi(string(content))
log.Infof("client ask iterations:%d", iter)
err = optimizer.InitTuned(ch, iter)
if err != nil {
s.Unlock()
return err
}
......
Markdown is supported
0% .
You are about to add 0 people to the discussion. Proceed with caution.
先完成此消息的编辑!
想要评论请 注册