一种面向性能调优的软件配置项预选方法技术

技术编号:34273714 阅读:58 留言:0更新日期:2022-07-24 16:38
本发明专利技术公开了一种面向性能调优的软件配置项预选方法,目的是解决现有对配置项进行的性能调优方法存在耗时长、仅考虑单一意图的问题。技术方案为:构建由配置项意图数据自动扩增模块和配置项预选模块构成的面向性能调优的软件配置项预选系统;从数据集来源软件中选取部分配置项进行标注,得到标注配置项集合;配置项意图数据自动扩增模块迭代式扩增标注配置项集合,得到扩增后的标注配置项集合D;利用D训练配置项预选模块;训练好的配置项预选模块根据目标软件的配置文档对目标软件的配置项进行分类。采用本发明专利技术可根据不同意图对相应类别的配置项集合进行调优,在大大降低开销的同时,更全面地推荐出性能相关的配置项,提高了效率和准确性。高了效率和准确性。高了效率和准确性。

A pre selection method of software configuration items for performance tuning

【技术实现步骤摘要】
一种面向性能调优的软件配置项预选方法


[0001]本专利技术涉及大型软件的性能调优领域,具体涉及一种软件配置项预选方法。

技术介绍

[0002]为了使软件能够适应不同的应用场景和生产环境,而不用对软件源代码进行修改,开发人员通常会为软件设置配置项来为用户提供调节软件行为的接口。然而,随着应用场景和用户需求日益多样,现代软件的规模和复杂度日益增加,软件配置项的数量也与日俱增。例如MySQL中有900余个配置项,GCC中的配置项数量更是超过1000个。数量繁多的配置项给用户进行配置软件带来了极大的困难,提高了软件使用的门槛。用户难以通过调节软件配置项来满足自己的意图。
[0003]用户在使用软件时通常会带着各种各样的意图,例如提高软件性能(如软件的吞吐率、执行时间、读写速度等)、增强软件可靠性、防止信息泄露等。这其中提高软件性能是最普遍也是用户最关心的意图之一。由于相对于其他意图,软件性能更容易定量度量,如何通过调整软件配置项使软件达到最佳性能,即通过调整软件配置进行性能调优,是当前研究的一个热点问题。
[0004]当前配置调优工作通常将所有配置项作为输入,在特定负载下,通过改变配置项的取值进行大量性能测试,得到配置项取值和软件性能之间的对应关系。当前性能调优工作存在配置搜索空间大的问题,导致性能调优耗时长,得到最优性能对应的配置需要消耗大量时间。
[0005]针对配置搜索空间过大的问题,现有技术主要通过预筛出对性能有重要影响的配置项来减小配置搜索空间,主要有两种方法。第一种是Zhen Cao等人在FAST

2020发表的Carver:Finding Important Parameters for Storage System Tuning(Carver:为存储系统性能调优选择关键配置项),Carver方法(简称
技术介绍
一)通过拉丁超立方采样(Latin Hypercube Sampling,LHS)的方式对配置空间进行采样,在进行性能测试之后采用基于方差的性能矩阵来评估不同配置项对于性能的重要程度,最后使用贪心算法选择对性能影响最大的N(N由用户指定)个配置项,将这些配置项预选给用户来作为自动调优工具的输入。他们的研究通过实验证明了不同配置项对性能影响的重要程度不同,有一小部分配置项对提高软件性能尤为重要,肯定了进行面向性能调优的软件配置项预选的重要性。第二种是Konstantinos Kanellis等人在HotStorage

2020发表的Too Many Knobs to Tune?Towards Faster Database Tuning by Pre

