【技术实现步骤摘要】
一种面向性能调优的软件配置项预选方法
[0001]本专利技术涉及大型软件的性能调优领域,具体涉及一种软件配置项预选方法。
技术介绍
[0002]为了使软件能够适应不同的应用场景和生产环境,而不用对软件源代码进行修改,开发人员通常会为软件设置配置项来为用户提供调节软件行为的接口。然而,随着应用场景和用户需求日益多样,现代软件的规模和复杂度日益增加,软件配置项的数量也与日俱增。例如MySQL中有900余个配置项,GCC中的配置项数量更是超过1000个。数量繁多的配置项给用户进行配置软件带来了极大的困难,提高了软件使用的门槛。用户难以通过调节软件配置项来满足自己的意图。
[0003]用户在使用软件时通常会带着各种各样的意图,例如提高软件性能(如软件的吞吐率、执行时间、读写速度等)、增强软件可靠性、防止信息泄露等。这其中提高软件性能是最普遍也是用户最关心的意图之一。由于相对于其他意图,软件性能更容易定量度量,如何通过调整软件配置项使软件达到最佳性能,即通过调整软件配置进行性能调优,是当前研究的一个热点问题。
[0004]当前配置调优工作通常将所有配置项作为输入,在特定负载下,通过改变配置项的取值进行大量性能测试,得到配置项取值和软件性能之间的对应关系。当前性能调优工作存在配置搜索空间大的问题,导致性能调优耗时长,得到最优性能对应的配置需要消耗大量时间。
[0005]针对配置搜索空间过大的问题,现有技术主要通过预筛出对性能有重要影响的配置项来减小配置搜索空间,主要有两种方法。第一种是Zhen Cao等人
【技术保护点】
【技术特征摘要】
1.一种面向性能调优的软件配置项预选方法,其特征在于包括以下步骤:第一步,构建面向性能调优的软件配置项预选系统,面向性能调优的软件配置项预选系统由配置项意图数据自动扩增模块和配置项预选模块构成;配置项意图数据自动扩增模块与配置项预选模块相连,还与数据集来源软件相连;数据集来源软件包括两部分:标注配置项集合和未标注配置项集合;标注配置项集合指根据每个配置项文档对配置项进行意图类别标注构建的数据集;配置项意图数据自动扩增模块预处理标注配置项集合,对未标注配置项集合中的未标注配置项进行标注,将新标注的数据从未标注配置项集合加入标注配置项集合中,直到标注配置项集合中配置项的数量不再改变,得到扩增后的标注配置项集合,将扩增后的标注配置项集合发送给配置项预选模块;配置项预选模块与配置项意图数据自动扩增模块相连,从配置项意图数据自动扩增模块接收扩增后的标注配置项集合;配置项预选模块包含一个TF
‑
IDF编码器encoder和一个配置项预选模型RF;encoder对配置项文档中的句子进行编码,得到句子对应的向量;RF是一个具有两层结构的随机森林模型,该模型使用扩增后的标注配置项集合进行训练,得到随机森林模型的参数;配置项预选模块根据目标软件的配置数据对目标软件的配置项进行分类,预选出不同意图类别对应的配置项,得到预选的配置项集合;第二步,从数据集来源软件的配置项集合D0中随机选取部分配置项进行意图标注,得到标注配置项集合D1;方法是:2.1按以下条件从数据集来源软件选取部分配置项:1)属于服务器端的软件;2)具有大量的用户且在代码托管平台GitHub上有超过2,000星的软件;3)配置项数量超过100个的软件;从同时满足上述3个条件软件的7千余个配置项构成的配置项集合D0中随机选取比例为s的配置项;记配置项总数为S,随机选取的配置项数量为N,N=S
×
s,四舍五入取整数;2.2根据选取的配置项的官方文档描述,对N个配置项进行意图标注,得到标注配置项集合为D1,配置项的意图标签有Label1、Label2、Label3、Label4、Label5;、Label6、Label7共七种;2.3记标注配置项集合D1={<(c
n
,d
n
),label
n
>|1≤n≤N,label
n
∈Labels},其中c
n
是D1中第n个配置项名称,d
n
是配置项c
n
的文档,d
n
表示为表示为其中W
n
为d
n
中单词的总个数;label
n
是配置项c
n
的意图类别,Labels={Label
i
|1≤i≤7}是意图标签类别构成的集合;记步骤2.1中未被选择的T=S
‑
N个配置项构成的集合记为未标注配置项集合D2,D2={<(cc
t
,dd
t
)>|1≤t≤T},其中cc
t
是D2中第t个配置项名称,dd
t
是配置项cc
t
的文档;所述dd
t
表示为其中U
t
为dd
t
中单词的总个数;第三步,配置项意图数据自动扩增模块预处理标注配置项集合D1,迭代式对未标注配置项集合D2中的未标注配置项进行标注,采用新标注的配置项扩增D1,得到扩增后的标注配置项集合D,方法是:3.1配置项意图数据自动扩增模块预处理D1,方法是:3.1.1定义字典类型变量f
label
用于对意图标签类别进行编码,满足f
label
[Label1]=1,...,f
label
[Label
i
]=i,...,f
label
[Label7]=7,1≤i≤7;
3.1.2初始化单词映射最大下标index=8;3.1.3定义字典类型变量f
token
用于对单词进行编码,初始化f
token
为一个空字典,即f
token
的键集合为空集,后续步骤中将向键集合中逐步添加<词性,词根>构成的二元组,根据单词的词性和词根对单词进行编码;3.1.4对单词进行编码并逐步构建f
token
,方法是:3.1.4.1初始化变量n=1;3.1.4.2对d
n
中的W
n
个单词进行编码,得到d
n
的编码d
′
n
,,其中为为的词性,为的词根;3.1.4.3若n=N,则将D1中的d
n
替换为其编码d
′
n
,得到预处理后的标注配置项集合D
′1,D
′1={<(c
n
,d
′
n
),label
n
>|1≤n≤N,label
n
∈Labels},转3.2;若n<N,转3.1.4.4;3.1.4.4令n=n+1,转3.1.4.2;3.2配置项意图数据自动扩增模块从D
′1中挖掘序列模式,得到序列模式集合SP,方法是:3.2.1利用D
′1构建序列集合SeqDB={seq1,...,seq
n
,...,seq
N
},其中seq
n
是由配置项c
n
的文档d
n
的编码d
′
n
和c
n
的意图标签label
n
对应的编码f
label
(label
n
)拼接而成的序列,即)拼接而成的序列,即3.2.2使用FEAT算法,对序列集合SeqDB进行序列模式挖掘,得到序列集合P,P={p1,...,p
m
,...,p
M
},其中M为序列模式总数,p
m
是序列集合SeqDB中频繁出现的序列,p
m
=(pp1,...,pp
x
,...pp
X
),对应于配置文档中的表达方式,X是p
m
的长度,由FEAT算法计算得到,pp
x
为p
m
的第x项,为某个单词或意图标签对应的编码,满足1≤pp
x
<index,1≤pp
x
≤7时代表意图标签在f
label
中的映射,8≤pp
x
<index时代表经步骤3.1.4.2转化后的形式在f
token
中的映射,即中的映射,即3.2.3对P进行处理,保留其中和意图类别相关的序列,并计算每个序列对应的支持度和置信度,得到序列模式集合SP,方法是:3.2.3.1初始化序列模式集合SP为空集;3.2.3.2初始化序列遍历变量m=1;3.2.3.3初始化序列模式计数变量m
′
=0;3.2.3.4判断p
m
中的最后一项pp
X
是否满足1≤pp
X
≤7,若是,则pp
X
为意图类别的编码,p
m
与确定未标注配置项意图类别相关,转3.2.3.5;否则,p
m
与确定未标注配置项意图类别无关,转到3.2.3.6;3.2.3.5令m
′
=m
′
+1,且令p
m
′
=p
m
;计算p
m
′
的置信度confidence
m
′
,并将处理后的序列模式Pattern
m
′
加入序列模式集合SP中,Pattern
m
′
=(pattern
m
′
,l
m
′
,confidence
m
′
),pattern
m
′
是p
m
′
所反映的与l
m
′
相关的序列,l
m
′
是p
m
′
对应的意图类别;3.2.3.6若m=M,得到序列模式集合SP,SP={Pattern
m
′
|1≤m
′
≤M
′
},Pattern
m
′
=(pattern
m
′
,l
m
′
,confidence
m
′
),其中M
′
是SP中所有模式的总个数,M
′
≤M,转3.3;若不是,令m=m+1,转到3.2.3.4;3.3配置项意图数据自动扩增模块对D2进行编码,方法是:3.3.1初始化变量t=1;3.3.2对dd
t
中的U
t
个单词进行编码,得到dd
t
的编码dd
′
t
,,3.3.3若t=T,将二元组(cc
t
,dd
′
t
)作为D2中<(cc
t
,dd
t
)>的编码放到编码后的未标注配置项集合D
′2中,得到D
′2={(cc
t
,dd
′
t
)|1≤t≤T},转3.4;若t<T,转3.3.4;3.3.4令t=t+1,转3.3.2;3.4配置项意图数据自动扩增模块使用SP对D
′2进行标注;方法是:3.4.1设置置信度阈值threshold,0<threshold≤1;3.4.2初始化变量t=1;3.4.3初始化带有标签的配置项集合R1为空集;3.4.4初始化未加标签的配置项集合R2为空集;3.4.5初始化用于为第t个未标注配置项选择意图标签的字典类型变量selector,令selector[Label1]=0,...,selector[Label
i
]=0,...,selector[Label7]=0,selector[Label
i
]表示将第t个未标注配置项标注为Label
i
的置信度;3.4.6根据3.2得到的模式集合SP更新selector,方法是:3.4.6.1初始化变量m
′
=1;3.4.6.2从序列模式Pattern
m
′
读取confidence
m
′
,l
m
′
,pattern
m
′
;3.4.6.2若confidence
m
′
≥threshold,转3.4.6.3判断能否进行模式匹配;若confidence
m
′
<threshold,则模式Pattern
m
′
不符合置信度要求,转3.4.6.5;3.4.6.3若pattern
m
′
是dd
′
t
的子序列,说明模式匹配,转3.4.6.4;若不是,转3.4.6.5;3.4.6.4若confidence
m
′
>selector[l
m
′
],则更新selector[l
m
′
],即令selector[l
m
′
]=confideuce
m
′
,转3.4.6.5;否则,直接转3.4.6.5;3.4.6.5若m
′
=M
′
,则遍历完所有的序列模式,完成对selector的更新,转3.4.7;若m
′
<M
′
,令m
′
=m
′
+1,转3.4.6.2;3.4.7根据selector为dd
′
t
选择标签,方法是:3.4.7.1初始化候选标签LC
t
=Label1;3.4.7.2初始化标签下标变量i=2;3.4.7.3若selector[label
i
]>selector[LC
t
],说明选取label
i
作为标签的置信度高于选取LC
t
作为标签的置信度,则令LC
t
=label
i
,转3.4.7.4;若selector[label
i
]≤selector[LC
t
],直接转3.4.7.4;3.4.7.4若i=7,转3.4.7.5;若i<7,令i=i+1,转3.4.7.3;3.4.7.5若selector[LC
t
]>0,则将LC
t
作为第t个未标注配置项的意图标签,将<(cc
t
,
dd
t
),LC
t
>加入R1,转3.4.8;若selector[LC
t
]=0,则说明SP中没有与dd
′
t
匹配的模式,不为第t个未标注配置项选择意图标签,将<(cc
t
,dd
t
)>加入R2,转3.4.8;3.4.8若t=T,则完成了对未标注配置项集合D2的标注,得到R1和R2,转3.4.10;若t<T,转3.4.9;3.4.9令t=t+1,转3.4.5;3.4.10判断R1是否是空集,若是,完成对D1的扩增,迭代式扩增终止,得到扩增后的标注配置项集合,转3.4.12;若不是,转3.4.11;3.4.11令D1=D...
【专利技术属性】
技术研发人员:李姗姗,贾周阳,马俊,李小玲,何浩辰,董威,陈立前,陈振邦,周成龙,
申请(专利权)人:中国人民解放军国防科技大学,
类型:发明
国别省市:
还没有人留言评论。发表了对其他浏览者有用的留言会获得科技券。