买专利,只认龙图腾
首页 专利交易 科技果 科技人才 科技服务 商标交易 会员权益 IP管家助手 需求市场 关于龙图腾
 /  免费注册
到顶部 到底部
清空 搜索

【发明授权】基于Bootstrap的可管理程序的性能评估方法_复旦大学_201811404131.0 

申请/专利权人:复旦大学

申请日:2018-11-23

公开(公告)日:2023-04-07

公开(公告)号:CN109542747B

主分类号:G06F11/34

分类号:G06F11/34

优先权:

专利状态码:有效-授权

法律状态:2023.04.07#授权;2020.07.21#实质审查的生效;2019.03.29#公开

摘要:本发明属于计算机技术领域,具体为一种基于Bootstrap的可管理程序的性能评估方法。本发明利用平稳的区块Bootstrap方法进行重抽样构建样本空间,最终使用假设检验的方法对程序进行性能比较。本发明只需要数十次的运行就能够完成一次性能评估。

主权项:1.一种基于Bootstrap的可管理程序的性能评估方法,其特征在于,具体步骤如下:第一步,首先通过一次可管理环境的调用,收集调用中各个迭代的各个机制的行为信息,以及各迭代的性能表现,之后,综合收集到的信息,经过降维操作之后,对得到的稳定特征向量进行稳定阶段的判断;在得到稳定阶段的位置之后,根据获得的位置情况运行相应长度的迭代数以得到稳定状态结果;将得到的稳定状态结果作为一个用来进行性能评估的小样本;第二步,利用平稳的区块Bootstrap方法SBB在已有可管理程序性能结果之上构建样本空间;在SBB方法中,每个区块的长度都是随机的,定义SBB中的重抽样区块: 这其中,为原样本中的迭代,大于的下标利用CBB中的方法进行处理,将视为,而的取值则是从一个几何分布中进行随机取值,令为中的一个固定值,那么的概率就是;在重抽样的过程中,首先随机抽取原序列中的一个样本最为起始点,然后根据上述方法随机选取区块长度,重复这一步骤,直到重抽样样本的长度达到了原样本的长度为止;第三步,基于SBB的样本空间,使用假设检验算法进行性能比较评估;假设有两组性能结果数据:和,并且想要知道X相对于Y的加速比;首先,假设一个加速比从而建立默认假设:X比Y快倍,基于这个假设,建立一个新的;其次,计算原始样本的检验统计量,通过的平均值减去的平均值计算得到:接着建立检验统计量的样本空间,每个通过以下方式计算得到:在和上分别进行SBB重抽样,生成重抽样样本:和,计算相应的检验统计量: 为了验证默认假设,将中的每个元素与相比较,统计能够支持默认假设的样本数,计算概率: 如果值大于预设的值,那么就能认定默认假设,也就是“X比Y快倍”成立,并且这一推断有1-的置信度,否则就拒绝该默认假设,本方法使用二分法逐步修改的值从而接近正确的加速比值。

