Skip to content
体验新版
项目
组织
正在加载...
登录
切换导航
打开侧边栏
openeuler
A-Tune
提交
92738db8
A
A-Tune
项目概览
openeuler
/
A-Tune
通知
5
Star
0
Fork
0
代码
文件
提交
分支
Tags
贡献者
分支图
Diff
Issue
0
列表
看板
标记
里程碑
合并请求
0
Wiki
0
Wiki
分析
仓库
DevOps
项目成员
Pages
A
A-Tune
项目概览
项目概览
详情
发布
仓库
仓库
文件
提交
分支
标签
贡献者
分支图
比较
Issue
0
Issue
0
列表
看板
标记
里程碑
合并请求
0
合并请求
0
Pages
分析
分析
仓库分析
DevOps
Wiki
0
Wiki
成员
成员
收起侧边栏
关闭侧边栏
动态
分支图
创建新Issue
提交
Issue看板
体验新版 GitCode,发现更多精彩内容 >>
提交
92738db8
编写于
1月 08, 2020
作者:
H
hanxinke
浏览文件
操作
浏览文件
下载
电子邮件补丁
差异文件
atune:add the ability to roll back optimized configuration parameters in the tuning command
上级
39012075
变更
4
隐藏空白更改
内联
并排
Showing
4 changed file
with
107 addition
and
3 deletion
+107
-3
common/config/config.go
common/config/config.go
+3
-2
common/tuning/optimizer.go
common/tuning/optimizer.go
+53
-1
modules/client/profile/profile_tuning.go
modules/client/profile/profile_tuning.go
+41
-0
modules/server/profile/profile.go
modules/server/profile/profile.go
+10
-0
未找到文件。
common/config/config.go
浏览文件 @
92738db8
...
...
@@ -88,8 +88,9 @@ const (
//tuning config
const
(
TuningFile
string
=
DefaultTempPath
+
"/tuning.log"
FilePerm
os
.
FileMode
=
0600
TuningFile
string
=
DefaultTempPath
+
"/tuning.log"
TuningRestoreConfig
string
=
"-tuning-restore.conf"
FilePerm
os
.
FileMode
=
0600
)
// the grpc server config
...
...
common/tuning/optimizer.go
浏览文件 @
92738db8
...
...
@@ -22,8 +22,11 @@ import (
"atune/common/project"
"atune/common/utils"
"fmt"
"io/ioutil"
"os"
"path"
"strconv"
"strings"
)
// Optimizer : the type implement the bayes serch service
...
...
@@ -77,6 +80,7 @@ func (o *Optimizer) InitTuned(ch chan *PB.AckCheck, askIter int) error {
return
err
}
initConfigure
:=
""
optimizerBody
:=
new
(
models
.
OptimizerPostBody
)
optimizerBody
.
MaxEval
=
maxIter
...
...
@@ -93,6 +97,20 @@ func (o *Optimizer) InitTuned(ch chan *PB.AckCheck, askIter int) error {
knob
.
Step
=
item
.
Info
.
Step
knob
.
Options
=
item
.
Info
.
Options
optimizerBody
.
Knobs
=
append
(
optimizerBody
.
Knobs
,
*
knob
)
out
,
err
:=
project
.
ExecCommand
(
item
.
Info
.
GetScript
)
if
err
!=
nil
{
return
err
}
initConfigure
+=
strings
.
TrimSpace
(
knob
.
Name
+
"="
+
string
(
out
))
+
","
}
err
=
utils
.
WriteFile
(
path
.
Join
(
config
.
DefaultTempPath
,
o
.
Prj
.
Project
+
config
.
TuningRestoreConfig
),
initConfigure
,
config
.
FilePerm
,
os
.
O_WRONLY
|
os
.
O_CREATE
|
os
.
O_TRUNC
)
if
err
!=
nil
{
log
.
Error
(
err
)
return
err
}
respPostIns
,
err
:=
optimizerBody
.
Post
()
...
...
@@ -210,10 +228,44 @@ func (bench *BenchMark) DynamicTuned(ch chan *PB.AckCheck) error {
return
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
{
return
err
}
if
!
exist
{
log
.
Errorf
(
"%s project has not been executed the dynamic optimizer search"
,
o
.
Prj
.
Project
)
return
fmt
.
Errorf
(
"%s project has not been executed the dynamic optimizer search"
,
o
.
Prj
.
Project
)
}
content
,
err
:=
ioutil
.
ReadFile
(
tuningRestoreConf
)
if
err
!=
nil
{
log
.
Error
(
err
)
return
err
}
log
.
Infof
(
"restoring params is: %s"
,
string
(
content
))
if
err
:=
o
.
Prj
.
RunSet
(
string
(
content
));
err
!=
nil
{
log
.
Error
(
err
)
return
err
}
log
.
Infof
(
"restore %s project params success"
,
o
.
Prj
.
Project
)
return
nil
}
func
deleteTask
(
url
string
)
error
{
resp
,
err
:=
http
.
Delete
(
url
)
if
err
!=
nil
{
log
.
Info
(
"delete task faild:"
,
err
)
log
.
Error
(
"delete task faild:"
,
err
)
return
err
}
defer
resp
.
Body
.
Close
()
...
...
modules/client/profile/profile_tuning.go
浏览文件 @
92738db8
...
...
@@ -34,6 +34,17 @@ var profileTunningCommand = cli.Command{
Name
:
"tuning"
,
Usage
:
"dynamic bayes search optimal parameter sets"
,
ArgsUsage
:
"PROJECT_YAML"
,
Flags
:
[]
cli
.
Flag
{
cli
.
BoolFlag
{
Name
:
"restore,r"
,
Usage
:
"restore pre-optimized initial configuration"
,
},
cli
.
StringFlag
{
Name
:
"project,p"
,
Usage
:
"the project name of the yaml file"
,
Value
:
""
,
},
},
Description
:
func
()
string
{
desc
:=
`
tuning command usning bayes method dynamic search optimal parameter sets,
...
...
@@ -62,6 +73,10 @@ func newProfileTuningCmd(ctx *cli.Context, opts ...interface{}) (interface{}, er
}
func
profileTunning
(
ctx
*
cli
.
Context
)
error
{
if
ctx
.
Bool
(
"restore"
)
{
return
checkRestoreConfig
(
ctx
)
}
if
err
:=
utils
.
CheckArgs
(
ctx
,
1
,
utils
.
ConstExactArgs
);
err
!=
nil
{
return
err
}
...
...
@@ -149,3 +164,29 @@ func runTuningRPC(ctx *cli.Context, info *PB.ProfileInfo) (string, error) {
return
""
,
nil
}
func
checkTuningCtx
(
ctx
*
cli
.
Context
)
error
{
if
ctx
.
String
(
"project"
)
==
""
{
_
=
cli
.
ShowCommandHelp
(
ctx
,
"tuning"
)
return
fmt
.
Errorf
(
"error: project name must be specified"
)
}
if
len
(
ctx
.
String
(
"project"
))
>
255
{
return
fmt
.
Errorf
(
"error: project name length is longer than 255 charaters"
)
}
return
nil
}
func
checkRestoreConfig
(
ctx
*
cli
.
Context
)
error
{
err
:=
checkTuningCtx
(
ctx
)
if
err
!=
nil
{
return
err
}
_
,
err
=
runTuningRPC
(
ctx
,
&
PB
.
ProfileInfo
{
Name
:
ctx
.
String
(
"project"
)})
if
err
!=
nil
{
return
err
}
return
nil
}
modules/server/profile/profile.go
浏览文件 @
92738db8
...
...
@@ -515,6 +515,16 @@ func (s *ProfileServer) Tuning(profileInfo *PB.ProfileInfo, stream PB.ProfileMgr
return
fmt
.
Errorf
(
"project:%s not found"
,
data
)
}
//content == nil means in restore config
if
content
==
nil
{
optimizer
:=
tuning
.
Optimizer
{
Prj
:
prj
}
err
:=
optimizer
.
RestoreConfigTuned
()
if
err
!=
nil
{
return
err
}
return
nil
}
log
.
Info
(
"begin to dynamic optimizer search"
)
_
=
stream
.
Send
(
&
PB
.
AckCheck
{
Name
:
fmt
.
Sprintf
(
"begin to dynamic optimizer search"
)})
...
...
编辑
预览
Markdown
is supported
0%
请重试
或
添加新附件
.
添加附件
取消
You are about to add
0
people
to the discussion. Proceed with caution.
先完成此消息的编辑!
取消
想要评论请
注册
或
登录