selecting Important Knobs(需要调优的配置项太多了?通过预选重要的配置项来更快进行数据库系统调优,简称
技术介绍
二)工作首先使用拉丁超立方采样方法对配置空间进行采样,之后测试了不同负载下Cassandra和PostgreSQL这两个数据库类系统软件的性能与软件配置的对应关系,分析出不同配置项对软件性能影响的重要程度排序,通过对比不同负载下对性能影响最大的前15个配置项,指出软件中对性能影响最大的几个配置项通常是固定的。他们通过实验证明:在只对Cassandra中对性能影响最大的前5个配置项进行性能调优的情况下,在吞吐率
(Throughput)、读延迟(Read latency)和写延迟(write latency)上能够达到和对30个配置项进行调优的相近水平,在读延迟和写延迟上甚至有更好的表现。这两种方法都实现了对软件配置项的预选,但是为获取数据进而得到配置项对于软件性能的重要性时,仍然需要大量的性能测试,而且不同工作负载下预选出的配置项也有一定的差异性,预选结果强烈依赖于性能测试时所选用的工作负载。另外,这些方法只关注于如何提升软件性能,不考虑是否会给软件的可靠性、安全性带来隐患,缺少对用户意图的综合考虑。
[0006]综上,如何构建多意图敏感的、负载无关的轻量级配置项预选方法,以辅助现有性能调优工作并警示用户调优可能产生的副作用,是本领域研究人员亟待解决的问题。

技术实现思路

[0007]本专利技术要解决的技术问题是针对现有对配置项进行的性能调优方法存在耗时长、仅考虑性能这一单一意图的问题(即当用户有性能以外的意图时,现有技术无法工作),提供一种面向性能调优的软件配置项预选方法,该方法具有运行时间短且综合考虑用户多种意图的优点,辅助用户对性能之外的意图进行配置调优。
[0008]为解决上述技术问题,本专利技术的技术方案为:首先,构建由配置项意图数据自动扩增模块和配置项预选模块构成的面向性能调优的软件配置项预选系统;之后从数据集来源软件中随机选取部分配置项由人工进行意图标注,得到标注配置项集合;配置项意图数据自动扩增模块迭代式扩增标注配置项集合,得到扩增后的标注配置项集合;然后利用扩增后的标注配置项集合训练配置项预选模块;最后训练好的配置项预选模块根据目标软件的配置文档对目标软件的配置项进行分类,选择不同类别的意图对应的配置项集合。这些不同类别的意图对应的配置项集合反映了用户进行性能调优时的考虑的几个主要因素,用户可以根据对软件调节的需要,采用相应类别的意图对应的配置项集合进行性能调优达到提高软件性能的目的。
[0009]本专利技术包括以下步骤:
[0010]第一步,构建面向性能调优的软件配置项预选系统,面向性能调优的软件配置项预选系统由配置项意图数据自动扩增模块和配置项预选模块构成。
[0011]配置项意图数据自动扩增模块与配置项预选模块相连,还与数据集来源软件相连。数据集来源软件包括两部分:标注配置项集合和未标注配置项集合。标注配置项集合指通过人工标注的方式根据每个配置项文档对配置项进行意图类别标注构建的数据集。配置项意图数据自动扩增模块预处理标注配置项集合,对未标注配置项集合中的未标注配置项进行标注,,将新标注的数据从未标注配置项集合加入标注配置项集合中,直到标注配置项集合中配置项的数量不再改变,得到扩增后的标注配置项集合,将扩增后的标注配置项集合发送给配置项预选模块。
[0012]配置项预选模块与配置项意图数据自动扩增模块相连,从配置项意图数据自动扩增模块接收扩增后的标注配置项集合。配置项预选模块包含一个TF

IDF编码器encoder和一个配置项预选模型RF。encoder对配置项文档中的句子进行编码,得到句子对应的向量;RF是一个具有两层结构的随机森林模型,该模型使用扩增后的标注配置项集合进行训练,得到随机森林模型的参数。配置项预选模块根据目标软件的配置数据(一般通过人工提取)对目标软件的配置项进行分类,预选出不同意图类别对应的配置项,得到预选的配置项集
合。
[0013]第二步,从数据集来源软件的配置项集合D0中随机选取部分配置项进行意图标注,得到标注配置项集合D1。
[0014]2.1数据集来源软件包括MySQL、Cassandra、MariaDB、Apache...

【技术保护点】

【技术特征摘要】
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...

【专利技术属性】
技术研发人员:李姗姗贾周阳马俊李小玲何浩辰董威陈立前陈振邦周成龙
申请(专利权)人:中国人民解放军国防科技大学
类型:发明
国别省市:

网友询问留言 已有0条评论
  • 还没有人留言评论。发表了对其他浏览者有用的留言会获得科技券。

1