书签 分享 收藏 举报 版权申诉 / 13

即时编译参数优化方法及装置.pdf

  • 上传人:1**
  • 文档编号:6199260
  • 上传时间:2019-05-20
  • 格式:PDF
  • 页数:13
  • 大小:978.87KB
  • 摘要
    申请专利号:

    CN201510084788.3

    申请日:

    2015.02.16

    公开号:

    CN105988855A

    公开日:

    2016.10.05

    当前法律状态:

    公开

    有效性:

    审中

    法律详情:

    实质审查的生效IPC(主分类):G06F 9/45申请日:20150216|||公开

    IPC分类号:

    G06F9/45; G06F9/455

    主分类号:

    G06F9/45

    申请人:

    龙芯中科技术有限公司

    发明人:

    靳国杰; 高翔

    地址:

    100095 北京市海淀区中关村环保科技示范园龙芯产业园2号楼

    优先权:

    专利代理机构:

    北京同立钧成知识产权代理有限公司 11205

    代理人:

    马爽;黄健

    PDF完整版下载: PDF下载
    内容摘要

    本发明实施例提供一种即时编译参数优化方法及装置,其中,所述方法包括:A、使用即时编译参数的当前值,对目标应用程序进行性能测试,得到目标应用程序的性能指标的当前值;B、根据目标应用程序的性能指标的当前值与上一次性能测试中得到的性能指标的测试值判断目标应用程序的性能指标是否收敛;若未收敛,则将即时编译参数的当前值调整至少N个步长,得到即时编译参数的当前值的随机变异值;将随机变异值作为下一次性能测试中即时编译参数的当前值,再次执行A和B;其中,步长为即时编译参数的最小单位。本发明实施例能够提升即时编译参数的选值准确度和选择效率,提升虚拟机的性能。

    权利要求书

    1.一种即时编译参数优化方法,其特征在于,包括:
    A、使用即时编译参数的当前值,对目标应用程序进行性能测试,得到
    所述目标应用程序的性能指标的当前值;
    B、根据所述目标应用程序的性能指标的当前值与上一次性能测试中得到
    的性能指标的测试值判断所述目标应用程序的性能指标是否收敛;
    若未收敛,则将所述即时编译参数的当前值调整至少N个步长,得到所
    述即时编译参数的当前值的随机变异值;将所述即时编译参数的当前值的随
    机变异值作为下一次性能测试中所述即时编译参数的当前值,再次执行A和
    B;其中,所述步长为所述即时编译参数的最小单位。
    2.根据权利要求1所述的方法,其特征在于,所述根据所述目标应用程
    序的性能指标的当前值与上一次性能测试中得到的性能指标的测试值判断所
    述目标应用程序的性能指标是否收敛,包括:
    判断所述目标应用程序的性能指标的当前值与上一次性能测试中得到的
    性能指标的测试值的差值是否超过阈值;
    若是,则确定所述目标应用程序的性能指标未收敛。
    3.根据权利要求1所述的方法,其特征在于,所述根据所述目标应用程
    序的性能指标的当前值与上一次性能测试中得到的性能指标的测试值判断所
    述目标应用程序的性能指标是否收敛,包括:
    判断所述目标应用程序的性能指标的当前值与上一次性能测试中得到的
    性能指标的测试值的差值是否超过阈值;
    若否,并且在连续M次的性能测试中分别得到的差值都未超过所述阈值,
    则确定所述目标应用程序的性能指标已收敛。
    4.根据权利要求1-3任一项所述的方法,其特征在于,所述将所述即时
    编译参数的当前值调整至少N个步长,包括:
    根据所述即时编译参数的启发规则,将所述即时编译参数的当前值调整
    至少N个步长。
    5.根据权利要求4所述的方法,其特征在于,
    若所述即时编译参数为热点方法执行次数的最小值或方法内部循环次数
    的最小值,则所述根据所述即时编译参数的启发规则,将所述即时编译参数
    的当前值调整至少N个步长包括:
    若所述目标应用程序的性能指标的当前值大于所述上一次性能测试中得
    到的性能指标的测试值,则将所述即时编译参数的当前值减少至少N个步长,
    反之,则将所述即时编译参数的当前值增大至少N个步长;
    若所述即时编译参数为被内联方法的最大体积或内联的最大深度,则所
    述根据所述即时编译参数的启发规则,将所述即时编译参数的当前值调整至
    少N个步长包括:
    若所述目标应用程序的性能指标的当前值大于所述上一次性能测试中得
    到的性能指标的测试值,则将所述即时编译参数的当前值增大至少N个步长,
    反之,则将所述即时编译参数的当前值减少至少N个步长。
    6.一种即时编译参数优化装置,其特征在于,包括:
    性能测试模块,用于使用即时编译参数的当前值,对目标应用程序进行
    性能测试,得到所述目标应用程序的性能指标的当前值;
    判断模块,用于根据所述目标应用程序的性能指标的当前值与上一次性
    能测试中得到的性能指标的测试值判断所述目标应用程序的性能指标是否收
    敛;
    随机变异模块,用于若所述判断模块根据所述目标应用程序的性能指标
    的当前值与上一次性能测试中得到的性能指标的测试值判断所述目标应用程
    序的性能指标未收敛,则将所述即时编译参数的当前值调整至少N个步长,
    得到所述即时编译参数的当前值的随机变异值;将所述即时编译参数的当前
    值的随机变异值作为下一次性能测试中所述即时编译参数的当前值;其中,
    所述步长为所述即时编译参数的最小单位。
    7.根据权利要求6所述的装置,其特征在于,所述判断模块,具体用于
    判断所述目标应用程序的性能指标的当前值与上一次性能测试中得到的性能
    指标的测试值的差值是否超过阈值;若是,则确定所述目标应用程序的性能
    指标未收敛。
    8.根据权利要求6所述的装置,其特征在于,所述判断模块,具体用于
    判断所述目标应用程序的性能指标的当前值与上一次性能测试中得到的性能
    指标的测试值的差值是否超过阈值;若否,并且在连续M次的性能测试中分
    别得到的差值都未超过所述阈值,则确定所述目标应用程序的性能指标已收
    敛。
    9.根据权利要求6-8任一项所述的装置,其特征在于,所述随机变异模
    块,具体用于根据所述即时编译参数的启发规则,将所述即时编译参数的当
    前值调整至少N个步长。
    10.根据权利要求9所述的装置,其特征在于,所述随机变异模块,具
    体用于:
    在所述即时编译参数为热点方法执行次数的最小值或方法内部循环次数
    的最小值时,若所述目标应用程序的性能指标的当前值大于所述上一次性能
    测试中得到的性能指标的测试值,则将所述即时编译参数的当前值减少至少
    N个步长,反之,则将所述即时编译参数的当前值增大至少N个步长;
    在所述即时编译参数为被内联方法的最大体积或内联的最大深度时,若
    所述目标应用程序的性能指标的当前值大于所述上一次性能测试中得到的性
    能指标的测试值,则将所述即时编译参数的当前值增大至少N个步长,反之,
    则将所述即时编译参数的当前值减少至少N个步长。

    说明书

    即时编译参数优化方法及装置

    技术领域

    本发明实施例涉及虚拟机技术,尤其涉及一种即时编译参数优化方法及
    装置。

    背景技术

    虚拟机(Virtual Machine,简称VM)通常是现代高性能服务器上运行的
    核心软件系统。虚拟机主要通过软件(或者辅以少量硬件支持)的方法来虚
    拟出一台计算机,并且这台虚拟的计算机通常还支持一套自己的指令集,称
    为虚拟机指令集。虚拟机依托于本地的物理机,通过其执行引擎对给定的虚
    拟机指令序列(也称目标程序)在本地物理机器上模拟执行。虚拟机的执行引擎
    一般包括解释器和编译器两种类型:解释器以一条虚拟机指令为单位进行取
    指令、译码和执行;编译器以一组连续的虚拟机指令序列(基本块、函数或
    方法)为单位一次性编译成本地CPU指令序列,所生成的本地机器指令称为
    本地方法,然后由硬件直接执行本地方法。编译器由于避免了大量重复的取
    指令和译码的过程,同时又在编译时进行了大量卓有成效的优化,因而其性
    能可以达到解释器性能的10倍以上。

    和传统C/C++等静态编译不同,编译器是在虚拟机运行过程中进行动态
    编译的,故又称为即时编译器(Just-in-time Compiler,简称JIT)。即时编译
    算法经过近30年的发展,现在已经非常复杂,在算法中往往引入大量参数。
    最常用的即时编译参数包括以下几种:

    1、热点方法执行次数的最小值:

    由于即时编译行为会影响程序的性能和响应时间,虚拟机一般仅对执行
    频度较高的部分方法进行编译,这些方法称为热点方法或程序热点,通常根
    据方法执行的次数大小来筛选热点方法,这样就引入了一个参数:热点方法
    执行次数的最小值(记为Hot_Method_Invocation_Limit)。

    2、方法内部循环次数的最小值:

    还有一种热点方法,方法本身的执行次数不高,但是在方法内部有循环
    结构,因此也能够成为耗时方法。这样就引入了一个参数:方法内部循环次
    数的最小值(记为Hot_Loop_Invocation_Limit)。

    3、被内联方法的最大体积、内联的最大深度:

    在即时编译的过程中,编译器通常会使用内联(Inline)优化方法。内联
    优化是指,对于存在调用关系的两个方法,如果方法A调用方法B,那么在
    编译方法A时,可以将方法B的内容嵌入到方法A中共同编译,这样在执行
    方法A的编译后代码时,可以省略一次调用。内联优化方法的优点是节省执
    行时间,但是缺点是增大了编译后代码的规模,因此,一般不允许无限制的
    进行内联优化。一般会引入两个参数:一个是被内联方法的最大体积(记为
    Inline_Max_Method_Size),另一个是内联的最大深度(记为
    Inline_Max_Depth)。

    对于不同的应用程序,即时编译参数的不同取值会影响虚拟机的最终性
    能,因此如何高效地选择即时编译参数的最优值成为亟待解决的问题。

    一种常见的即时编译参数优化方案是:虚拟机定义即时编译参数的默认
    值。由虚拟机的编写者考察实际中绝大多数应用程序的特点,人为选择一个
    尽可能适用于大多数情况的参数值。例如在虚拟机OpenJDK中,默认将
    Hot_Method_Invocation_Limit定义为1500,Inline_Max_Method_Size定义为
    35。但是,设置并采用默认值的方案存在如下缺陷:现实的应用程序千差万
    别,默认值无法保证对所有应用程序都是最优的。尤其是对于用户的新应用
    程序,很可能不能运行出最好效果。例如,针对标准测试集SpecJVM2008,
    对于测试项sunflow,如果把参数Hot_Method_Invocation_Limit由默认值1500
    改为1600,则性能能够有10%的提升;而对于测试项mpegaudio,只有把参
    数Hot_Method_Invocation_Limit设置为1700,才能运行出最好的性能。可见,
    对于不同的应用程序,即时编译参数的最优值并不一定相同。

    另一种常见的即时编译参数优化方案是:用户通过遍历即时编译参数的
    所有可能值以确定最优值。用户每次将选择的值输入到虚拟机中,虚拟机按
    照用户选择的值执行,例如,针对标准测试集SpecJVM2008,如果用户运行
    测试项mpegaudio,则用户通过大量测试,遍历Hot_Method_Invocation_Limit
    的所有可能值,找到Hot_Method_Invocation_Limit的最优值1700,把这个值
    输入到虚拟机中,在此过程中每次即时编译参数的取值固定的变化一个单位。
    这种方法的缺点是,由于每个即时编译参数的取值范围都很大,例如,仅对
    Hot_Method_Invocation_Limit这一个参数来讲,这是一个整数,理论上有无
    限多种取值,用户只能选择有限的一些样本值来进行实验,例如选择100的
    整数倍,即100、200、……、1600、1700、……,等等,即使简化了样本点,
    也仍然要进行几十组测试。而SpecJVM2008运行一次要4个小时,总的时间
    至少要几天,并且,实际中,即时编译参数的个数非常多,为了找到最优值
    需要进行组合测试,其工作量更是巨大的,对用户的代价过高。

    发明内容

    本发明实施例提供一种即时编译参数优化方法及装置,以提升即时编译
    参数的选值准确度和选择效率,提升虚拟机的性能。

    第一方面,本发明实施例提供一种即时编译参数优化方法,其中,所述
    方法包括:

    A、使用即时编译参数的当前值,对目标应用程序进行性能测试,得到
    所述目标应用程序的性能指标的当前值;

    B、根据所述目标应用程序的性能指标的当前值与上一次性能测试中得到
    的性能指标的测试值判断所述目标应用程序的性能指标是否收敛;

    若未收敛,则将所述即时编译参数的当前值调整至少N个步长,得到所
    述即时编译参数的当前值的随机变异值;将所述即时编译参数的当前值的随
    机变异值作为下一次性能测试中所述即时编译参数的当前值,再次执行A和
    B;其中,所述步长为所述即时编译参数的最小单位。

    根据第一方面,在第一方面的第一种可能的实现方式中,所述根据所述
    目标应用程序的性能指标的当前值与上一次性能测试中得到的性能指标的测
    试值判断所述目标应用程序的性能指标是否收敛,包括:

    判断所述目标应用程序的性能指标的当前值与上一次性能测试中得到的
    性能指标的测试值的差值是否超过阈值;

    若是,则确定所述目标应用程序的性能指标未收敛。

    根据第一方面的第一种可能的实现方式,在第一方面的第二种可能的实
    现方式中,所述根据所述目标应用程序的性能指标的当前值与上一次性能测
    试中得到的性能指标的测试值判断所述目标应用程序的性能指标是否收敛,
    包括:

    判断所述目标应用程序的性能指标的当前值与上一次性能测试中得到的
    性能指标的测试值的差值是否超过阈值;若否,并且在连续M次的性能测试
    中分别得到的差值都未超过所述阈值,则确定所述目标应用程序的性能指标
    已收敛。

    根据第一方面、第一方面的第一种至第二种可能的实现方式中的任意一
    种,在第一方面的第三种可能的实现方式中,所述将所述即时编译参数的当
    前值调整至少N个步长,包括:根据所述即时编译参数的启发规则,将所述
    即时编译参数的当前值调整至少N个步长。

    根据第一方面的第三种可能的实现方式,在第一方面的第四种可能的实
    现方式中,若所述即时编译参数为热点方法执行次数的最小值或方法内部循
    环次数的最小值,则所述根据所述即时编译参数的启发规则,将所述即时编
    译参数的当前值调整至少N个步长包括:

    若所述目标应用程序的性能指标的当前值大于所述上一次性能测试中得
    到的性能指标的测试值,则将所述即时编译参数的当前值减少至少N个步长,
    反之,则将所述即时编译参数的当前值增大至少N个步长;

    若所述即时编译参数为被内联方法的最大体积或内联的最大深度,则所
    述根据所述即时编译参数的启发规则,将所述即时编译参数的当前值调整至
    少N个步长包括:

    若所述目标应用程序的性能指标的当前值大于所述上一次性能测试中得
    到的性能指标的测试值,则将所述即时编译参数的当前值增大至少N个步长,
    反之,则将所述即时编译参数的当前值减少至少N个步长。

    第二方面,本发明实施例提供一种即时编译参数优化装置,其中,所述
    装置包括:

    性能测试模块,用于使用即时编译参数的当前值,对目标应用程序进行
    性能测试,得到所述目标应用程序的性能指标的当前值;

    判断模块,用于根据所述目标应用程序的性能指标的当前值与上一次性
    能测试中得到的性能指标的测试值判断所述目标应用程序的性能指标是否收
    敛;

    随机变异模块,用于若所述判断模块根据所述目标应用程序的性能指标
    的当前值与上一次性能测试中得到的性能指标的测试值判断所述目标应用程
    序的性能指标未收敛,则将所述即时编译参数的当前值调整至少N个步长,
    得到所述即时编译参数的当前值的随机变异值;将所述即时编译参数的当前
    值的随机变异值作为下一次性能测试中所述即时编译参数的当前值;其中,
    所述步长为所述即时编译参数的最小单位。

    根据第二方面,在第二方面的第一种可能的实现方式中,所述判断模块,
    具体用于判断所述目标应用程序的性能指标的当前值与上一次性能测试中得
    到的性能指标的测试值的差值是否超过阈值;若是,则确定所述目标应用程
    序的性能指标未收敛。

    根据第二方面的第一种可能的实现方式,在第二方面的第二种可能的实
    现方式中,所述判断模块,具体用于判断所述目标应用程序的性能指标的当
    前值与上一次性能测试中得到的性能指标的测试值的差值是否超过阈值;若
    否,并且在连续M次的性能测试中分别得到的差值都未超过所述阈值,则确
    定所述目标应用程序的性能指标已收敛。

    根据第二方面、第二方面的第一种至第二种可能的实现方式中的任意一
    种,在第二方面的第三种可能的实现方式中,所述随机变异模块,具体用于
    根据所述即时编译参数的启发规则,将所述即时编译参数的当前值调整至少
    N个步长。

    根据第二方面的第三种可能的实现方式,在第二方面的第四种可能的实
    现方式中,所述随机变异模块,具体用于:

    在所述即时编译参数为热点方法执行次数的最小值或方法内部循环次数
    的最小值时,若所述目标应用程序的性能指标的当前值大于所述上一次性能
    测试中得到的性能指标的测试值,则将所述即时编译参数的当前值减少至少
    N个步长,反之,则将所述即时编译参数的当前值增大至少N个步长;

    在所述即时编译参数为被内联方法的最大体积或内联的最大深度时,若
    所述目标应用程序的性能指标的当前值大于所述上一次性能测试中得到的性
    能指标的测试值,则将所述即时编译参数的当前值增大至少N个步长,反之,
    则将所述即时编译参数的当前值减少至少N个步长。

    本发明实施例提供的即时编译参数优化方法及装置,若根据所述目标应
    用程序的性能指标的当前值与上一次性能测试中得到的性能指标的测试值判
    断所述目标应用程序的性能指标判定未收敛,则对即时编译参数的当前值进
    行随机变异,通过随机变异将即时编译参数的取值变化一个较大的范围,快
    速的略过该较大的范围内的所有样本,降低测试工作量。本发明实施例通过
    随机变异的方法以更快的速度逼近即时编译参数的最优值,提升即时编译参
    数的选值准确度和选择效率,提升虚拟机的性能。

    附图说明

    为了更清楚地说明本发明实施例或现有技术中的技术方案,下面将对实
    施例或现有技术描述中所需要使用的附图作一简单地介绍,显而易见地,下
    面描述中的附图是本发明的一些实施例,对于本领域普通技术人员来讲,在
    不付出创造性劳动性的前提下,还可以根据这些附图获得其他的附图。

    图1为本发明实施例提供的即时编译参数优化方法的流程图;

    图2为本发明实施例提供的即时编译参数优化方法的另一流程图;

    图3为本发明实施例提供的即时编译参数优化装置的结构示意图。

    具体实施方式

    为使本发明实施例的目的、技术方案和优点更加清楚,下面将结合本发
    明实施例中的附图,对本发明实施例中的技术方案进行清楚、完整地描述,
    显然,所描述的实施例是本发明一部分实施例,而不是全部的实施例。基于
    本发明中的实施例,本领域普通技术人员在没有作出创造性劳动前提下所获
    得的所有其他实施例,都属于本发明保护的范围。

    图1为本发明实施例提供的即时编译参数优化方法的流程图。本发明实
    施例提供的即时编译参数优化方法的执行主体为即时编译参数优化装置,所
    述即时编译参数优化装置例如可以是即时编译器或虚拟机。如图1所示,本
    发明实施例提供的即时编译参数优化方法,包括:

    101、使用即时编译参数的当前值,对目标应用程序进行性能测试,得到
    所述目标应用程序的性能指标的当前值。

    102、根据所述目标应用程序的性能指标的当前值与上一次性能测试中得
    到的性能指标的测试值判断所述目标应用程序的性能指标是否收敛。

    103、若未收敛,则将所述即时编译参数的当前值调整至少N个步长,
    得到所述即时编译参数的当前值的随机变异值;将所述即时编译参数的当前
    值的随机变异值作为下一次性能测试中所述即时编译参数的当前值,再次执
    行101和102;其中,所述步长为所述即时编译参数的最小单位。

    具体地,目标应用程序可以为虚拟机中待运行的任意一个应用程序。目
    标应用程序的性能指标例如可以是反映虚拟机运行目标应用程序时性能水平
    的一些指标,例如,对于标准测试集SpecJVM2008,其性能指标可以是
    SpecJVM2008的分值。实际中,所述即时编译参数可以为以下任意一种:热
    点方法执行次数的最小值,方法内部循环次数的最小值,被内联方法的最大
    体积,内联的最大深度。本发明实施例在即时编译参数的优化过程中确定即
    时编译参数的最优值,在执行本发明实施例的初始阶段,需要为即时编译参
    数选择初始值,并将初始值作为第一次性能测试中所述即时编译参数的当前
    值。实际中,即时编译参数的初始值可以为:虚拟机预先定义的默认值、用
    户指定值,也可以是任何随机值。

    本发明实施例提供的即时编译参数优化方法,通过迭代训练的方式寻找
    即时编译参数的最优值,每完成一次性能测试就进行一次目标应用程序的性
    能指标是否收敛的判断;若根据所述目标应用程序的性能指标的当前值与上
    一次性能测试中得到的性能指标的测试值判断所述目标应用程序的性能指标
    未收敛,则对即时编译参数的当前值进行随机变异,将即时编译参数的当前
    值调整至少N个步长,通过随机变异每次将即时编译参数的取值变化一个较
    大的范围,快速的略过该较大的范围内的所有样本,降低测试工作量。本发
    明实施例通过随机变异的方法以更快的速度逼近即时编译参数的最优值,提
    升即时编译参数的选值准确度和选择效率,提升虚拟机的性能。

    在上述实施例的基础上,在本发明一实施例中,所述根据所述目标应用
    程序的性能指标的当前值与上一次性能测试中得到的性能指标的测试值判断
    所述目标应用程序的性能指标是否收敛的一种可行的实现方式为:判断所述
    目标应用程序的性能指标的当前值与上一次性能测试中得到的性能指标的测
    试值的差值是否超过阈值;若是,则确定所述目标应用程序的性能指标未收
    敛;若否,则可以确定所述目标应用程序的性能指标已收敛。其中,所述阈
    值为预先设定的收敛范围,即性能的变化幅度,例如可以为1%。在本发明实
    施例中,判定目标应用程序的性能指标已收敛的条件是:所述目标应用程序
    的性能指标的当前值与上一次性能测试中得到的性能指标的测试值的差值未
    超过阈值。

    进一步可选的,在本发明另一实施例中,判定目标应用程序的性能指标
    已收敛的条件可以为:判断所述目标应用程序的性能指标的当前值与上一次
    性能测试中得到的性能指标的测试值的差值是否超过阈值;若判定所述目标
    应用程序的性能指标的当前值与上一次性能测试中得到的性能指标的测试值
    的差值未超过所述阈值,并且在连续M次的性能测试中分别得到的差值都未
    超过所述阈值,则确定目标应用程序的性能指标已收敛。其中,所述M的取
    值可以根据用户需求进行设置。其中,每次性能测试时当前值与上一次性能
    测试中得到的性能指标的测试值可以参考步骤103中的当前值与测试值的规
    律变化。具体地,该实施例中的每次性能测试可以包括:

    1012、使用即时编译参数的当前值,对目标应用程序进行性能测试,得
    到所述目标应用程序的性能指标的当前值。

    1022、判断所述目标应用程序的性能指标的当前值与上一次性能测试中
    得到的性能指标的测试值的差值是否超过阈值。

    1032、若判定所述目标应用程序的性能指标的当前值与上一次性能测试
    中得到的性能指标的测试值的差值未超过所述阈值,则将所述即时编译参数
    的当前值调整至少N个步长,得到所述即时编译参数的当前值的随机变异值;
    将所述即时编译参数的当前值的随机变异值作为下一次性能测试中所述即时
    编译参数的当前值。其中,所述步长为所述即时编译参数的最小单位。

    例如,假设性能测试已经做了1000次,目标应用程序的性能指标均未收
    敛;接着又做了200次性能测试,若差值一直小于1%(此处以阈值设为1
    %为例),则认为目标应用程序的性能指标已经收敛,对于该目标应用程序,
    将即时编译参数的当前值确定为即时编译参数的最优值。

    需要说明的是,根据即时编译算法的原理,每个即时编译参数取值大小
    都会影响性能,但同时也可能带来负面代价。以热点方法执行次数的最小值
    (Hot_Method_Invocation_Limit)为例,这个参数从原理上来讲,取值是越小
    越好,因为这个参数越小,则被判别为热点方法的方法个数越多,那么整个
    程序中以编译方式执行的规模会比以解释方式执行的规模更大,显然是有利
    于提升性能的;但是Hot_Method_Invocation_Limit也不是越小越好,因为如
    果Hot_Method_Invocation_Limit非常小,虚拟机用于编译方法的代价会变大,
    反而有可能超过编译方法带来的好处,使得最终的性能变坏。可见,任何参
    数的最优值都有一个临界值,临界值就是事实上使性能最好的值,在越过临
    界值之后反而会带来负面代价,使性能降低。只有找到这个临界值才能算是
    找到了最优结果。另外,各个即时编译参数之间并不是完全独立的,而是有
    一定的约束关系。也就是说,一个参数取某个值时,另一个参数的最优值会
    随之变化。这也导致了整体上的最优值是很难预测的,只能通过机器学习的
    方法,以迭代训练的方式在所有可能的空间中找到最优解。在上述实施例的
    基础上,本发明的一个实施例提出了针对各个即时编译参数的启发规则;与
    此对应,上述103和1032中的将即时编译参数的当前值调整至少N个步长
    的实现方式可以为:根据即时编译参数的启发规则,将即时编译参数的当前
    值调整至少N个步长。

    本发明实施例为了减少性能测试的工作量,本发明的一个实施例提出了
    针对各个即时编译参数的启发规则;与此对应,上述将即时编译参数的当前
    值调整至少N个步长的实现方式可以为:根据即时编译参数的启发规则,将
    即时编译参数的当前值调整至少N个步长,生成下一次性能测试中即时编译
    参数的当前值。

    值得一提的是,在本发明实施例中,不同的即时编译参数所对应的启发
    规则并不完全相同。例如,与热点方法执行次数的最小值、或方法内部循环
    次数的最小值对应的启发规则为:越小越好,具体为:若所述目标应用程序
    的性能指标的当前值大于所述上一次性能测试中得到的性能指标的测试值,
    则将所述即时编译参数的当前值减少至少N个步长,反之,则将所述即时编
    译参数的当前值增大至少N个步长。再例如,与被内联方法的最大体积、或
    所述内联的最大深度对应的启发规则为:越大越好,具体为:若所述目标应
    用程序的性能指标的当前值大于所述上一次性能测试中得到的性能指标的测
    试值,则将所述即时编译参数的当前值增大至少N个步长,反之,则将所述
    即时编译参数的当前值减少至少N个步长。本发明实施例根据启发规则对即
    时编译参数的当前值进行随机变异,使得即时编译参数能够更快的向最优值
    逼近,提高找到最优值的收敛速度,从而使即时编译参数的选值成本远小于
    现有技术。

    在实际中,对于N的取值,根据具体情况,可以将所述至少N个步长设
    置为:所述即时编译参数的取值上限的10%、5%、1%或0.1%等。可以理解
    的是,在优化测试的过程中,N的取值并不是固定不变的,而是可以随着优
    化过程的推进根据实际情况进行更新,例如:在优化的初期将所述至少N个
    步长设置为较大的数值,到优化的后期将所述至少N个步长设置较小的数值,
    以保证向即时编译参数的最优值逼近的精度越来越高。可以理解的是,对于
    N的取值也可以设置为10、50或100等。本领域技术人员可以理解,上述列
    举的N的可能取值,只是示例,其并不对本发明技术方案的保护范围构成限
    定。N的取值也可以根据用户需求进行设置。可选的,每一次性能测试完成
    后,可以对至少一个即时编译参数的取值进行调整。

    图2为本发明实施例提供的即时编译参数优化方法的另一流程图。如图
    2所示,本发明实施例的即时编译参数优化方法可以包括三个步骤:选择参
    数、训练参数、输出参数。具体为:

    1、选择参数:为每一个即时编译参数分别选择初始值,将初始值作为第
    一次性能测试中即时编译参数的当前值。

    2、训练参数:

    2.1、根据即时编译参数的当前值,测试目标应用程序,得到所述目标应
    用程序的性能指标的当前值;

    2.2、判断结果是否收敛:判断所述目标应用程序的性能指标的当前值与
    上一次性能测试中得到的性能指标的测试值的差值是否超过阈值。如果在完
    成连续若干轮性能测试后,即使继续调整即时编译参数的取值,目标应用程
    序的性能指标的变化幅度不大,则认为目标应用程序的性能指标已经收敛,
    转到步骤3。否则,说明最优值还没有找到,需要继续迭代训练,转到步骤
    2.3。

    2.3、根据启发规则随机变异参数:根据启发规则,将所述即时编译参数
    的当前值调整至少N个步长,得到下一次性能测试中所述即时编译参数的当
    前值,转到步骤2.1。

    3、输出参数:将即时编译参数的当前值确定为即时编译参数的最优值。

    本发明实施例提供的即时编译参数优化方法,利用机器学习的自动化迭
    代训练原理,使用机器学习方法来寻找虚拟机即时编译参数的最优值,与已
    有方法相比,更加自动化,搜索效率更高,参数值的准确性更高。

    图3为本发明实施例提供的即时编译参数优化装置的结构示意图。如图
    3所示,本发明实施例提供的即时编译参数优化装置300,包括:

    性能测试模块301,用于使用即时编译参数的当前值,对目标应用程序
    进行性能测试,得到所述目标应用程序的性能指标的当前值。

    判断模块302,用于根据所述性能测试模块301得到的所述目标应用程
    序的性能指标的当前值与上一次性能测试中得到的性能指标的测试值判断所
    述目标应用程序的性能指标是否收敛。

    随机变异模块303,用于若所述判断模块302根据所述目标应用程序的
    性能指标的当前值与上一次性能测试中得到的性能指标的测试值判断所述目
    标应用程序的性能指标未收敛,则将所述即时编译参数的当前值调整至少N
    个步长,得到所述即时编译参数的当前值的随机变异值;将所述即时编译参
    数的当前值的随机变异值作为下一次性能测试中所述即时编译参数的当前
    值;其中,所述步长为所述即时编译参数的最小单位。

    本发明实施例提供的即时编译参数优化装置,若根据所述目标应用程序
    的性能指标的当前值与上一次性能测试中得到的性能指标的测试值判断所述
    目标应用程序的性能指标未收敛,则对即时编译参数的当前值进行随机变异,
    随机变异每次将即时编译参数的取值变化一个较大的范围,快速的略过该较
    大的范围内的所有样本,降低测试工作量。本发明实施例通过随机变异的方
    法以更快的速度逼近即时编译参数的最优值,提升即时编译参数的选值准确
    度和选择效率,提升虚拟机的性能。

    在本发明一实施例中,所述判断模块302,具体用于判断所述目标应用
    程序的性能指标的当前值与上一次性能测试中得到的性能指标的测试值的差
    值是否超过阈值;若是,则确定所述目标应用程序的性能指标未收敛。

    在上述实施例的基础上,所述判断模块302,具体用于若判定所述目标
    应用程序的性能指标的当前值与上一次性能测试中得到的性能指标的测试值
    的差值未超过所述阈值,并且,在连续M次的性能测试中分别得到的差值都
    未超过所述阈值,则确定所述目标应用程序的性能指标已收敛。

    在上述实施例的基础上,所述随机变异模块303,具体用于根据所述即
    时编译参数的启发规则,将所述即时编译参数的当前值调整至少N个步长。

    在上述实施例的基础上,所述随机变异模块303,具体用于:

    在所述即时编译参数为热点方法执行次数的最小值或方法内部循环次数
    的最小值时,若所述目标应用程序的性能指标的当前值大于所述上一次性能
    测试中得到的性能指标的测试值,则将所述即时编译参数的当前值减少至少
    N个步长,反之,则将所述即时编译参数的当前值增大至少N个步长;或者,

    在所述即时编译参数为被内联方法的最大体积或内联的最大深度时,若
    所述目标应用程序的性能指标的当前值大于所述上一次性能测试中得到的性
    能指标的测试值,则将所述即时编译参数的当前值增大至少N个步长,反之,
    则将所述即时编译参数的当前值减少至少N个步长。

    本发明实施例根据启发规则对即时编译参数的当前值进行随机变异,使
    得即时编译参数能够更快的向最优值逼近,提高找到最优值的收敛速度,从
    而使即时编译参数的选值成本远小于现有技术。

    最后应说明的是:以上各实施例仅用以说明本发明的技术方案,而非对
    其限制;尽管参照前述各实施例对本发明进行了详细的说明,本领域的普通
    技术人员应当理解:其依然可以对前述各实施例所记载的技术方案进行修改,
    或者对其中部分或者全部技术特征进行等同替换;而这些修改或者替换,并
    不使相应技术方案的本质脱离本发明各实施例技术方案的范围。

    关 键  词:
    即时 编译 参数 优化 方法 装置
      专利查询网所有文档均是用户自行上传分享,仅供网友学习交流,未经上传用户书面授权,请勿作他用。
    0条评论

    还可以输入200字符

    暂无评论,赶快抢占沙发吧。

    关于本文
    本文标题:即时编译参数优化方法及装置.pdf
    链接地址:https://www.zhuanlichaxun.net/p-6199260.html
    关于我们 - 网站声明 - 网站地图 - 资源地图 - 友情链接 - 网站客服 - 联系我们

    copyright@ 2017-2018 zhuanlichaxun.net网站版权所有
    经营许可证编号:粤ICP备2021068784号-1