From 535e0aad6fbda7b4c222dd2ec05416c356420d00 Mon Sep 17 00:00:00 2001 From: hanxinke Date: Wed, 15 Jan 2020 19:28:00 +0800 Subject: [PATCH] atune:modify abnormal print information --- common/project/projet.go | 8 ++++---- common/service/monitor/monitors.go | 13 ++++++------- common/tuning/optimizer.go | 29 +++++++++-------------------- modules/server/profile/profile.go | 16 ++++++++++++++-- 4 files changed, 33 insertions(+), 33 deletions(-) diff --git a/common/project/projet.go b/common/project/projet.go index 33c093e..69391fd 100644 --- a/common/project/projet.go +++ b/common/project/projet.go @@ -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)) } diff --git a/common/service/monitor/monitors.go b/common/service/monitor/monitors.go index c80d003..b621133 100644 --- a/common/service/monitor/monitors.go +++ b/common/service/monitor/monitors.go @@ -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, "_") diff --git a/common/tuning/optimizer.go b/common/tuning/optimizer.go index 5f335d1..ebfe804 100644 --- a/common/tuning/optimizer.go +++ b/common/tuning/optimizer.go @@ -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 { diff --git a/modules/server/profile/profile.go b/modules/server/profile/profile.go index cd79eeb..332ec4c 100644 --- a/modules/server/profile/profile.go +++ b/modules/server/profile/profile.go @@ -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 } -- GitLab