全文数据:基于Bootstrap的可管理程序的性能评估方法技术领域本发明属于计算机技术领域,具体涉及一种基于Bootstrap的可管理程序的性能评估方法。背景技术在多线程程序中,程序的不确定性行为对于性能评估来说一直是一个非常关键的问题,这种不确定性行为甚至可以导致错误的性能评估结果。为了合理地评估程序性能,必须要使用统计学方法来对实验结果进行评估。而对于一些在可管理的环境下运行的程序,比如Java程序,二进制翻译执行等方式来说,其内部的机制加剧了程序的不确定性程度。以Java为例,即时编译器,垃圾回收等机制导致了在一次Java虚拟机的运行过程中,程序的性能是不断变化的,这使得Java程序的性能评估相比于传统的并行应用的评估变得更加复杂。为了评估程序稳定的性能,通常需要迭代运行一个Java程序多次,直到Java虚拟机中各机制的影响趋于稳定,再评估该程序的性能。所以,在进行性能评估之前通常需要判断程序在何时进入了稳定的阶段中。但是现行的稳定阶段判断方法通常都只基于程序运行时间的波动,往往会给出错误的稳定状态判断结果。数十年来,随着单核处理器的发展遇到了瓶颈,多核处理器已成为处理器的主流发展方向,随之而来的是多线程程序也变得越来越普遍。而随着处理器核心越来越多,并行应用程序的线程数也变得越来越多,导致不确定的变量也越来越多。与单线程程序相比,多线程程序的不确定性表现的尤为突出。共享资源的访问冲突、线程调度和不同的线程创建时间等,这些不确定性因素都加剧了多线程程序的性能的波动。随着多线程程序越来越普遍,如何对存在不确定性的并行应用程序进行有效评估已经成为了一个非常重要的问题。发明内容针对上述技术问题,本发明的目的在于提供一种基于Bootstrap的可管理程序的性能评估方法。本发明通过稳定的区块Bootstrap帮助进行性能评估,能够处理可管理程序的不确定性问题。本发明提供的可管理程序的性能评估方法中,通过平稳的区块Bootstrap进行重抽样的评估方法,在相互不独立的数据上工作,保留数据间的相关性,使得在一次虚拟机生命周期中的数据上就能够完成性能评估工作,不需要运行多次生命周期来确保数据的独立性。最后,可以在重抽样样本上进行基于置信度的性能评估。本发明的技术方案具体介绍如下。一种基于Bootstrap的可管理程序的性能评估方法,具体步骤如下:第一步,首先通过一次可管理环境的调用,收集调用中各个迭代的各个机制的行为信息,以及各迭代的性能表现,之后,综合收集到的信息,经过降维操作之后,对得到的稳定特征向量进行稳定阶段的判断;在得到稳定阶段的位置之后,根据获得的位置情况运行相应长度的迭代数以得到稳定状态结果;将得到的稳定状态结果作为一个用来进行性能评估的小样本;第二步,利用平稳的区块Bootstrap方法SBB在已有可管理程序性能结果之上构建样本空间;第三步,基于SBB的样本空间,使用假设检验算法进行性能比较评估。和现有技术相比,本发明的有益效果在于:本发明可用于评估可管理程序的性能,减少不确定行为对性能评估的影响。附图说明图1为实施例1中的Java程序中的SBB方法进行区块划分的示意图。图2为实施例1中的Java程序中的工作流程。图3为实施例1中的Java程序中的SBB重抽样过程。具体实施方式下面将结合附图和实施例详细说明本发明的技术方案。本发明提供的一种基于Bootstrap的可管理程序的性能评估的流程如下:第一步,运行程序,并收集运行时的阶段信息,并记录运行时间。首先通过一次可管理环境的调用,比如Java虚拟机,比如Qemu模拟器等,收集调用中各个迭代的各个机制的行为信息,以及各迭代的性能表现。之后,综合收集到的信息,经过降维操作之后,对得到的稳定特征向量进行稳定阶段的判断。在得到稳定阶段的位置之后,根据获得的位置情况运行相应长度的迭代数以得到足够的稳定状态结果。将得到的稳定状态结果作为一个用来进行性能评估的小样本。第二步,利用SBB在已有可管理程序性能结果之上构建样本空间。在对弱相关性平稳序列中使用之前的区块Bootstrap,会很容易导致重抽样后生成的样本反而是非平稳的,也就是在稳定状态判断条件提到过的趋势的问题。本发明利用了SBBStationaryBlockBootstrap,平稳的区块Bootstrap方法抽样方法来获取平稳的重抽样样本,也就是其均值和方差不会随着样本中的位置而改变的样本。为了得到这种样本,SBB试图通过改变构建区块的方法来模拟原序列中的平稳性特征。与其他的区块Bootstrap方法都不同,在SBB方法中,每个区块的长度都是随机的。定义SBB中的重抽样区块Bi,l:Bi,l=Xi,Xi+1..,Xi+l-1这其中,X为原样本中的迭代,X大于N的下标利用CBBcircularblockbootstrap,环形区块Bootstrap方法中的方法进行处理,将i视为imodN。而l的取值则是从一个几何分布中进行随机取值。令p为[0..1]中的一个固定值,那么l=m的概率就是1-pm-1p,m=1,2,..。在重抽样的过程中,首先随机抽取原序列中的一个样本最为起始点。然后根据上述方法随机选取区块长度l。重复这一步骤,直到重抽样样本的长度达到了原样本的长度为止。通过一系列的随机化步骤,SBB保证了得到的所有重抽样样本是都是平稳的样本,保留了原序列的平稳性特征。SBB方法的另外一个好处是他比其他的方法对参数更加不敏感。在SBB中,虽然仍然需要去设定区块长度的几何分布的参数p,但是SBB的性能对于p的依赖程度远远小于MBBMovingblockbootstrap,移动区块Bootstrap方法对于区块长度L的依赖程度。第三步,基于SBB的样本空间进行性能评估。基于SBB的重抽样方法,可以使用一种假设检验的方法来进行性能比较。这是一种非参数检验的方法,检验默认假设,也就是两个分布是否有显著性差异。该方法被广泛地应用到了各种基于Bootstrap的性能评估中。假设有两组性能结果数据:X={x1,x2,...,xn}和Y={y1,y2,...,ym},并且想要知道X相对于Y的加速比。首先,要假设一个加速比μ从而建立默认假设:X比Y快μ倍。基于这个假设,建立一个新的X′={x1μ,x2μ,...,xnμ}。其次,计算原始样本的检验统计量,通过X′的平均值减去Y的平均值计算得到:接着建立检验统计量的样本空间每个通过以下方式计算得到。在X′和Y上分别进行SBB重抽样,生成重抽样样本:和接着计算相应的检验统计量为了验证默认假设,将T*中的每个元素与t0相比较,统计能够支持默认假设的样本数,计算概率p_value:如果p_value值大于预设的α值,那么就能认定默认假设,也就是“X比Y快μ倍”成立,并且这一推断有1-α的置信度。否则就拒绝该默认假设。本方法会使用二分法逐步修改μ的值从而接近正确的加速比值。实施例1本发明在Java程序中,利用了SBB方法进行重抽样构建样本空间并进行性能评估的具体流程如图2所示。具体步骤如下:1使用稳定阶段判断方法判定该程序在两台机器上进入稳定阶段所需要的遍数。2在两台机器上分别运行一个Java虚拟机调用,其中包含进入稳定阶段所需的迭代以及所需要的样本迭代数。3在找到了稳定状态的起始位置之后,将起始位置开始的30次迭代数据作为原样本,进行SBB重抽样。其区块划分方法如图1所示,重抽样过程如图3所示。4把一次Java虚拟机周期中的K个稳定迭代作为SBB方法的原始样本,用X1..Xk来表示。在选取原始样本的时候,理论上从任何稳定状态位置选取都可以,故而本发明直接从稳定阶段的开始位置取值。5把要抽取的SBB样本表示为从[1..k]中随机选取一个值i1,令为Xi16根据下列条件选择SBB样本中的下一个迭代:a以p的概率进行如下操作,从[1..k]中随机选取一个值i2,令为Xi2b以1-p的概率进行以下操作:令为Xi1+1c重复本步骤直到新的SBB样本大小为k7重复步骤5,6,构建B个新的SBB样本建议B>1000,得到足够的样本来组成样本空间,并对统计指标的分布进行模拟。8使用假设检验算法对机器A以及机器B上的数据进行结果验证比较。将两个原样本输入到Python脚本中,本发明的实现会进行SBB重抽样,并通过假设检验来判断两台机器上的加速比。脚本会首先假定加速比为1,之后逐渐调整加速比直到得到合适的结果。

权利要求:1.一种基于Bootstrap的可管理程序的性能评估方法,其特征在于,具体步骤如下:第一步,首先通过一次可管理环境的调用,收集调用中各个迭代的各个机制的行为信息,以及各迭代的性能表现,之后,综合收集到的信息,经过降维操作之后,对得到的稳定特征向量进行稳定阶段的判断;在得到稳定阶段的位置之后,根据获得的位置情况运行相应长度的迭代数以得到稳定状态结果;将得到的稳定状态结果作为一个用来进行性能评估的小样本;第二步,利用平稳的区块Bootstrap方法SBB在已有可管理程序性能结果之上构建样本空间;第三步,基于SBB的样本空间,使用假设检验算法进行性能比较评估。

百度查询: 复旦大学 基于Bootstrap的可管理程序的性能评估方法

免责声明
1、本报告根据公开、合法渠道获得相关数据和信息,力求客观、公正,但并不保证数据的最终完整性和准确性。
2、报告中的分析和结论仅反映本公司于发布本报告当日的职业理解,仅供参考使用,不能作为本公司承担任何法律责任的依据或者凭证。