CN108536514B - 一种热点方法的识别方法和装置 - Google Patents

一种热点方法的识别方法和装置 Download PDF

Info

Publication number
CN108536514B
CN108536514B CN201710117984.5A CN201710117984A CN108536514B CN 108536514 B CN108536514 B CN 108536514B CN 201710117984 A CN201710117984 A CN 201710117984A CN 108536514 B CN108536514 B CN 108536514B
Authority
CN
China
Prior art keywords
suspected
identified
hot spot
dynamic
static
Prior art date
Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
Active
Application number
CN201710117984.5A
Other languages
English (en)
Other versions
CN108536514A (zh
Inventor
傅杰
敖琪
靳国杰
高翔
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Loongson Technology Corp Ltd
Original Assignee
Loongson Technology Corp Ltd
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by Loongson Technology Corp Ltd filed Critical Loongson Technology Corp Ltd
Priority to CN201710117984.5A priority Critical patent/CN108536514B/zh
Publication of CN108536514A publication Critical patent/CN108536514A/zh
Application granted granted Critical
Publication of CN108536514B publication Critical patent/CN108536514B/zh
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/44Arrangements for executing specific programs
    • G06F9/455Emulation; Interpretation; Software simulation, e.g. virtualisation or emulation of application or operating system execution engines
    • G06F9/45504Abstract machines for programme code execution, e.g. Java virtual machine [JVM], interpreters, emulators
    • G06F9/45516Runtime code conversion or optimisation
    • G06F9/4552Involving translation to a different instruction set architecture, e.g. just-in-time translation in a JVM

Landscapes

  • Engineering & Computer Science (AREA)
  • Software Systems (AREA)
  • Theoretical Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Debugging And Monitoring (AREA)

Abstract

本发明实施例提供了一种热点方法的识别方法和装置,所述方法包括:接收判决请求,所述判决请求包括待识别方法的标识信息;基于所述标识信息获取所述待识别方法的静态特征和动态特征;根据所述静态特征和所述动态特征判断所述待识别方法是否为疑似热点方法;当所述待识别方法为疑似热点方法时,将所述待识别方法添加到编译队列中。应用本发明实施例,可以将疑似热点方法添加到编译队列中,从而降低了热点方法的识别延迟,使得热点方法能够更早地完成编译,系统可以更早执行速度更快的翻译后本地方法,从而提高系统的运行速度。

Description

一种热点方法的识别方法和装置
技术领域
本发明实施例涉及通信技术领域,特别是涉及一种热点方法的识别方法和一种热点方法的识别装置。
背景技术
虚拟机(VM,Virtual Machine)主要通过软件(或者辅以少量硬件支持)的方法来虚拟出一台计算机,并且这台虚拟的计算机通常还支持一套自己的指令集,称为虚拟机指令集。
虚拟机依托于本地的物理机,通过其执行引擎对给定的虚拟机指令序列(目标程序)在本地机器上模拟执行。虚拟机的执行引擎可以由解释器来实现。由于解释器具有可移植性高、实现代价低和内存占用少等特点,大多数虚拟机的执行引擎都包含解释器。解释器以一条虚拟机指令为单位进行取指令、指令分派、取操作数和执行。但单纯的解释执行性能低下,因此虚拟机中引入动态编译系统来提高其性能。编译器是动态编译系统的核心。编译器以一组连续的虚拟机指令序列(基本块、函数或方法)为单位整体编译成本地CPU指令序列,称为本地方法,然后由硬件直接执行编译后的本地方法。编译器由于消除了重复的取指令和指令分派等过程,同时又在翻译时进行大量卓有成效的优化,因此其性能往往是解释器的10倍以上。由于编译器是在程序运行过程中进行动态编译的,故又将其称为即时编译器(JIT,Just-in-time Compiler)。动态编译是决定虚拟机性能的关键。
和传统C/C++等静态编译不同,动态编译行为发生在程序运行期间,会引入额外的编译开销。研究表明,程序运行的时间分布具有明显的局部性特征,即程序执行的大部分时间集中在小部分代码上。为了尽可能降低由动态编译产生的额外开销,现代虚拟机的动态编译系统通常依据“选择性编译”(selective compilation)理论进行设计和实现。其核心思想是:仅编译程序中频繁执行的部分(称为程序热点或热点方法)。
参照图1,以HotSpot虚拟机为例展示了Java虚拟机动态编译的基本过程。HotSpot虚拟机是当前实际应用最为广泛的Java虚拟机,最初由Sun公司研发,并于2006年开放了全部源代码。HotSpot的执行引擎包括解释器和即时编译器,并且以方法为基本单位进行动态编译。根据选择性编译的原理,HotSpot虚拟机仅翻译执行频度较高、对程序性能影响较大的方法,即热点方法(HotSpot虚拟机中程序热点的识别以方法为基本单位,故本文的程序热点也称为热点方法)。程序中所有的方法均由解释器开始执行。在解释执行期间,虚拟机为每个方法分别维护一个方法调用计数器和内部循环计数器。当上述两个计数器的和超过预设的阈值时,对应的方法便被识别为热点方法并被加入到编译队列中等待编译。随后,虚拟机中的编译线程会按照一定的编译调度策略从编译队列中选择方法进行编译。当方法编译完成后,此后对该方法的调用均直接执行编译后生成的本地代码,从而大幅提升程序的执行效率。
从以上分析可知,热点方法的识别是动态编译的关键步骤,决定了动态编译的对象,并最终直接影响虚拟机的性能。因此,为了提升虚拟机的性能,必须采用高效的热点方法的识别技术。
目前对于热点方法的识别技术有以下两种:
技术方案一:对于程序热点方法的识别,当前主流的技术采用了基于热点阈值的一次性判决准则:当方法m的执行次数超过热点阈值时立即被判定为热点方法。热点阈值通常由试验结果确定。为了获得一个理想的热点阈值,开发人员通常会利用大量的测试集,对许多不同的热点阈值进行试验,选取综合性能最优的值作为最终的热点阈值。
技术方案一的缺点:热点方法识别延迟大。具体来说,热点识别时要求方法实际执行的次数超过热点阈值,导致热点识别延迟较大。
技术方案二:为了缩短热点识别的延迟,有人在技术方案一的基础上提出了一种动态热点阈值方案,即系统中的热点阈值并非固定不变的,而是依据一定的策略自动进行调整。一种常见的调整策略为根据当前系统中等待编译的方法数目来调节热点阈值:当等待编译的方法数目过多时,增加热点阈值;而当等待编译的方法数目较少时,则适当降低热点阈值。
技术方案二的缺点:
1)当热点阈值增大时反而进一步增加了热点方法的识别延迟。
2)此外,该方案很容易导致系统对程序中热点方法的过度识别。例如,当虚拟机中等待编译的方法数目较少时(如程序启动阶段),热点阈值相对较低,可能使得许多短期内执行频度较高,但总体上对程序性能影响微弱的方法被系统错误地判决为热点方法。
热点方法的过度识别,不仅使得系统浪费宝贵的资源去编译对性能影响不大的方法,还导致对真正重要的热点方法编译的延迟增大,从而降低系统的性能。
发明内容
鉴于上述问题,提出了本发明实施例以便提供一种克服上述问题或者至少部分地解决上述问题的一种热点方法的识别方法和相应的一种热点方法的识别装置。
为了解决上述问题,本发明实施例公开了一种热点方法的识别方法,所述方法包括:
接收判决请求,所述判决请求包括待识别方法的标识信息;
基于所述标识信息获取所述待识别方法的静态特征和动态特征;
根据所述静态特征和所述动态特征判断所述待识别方法是否为疑似热点方法;
当所述待识别方法为疑似热点方法时,将所述待识别方法添加到编译队列中。
优选地,所述基于所述标识信息获取所述待识别方法的静态特征和动态特征,包括:
根据所述标识信息确定对应的待识别方法;
扫描所述待识别方法对应的程序段以获取所述待识别方法的静态特征;
根据所述标识信息获取待识别方法对应的动态特征。
优选地,所述根据所述静态特征和所述动态特征判断所述待识别方法是否为疑似热点方法,包括:
获取所述静态特征对应的第一属性值;
获取所述动态特征对应的第二属性值;
根据所述第一属性值计算得到静态预测值,根据所述第二属性值计算的得到动态预测值;
根据所述静态预测值和所述动态预测值判断所述待识别方法是否为疑似热点方法。
优选地,所述根据所述静态预测值和所述动态预测值判断所述待识别方法是否为疑似热点方法,包括:
当所述静态预测值不小于预设的第一阈值,且所述动态预测值不小于预设的第二阈值时,确定所述待识别方法为疑似热点方法;否则,所述待识别方法不是疑似热点方法。
优选地,所述根据所述静态预测值和所述动态预测值判断所述待识别方法是否为疑似热点方法,包括:
根据所述静态预测值核所述动态预测值生成疑似概率值;
当所述疑似概率值不小于预设的疑似阈值时,确定所述待识别方法为疑似热点方法;否则,所述待识别方法不是疑似热点方法。
优选地,所述接收判决请求之前,还包括:
统计所述待识别述方法的调用次数和内部循环次数;
当所述方法的调用次数与内部循环次数的和达到预设阈值的整数倍时,生成对应的判决请求。
优选地,所述方法还包括:
监测所述编译队列中疑似热点方法的活跃度,并根据活跃度删除所述编译队列中不再活跃的疑似热点方法。
本发明实施例还公开了一种热点方法的识别装置,包括:
判决请求接收模块,用于接收判决请求,所述判决请求包括待识别方法的标识信息;
方法特征获取模块,用于基于所述标识信息获取所述待识别方法的静态特征和动态特征;
疑似热点方法判断模块,用于根据所述静态特征和所述动态特征判断所述待识别方法是否为疑似热点方法;
编译队列添加模块,用于当所述待识别方法为疑似热点方法时,将所述待识别方法添加到编译队列中。
优选地,所述方法特征获取模块,包括:
待识别方法确定子模块,用于根据所述标识信息确定对应的待识别方法;
静态特征获取子模块,用于扫描所述待识别方法对应的程序段以获取所述待识别方法的静态特征;
动态特征获取子模块,用于根据所述标识信息获取待识别方法对应的动态特征。
优选地,所述疑似热点方法判断模块,包括:
第一属性值获取子模块,用于获取所述静态特征对应的第一属性值;
第二属性值获取子模块,用于获取所述动态特征对应的第二属性值;
预测值计算子模块,用于根据所述第一属性值计算得到静态预测值,根据所述第二属性值计算的得到动态预测值;
疑似热点方法判断子模块,用于根据所述静态预测值和所述动态预测值判断所述待识别方法是否为疑似热点方法。
优选地,所述疑似热点方法判断子模块,包括:
第一疑似热点方法判断单元,用于当所述静态预测值不小于预设的第一阈值,且所述动态预测值不小于预设的第二阈值时,确定所述待识别方法为疑似热点方法;否则,所述待识别方法不是疑似热点方法。
优选地,所述疑似热点方法判断子模块,包括:
疑似概率值生成单元,用于根据所述静态预测值核所述动态预测值生成疑似概率值;
第二疑似热点方法判断单元,用于当所述疑似概率值不小于预设的疑似阈值时,确定所述待识别方法为疑似热点方法;否则,所述待识别方法不是疑似热点方法。
优选地,所述装置还包括:
次数统计模块,用于统计所述待识别述方法的调用次数和内部循环次数;
判决请求生成模块,用于当所述方法的调用次数与内部循环次数的和达到预设阈值的整数倍时,生成对应的判决请求。
优选地,所述装置还包括:
疑似热点方法监测模块,用于监测所述编译队列中疑似热点方法的活跃度,并根据活跃度删除所述编译队列中不再活跃的疑似热点方法。
本发明实施例包括以下优点:
本发明实施例在接收到判决请求时,基于判决请求中的标识信息获取对应的待识别方法的静态特征和动态特征,并根据静态特征和动态特征判断该待识别方法是否为疑似热点方法,若是,则添加到编译队列中等待编译,应用本发明实施例,提前将疑似热点方法添加到编译队列中,从而降低了热点方法的识别延迟,使得热点方法能够更早地完成编译,系统可以更早执行速度更快的翻译后本地方法,从而提高系统的运行速度。
附图说明
图1是一种动态编译的基本过程示意图;
图2是本发明的一种热点方法的识别方法实施例1的步骤流程图;
图3是本发明的一种热点识别系统的结构框图;
图4是本发明的一种热点方法的识别方法实施例2的步骤流程图;
图5是本发明的一种热点方法的识别装置实施例的结构框图。
具体实施方式
为使本发明的上述目的、特征和优点能够更加明显易懂,下面结合附图和具体实施方式对本发明作进一步详细的说明。
参照图2,示出了本发明的一种热点方法的识别方法实施例1的步骤流程图,具体可以包括如下步骤:
步骤101,接收判决请求,所述判决请求包括待识别方法的标识信息;
在具体实现中,方法在虚拟机中实际上就是一串虚拟机指令的集合。通常,应用程序大部分执行时间消耗在小部分方法上,例如热点方法,因此对热点方法进行优化,能显著提高应用程序性能。
虚拟机中的方法有其对应的标识信息,基于该标识信息能够定位到对应的待识别方法。
步骤102,基于所述标识信息获取所述待识别方法的静态特征和动态特征;
在本发明的一种优选实施例中,所述步骤102,可以包括如下子步骤:
子步骤S11,根据所述标识信息确定对应的待识别方法;
子步骤S12,扫描所述待识别方法对应的程序段以获取所述待识别方法的静态特征;
子步骤S13,根据所述标识信息获取待识别方法对应的动态特征。
在具体实现中,将依据接收到的判决请求确定对应的待识别方法,一般而言,静态特征可以直接从待识别方法对应的程序段中获取,动态特征则需要通过一些计算得到。例如,动态特征中的方法的调用次数,需要在方法调用是动态进行监测并计算。
步骤103,根据所述静态特征和所述动态特征判断所述待识别方法是否为疑似热点方法;
在基于判决请求获取方法的静态特征和动态特征时,对于该待识别方法是否是疑似热点方法进行判断。其中,该待识别方法的识别由本发明实施例提出的疑似热点识别器完成。参照图3,疑似热点识别器由静态预测器、动态预测器和综合判决器三大部分组成。
其中,静态预测器使用方法的静态特征对疑似热点方法进行预测;动态预测器使用运行时的动态特征对疑似热点方法进行预测;综合判决器对静态预测结果s和动态预测结果d进行综合分析,并给出最终判决结果,即方法是否为疑似热点方法。
本发明实施例中的疑似热点识别器的判决依据更加丰富,不仅使得对热点方法的预测更为全面、准确,而且还能提前将热点方法添加到编译队列中,从而降低热点方法的识别延迟。
在本发明的一种优选实施例中,所述步骤103,可以如下包括子步骤:
子步骤S21,获取所述静态特征对应的第一属性值;
子步骤S22,获取所述动态特征对应的第二属性值;
子步骤S23,根据所述第一属性值计算得到静态预测值,根据所述第二属性值计算的得到动态预测值;
子步骤S24,根据所述静态预测值和所述动态预测值判断所述待识别方法是否为疑似热点方法。
具体地,当接收到方法m的判决请求后,疑似热点识别器对方法m进行判决。判决过程包括以下三个步骤:
1)静态预测器对方法m是否为疑似热点方法进行预测,设预测结果为s(静态预测值);
2)动态预测器对方法m是否为疑似热点方法进行预测,设预测结果为d(动态预测值);
3)综合判决器对静态预测结果s和动态预测结果d进行综合分析,并给出最终判决结果,即,是否为疑似热点方法。
本发明的一个具体实施案例,静态预测器的设计具体如下所示:
1)静态预测器使用方法的静态特征对疑似热点方法进行预测。
2)可供选择的静态特征包括但不限于:方法的签名、方法的大小、方法中循环的数量、方法中指令的分布、方法中分支指令的数量、方法中调用指令的数量、方法中访存指令的数量、方法中异常处理分支的数量等。第一属性值是指静态特征的具体取值。
3)基于上述静态特征,静态预测器可以通过机器学习或者设计启发式规则来构造。
4)静态预测器的输出s表示对应方法是疑似热点方法的概率,范围[0,1]。
5)由于方法的静态特征不会发生变化,故对同一个方法,静态预测器只需预测一次即可。
本发明的实施例中静态预测器采用启发式规则来构造,启发式规则指人在解决问题时所采取的一种根据经验规则进行发现的规则。其特点是在解决问题时,利用过去的经验,选择已经行之有效的方法,而不是系统地、以确定的步骤去寻求答案。
基于启发式规则,使用了方法循环的数量loop,方法的大小size和方法中调用指令的数量invoke_insts三种特征进行预测,一种具体的预测方法为:
s=0
if(loop>0)s=s+0.5;
if(size<1000)s=s+0.2
if(invoke_insts>5)s=s+0.3
return s;
其中,预测得到s是指方法在静态特征部分是疑似热点方法的概率。
本发明的一个具体实施案例,动态预测器的设计具体如下所示:
1)动态预测器使用运行时动态特征对疑似热点方法进行预测。
2)可供选择的动态特征包括但不限于:方法的调用次数、方法内部循环的次数、方法内部分支指令的跳转次数、方法内部调用指令的执行次数、方法在最近一段时间段内被调用的次数、方法中异常分支执行的次数、当前编译队列的长度、已编译的方法数目和已加载类的数目等。第二属性值是指动态特征的具体取值。
3)基于上述动态特征,动态预测器可以通过机器学习或者设计启发式规则来构造。
4)动态预测器的输出d表示对应方法是疑似热点方法的概率,范围[0,1]。
5)由于方法的动态特征不断发生变化,故对任意一个判决请求,动态预测器都需要进行预测。
本发明实施例中,动态预测器使用了方法的调用次数和方法内部循环次数这两种特征的属性值,通过构建贝叶斯分类器进行预测。贝叶斯分类器的分类原理是通过某对象的先验概率,利用贝叶斯公式计算出其后验概率,即该对象属于某一类的概率,选择具有最大后验概率的类作为该对象所属的类。
具体地,在本发明实施例中,可以获取方法的调用次数和方法内部循环次数这两种特征,输入到训练后的贝叶斯分类器中,得到各个特征对应的概率值,并基于各个特征对应的概率值计算出动态预测结果。
需要说明的是,静态特征和动态特征的属性值可以是存在重合部分,当然也可以是不重合,根据实际需求进行静态特征和动态特征的设定即可,本发明实施例对此不加以限制。此外,上述的静态预测结果和动态预测结果的预测方式也仅仅是作为示例,在实际应用中可以采用其他方式来进行计算,本发明实施例同样对此不加以限制。
在计算出静态预测结果和动态预测结果之后,可以采用多种方式来确定方法是否为疑似热点方法,具体地,确定方法可以包括有线性融合法和投票表决法。
在本发明的一种优选实施例中,所述子步骤S24,即投票表决法可以包括如下子步骤:
子步骤S2311,当所述静态预测值不小于预设的第一阈值,且所述动态预测值不小于预设的第二阈值时,确定所述待识别方法为疑似热点方法;否则,所述待识别方法不是疑似热点方法。
在本发明的一种优选实施例中,所述子步骤S24,即线性融合法可以包括如下子步骤:
子步骤S2321,根据所述静态预测值核所述动态预测值生成疑似概率值;
子步骤S2322,当所述疑似概率值不小于预设的疑似阈值时,确定所述待识别方法为疑似热点方法;否则,所述待识别方法不是疑似热点方法。
本发明的一个具体实施案例,可以推荐使用以下两种方法来设计,动态预测器的设计具体如下所示:
1)线性融合法。
若a·s+(1-a)·d≥0.8,则判定对应的方法为疑似热点方法;否则,判为非疑似热点方法。
其中,s为静态预测结果,d为动态预测结果,α为可调参数且a∈[0,1]
2)投票表决法。
若s≥0.5且d≥0.5,则判定对应的方法为疑似热点方法;否则,判为非疑似热点方法。
其中,s为静态预测结果,d为动态预测结果。本发明实施例中可以采用线性融合法,α取值为0.4。
当然,在实施本发明实施例时,还可以采用其他方法来对于的疑似热点方法进行识别,本发明实施例对此不加以限制。
步骤104,当所述待识别方法为疑似热点方法时,将所述待识别方法添加到编译队列中。
当待识别方法被确定为疑似热点方法后,将加入编译队列中等待编译。
本发明实施例中,在接收到判决请求时,基于判决请求中的标识信息获取对应的待识别方法的静态特征和动态特征,并根据静态特征和动态特征判断该待识别方法是否为疑似热点方法,若是,则添加到编译队列中等待编译,应用本发明实施例,提前将疑似热点方法添加到编译队列中,从而降低了热点方法的识别延迟,使得热点方法能够更早地完成编译,系统可以更早执行速度更快的翻译后本地方法,从而提高系统的运行速度。
参照图4,示出了本发明的一种热点方法的识别方法实施例2的步骤流程图,针对目前技术方案的缺点,本发明实施例2提供了一种热点方法的识别方法和装置,其核心思想主要包括以下两个方面:
1)降低热点方法的识别延迟。
若热点方法识别延迟降低,则热点方法能够更早地完成编译,虚拟机可以更早执行速度更快的翻译后本地方法,从而提高系统的运行速度。
2)减少不必要的编译开销。
若系统的编译开销减少,则系统中更多的资源可以分配给应用程序执行,从而提高应用程序的执行效率。
基于上述的两个主要核心思想,本发明实施例提出了一种“两段式”程序热点方法的识别机制。即:1)疑似热点识别阶段,2)编译队列在线过滤阶段。方法m在通过疑似热点识别阶段的预测后,会被加入到编译队列中等待编译。方法m在编译队列等待期间还要经历编译队列在线过滤的筛选。只有通过了上述两个阶段的确认,方法m才会被最终识别为热点方法。疑似热点识别阶段可以加速程序热点识别的过程,从而缩短热点识别的延迟。在线过滤阶段可以及时清除不再活跃的方法,尽可能地消除不必要的编译开销。
本发明实施例的主要技术效果是:1)有效降低程序热点的识别延迟;2)减少动态编译的运行时开销;3)通用性强,实现代价低,具有广泛的适用性。下面对于本发明实施例进行详细介绍。
具体可以包括如下步骤:
步骤201,统计所述待识别述方法的调用次数和内部循环次数;
步骤202,当所述方法的调用次数与内部循环次数的和达到预设阈值的整数倍时,生成对应的判决请求;
当虚拟机启动时,完成对解释器、编译器和其它部分的初始化。解释器初始化完毕后开始执行程序中的方法;编译器初始化完毕后进入等待编译的状态。对于程序中任意一个被执行的方法m,解释器依据一定的执行周期向疑似热点识别器提出对方法m的判决请求。
在本发明实施例中,解释器执行周期的设定,即规定解释器何时向疑似热点识别器发起判决请求,可以是基于方法的调用次数,也可以是基于方法的内部循环次数,也可以基于方法的调用次数和内部循环次数之和,当然,还可以是基于其他方式来设定执行周期,本发明实施例对此不加以限制。其中,调用次数与内部循环次数的和应该为预设阈值的整数倍,以避免频繁处理判决请求的开销。
在一种可选示例中,可以规定对任意一个方法m,以100次方法调用或者5000次的内部循环迭代为周期发起对该方法的判决请求。当发起的判决请求时,就可以基于该判决请求获取所述方法的方法特征,以对于该方法是否为疑似热点方法进行判决。
步骤203,接收判决请求,所述判决请求包括待识别方法的标识信息;
步骤204,基于所述标识信息获取所述待识别方法的静态特征和动态特征;
步骤205,根据所述静态特征和所述动态特征判断所述待识别方法是否为疑似热点方法;
步骤206,当所述待识别方法为疑似热点方法时,将所述待识别方法添加到编译队列中;
本发明实施例的程序热点方法的识别过程可以分为两个阶段进行。这两个阶段分别是1)疑似热点识别阶段和2)编译队列在线过滤阶段。其中,上述实施例1以针对疑似热点识别阶段进行说明,即步骤203-步骤206,故此处不再对于疑似热点识别阶段进行说明。
具体地,对于虚拟机的应用程序中的任意一个方法m,首先在1)疑似热点识别阶段,从应用程序所执行方法中确定出疑似热点方法,并添加到编译队列中等待编译,然后在2)编译队列在线过滤阶段,监测疑似热点方法的活跃度,并根据活跃度标记出编译队列中的不再活跃的疑似热点方法,在满足条件时删除编译队列中的不再活跃的疑似热点方法。
其中,对于添加到编译队列中的疑似热点方法,虚拟机中的编译线程会按照设定的编译调度策略从编译队列中选择疑似热点方法进行编译。当疑似热点方法编译完成后,此后对该方法的调用均直接执行编译后生成的本地代码,从而大幅提升程序的执行效率。
步骤207,监测所述编译队列中疑似热点方法的活跃度,并根据活跃度删除所述编译队列中不再活跃的疑似热点方法。
当确定了方法是疑似热点方法后,就可以添加到编译队列中等待编译,此时进入编译队列在线过滤阶段。
在编译队列在线过滤阶段,可以对编译队列的疑似热点方法进行删除,将最有编译价值的方法保留在编译队列中,提升了编译队列的效率;同时也降低了对重要方法的编译延迟,能有效提升虚拟机的性能。
具体来说,可以对编译队列中疑似热点方法的活跃度进行计算,然后删除编译队列中长期不活跃的方法,其中,不活跃的方法可以称为非活跃方法。下面对于非活跃方法的识别过程进行介绍。
当完成疑似热点识别阶段后,开始进入编译队列在线过滤阶段,对于编译队列中的疑似热点方法的活跃度进行监测,并根据活跃度将不再不活跃的疑似热点方法删除。
作为本发明的一种优选实施例,所述监测所述编译队列中疑似热点方法的活跃度的步骤可以包括如下子步骤:
子步骤S31,获取所述编译队列中疑似热点方法的全局活跃信息;
子步骤S32,获取所述编译队列中疑似热点方法的局部活跃信息;
子步骤S33,采用所述全局活跃信息和所述局部活跃信息计算所述疑似热点方法的活跃度。
在本发明实施例中,对于疑似热点方法需要检测的数据可以主要包括有全局活跃信息和局部活跃信息,然后基于全局活跃信息和局部活跃信息来共同确定疑似热点方法的活跃度。
作为本发明的一种优选实施例,所述子步骤S31的步骤可以包括:
子步骤S311,获取所述疑似热点的总执行次数;
子步骤S312,计算所述总执行次数和预设热点阈值的商值作为全局活跃信息。
对于方法m,记其全局活跃信息为global_activeness(m),其计算公式可以为:
Figure BDA0001236163960000151
其中,execute(m)表示方法m总的执行次数,总执行次数是指方法调用次数与方法内部循环次数之间的和,通常可以从虚拟机中直接获取。HotThreshold表示虚拟机中热点识别的阈值,为一个预设常量,本发明实施例中设为10000。
作为本发明的一种优选实施例,所述子步骤S32可以包括如下子步骤:
子步骤S321,获取所述疑似热点方法在当前时刻前的预设时间段的执行次数;
子步骤S322,计算所述执行次数和所述预设时间段的商值作为局部活跃信息。
对于方法m,记其当前的局部活跃信息为local_activeness(m),其计算公式为:
Figure BDA0001236163960000152
其中,Δt为预设常量,表示当前时刻前的长度为Δt的时间段;Δexecute(m)表示在过去的Δt时间段内方法m的执行次数。
作为本发明的一种优选实施例,所述子步骤S33可以包括如下子步骤:
子步骤S331,将所述全局活跃信息和所述局部活跃信息分别与指定数值相加;
子步骤S332,计算所述与指定数值相加的全局活跃信息和局部活跃信息的积作为疑似热点方法的活跃度。
本发明实施例最终基于全局活跃信息和局部活跃信息计算疑似热点方法的活跃度,对于方法m,记其活跃度为activeness(m),其计算公式可以为:
activeness(m)=[global_activeness(m)+1]×[local_activeness(m)+1]
当计算出活跃度为activeness(m),就可以根据活跃度activenes(sm)来标记编译队列中非活跃的方法。
需要说明的是,活跃度的计算方法中涉及的指定数值,例如上述公式中的指定数值1,可以按照实际情况进行更新,此外,活跃度的计算方式也可以采用其他公式计算得到,本发明实施例对此无需加以限制。
作为本发明的一种优选实施例,所述步骤102,即所述根据活跃度删除所述编译队列中不再活跃的疑似热点方法的步骤可以包括如下子步骤:
子步骤S41,判断所述疑似热点方法的活跃度是否小于预设活跃度阈值;若是,则执行子步骤S42;
子步骤S42,将所述疑似热点方法标记为不活跃方法;
子步骤S43,统计所述疑似热点方法连续被标记为非活跃方法的次数;
子步骤S44,当所述次数达到预设标记次数时,删除所述标记为非活跃方法的疑似热点方法。
对于编译队列中的任意方法m,若满足activeness(m)<ActiveThreshold,则认为方法m为非活跃方法,并将方法m进行标记。其中,ActiveThreshold为预设常量,本发明实施例中可以设为7。
本发明实施例中,为编译队列中的任意方法m设计了一个名为victim(m)的计数器。具体来说,计数器victim(m)用于统计编译队列中疑似热点方法被标记为非活跃方法的次数。
其中,当计数器victim(m)的连续统计到疑似热点方法被标记为非活跃方法的次数超过预设标记次数VictimThreshold(VictimThreshold为预设常量,本发明实施例中可以设为5)时,立即将方法m从编译队列中删除。
在编译队列在线过滤阶段,计数器victim(m)的更新规则如下:
1)victim(m)=victim(m)+1。
如果方法m被标记为非活跃方法,并且local_activenes(sm)=0,则将该方法的计数器victim(m)加1。
2)victim(m)=0。
如果方法m未被标记为非活跃方法,则将该方法的计数器victim(m)清零。
本发明实施例对编译队列中的所有方法进行在线过滤,编译线程在从编译队列中选择方法进行编译之前,在线过滤器对编译队列中所有方法的活跃度进行监测,以将编译队列中不再活跃的方法删除。编译器从编译队列选择方法进行编译,直到编译队列为空。
为了使本领域技术人员更好地理解本发明实施例提出的一种热点方法识别技术,以下对于热点方法识别的两个阶段进行介绍。参照图3,本发明实施例热点方法的识别过程分为以下两个阶段进行:
1)疑似热点识别阶段
本阶段由图2中疑似热点识别器完成。疑似热点识别器负责对接收到的热点判决请求进行裁决。若方法m被判定为疑似热点方法,则方法m被添加到编译队列中等待编译;否则,方法m继续解释执行。疑似热点识别器由静态预测器、动态预测器和综合判决器三大部分组成。相对于传统的热点识别器,本专利的疑似热点识别器可以提前将程序热点添加到编译队列中,从而降低程序热点的识别延迟。
2)编译队列在线过滤阶段
本阶段由图3中的在线过滤器完成。在线过滤器负责监测编译队列中所有方法的活跃度,并将编译队列中不再活跃的方法删除。在线过滤器可以及时剔除不再活跃的方法,从而减少不必要的动态编译开销。
需要说明的是,对于方法实施例,为了简单描述,故将其都表述为一系列的动作组合,但是本领域技术人员应该知悉,本发明实施例并不受所描述的动作顺序的限制,因为依据本发明实施例,某些步骤可以采用其他顺序或者同时进行。其次,本领域技术人员也应该知悉,说明书中所描述的实施例均属于优选实施例,所涉及的动作并不一定是本发明实施例所必须的。
参照图5,示出了本发明的一种热点方法的识别装置实施例的结构框图,具体可以包括如下模块:
判决请求接收模块301,用于接收判决请求,所述判决请求包括待识别方法的标识信息;
方法特征获取模块302,用于基于所述标识信息获取所述待识别方法的静态特征和动态特征;
疑似热点方法判断模块303,用于根据所述静态特征和所述动态特征判断所述待识别方法是否为疑似热点方法;
编译队列添加模块304,用于当所述待识别方法为疑似热点方法时,将所述待识别方法添加到编译队列中。
在本发明的一种优选实施例中,所述方法特征获取模块302,包括:
待识别方法确定子模块,用于根据所述标识信息确定对应的待识别方法;
静态特征获取子模块,用于扫描所述待识别方法对应的程序段以获取所述待识别方法的静态特征;
动态特征获取子模块,用于根据所述标识信息获取待识别方法对应的动态特征。
在本发明的一种优选实施例中,所述疑似热点方法判断模块303,包括:
第一属性值获取子模块,用于获取所述静态特征对应的第一属性值;
第二属性值获取子模块,用于获取所述动态特征对应的第二属性值;
预测值计算子模块,用于根据所述第一属性值计算得到静态预测值,根据所述第二属性值计算的得到动态预测值;
疑似热点方法判断子模块,用于根据所述静态预测值和所述动态预测值判断所述待识别方法是否为疑似热点方法。
在本发明的一种优选实施例中,所述疑似热点方法判断子模块,包括:
第一疑似热点方法判断单元,用于当所述静态预测值不小于预设的第一阈值,且所述动态预测值不小于预设的第二阈值时,确定所述待识别方法为疑似热点方法;否则,所述待识别方法不是疑似热点方法。
在本发明的一种优选实施例中,所述疑似热点方法判断子模块,包括:
疑似概率值生成单元,用于根据所述静态预测值核所述动态预测值生成疑似概率值;
第二疑似热点方法判断单元,用于当所述疑似概率值不小于预设的疑似阈值时,确定所述待识别方法为疑似热点方法;否则,所述待识别方法不是疑似热点方法。
在本发明的一种优选实施例中,所述装置还包括:
次数统计模块,用于统计所述待识别述方法的调用次数和内部循环次数;
判决请求生成模块,用于当所述方法的调用次数与内部循环次数的和达到预设阈值的整数倍时,生成对应的判决请求。
在本发明的一种优选实施例中,所述装置还包括:
疑似热点方法监测模块,用于监测所述编译队列中疑似热点方法的活跃度,并根据活跃度删除所述编译队列中不再活跃的疑似热点方法。对于装置实施例而言,由于其与方法实施例基本相似,所以描述的比较简单,相关之处参见方法实施例的部分说明即可。
本说明书中的各个实施例均采用递进的方式描述,每个实施例重点说明的都是与其他实施例的不同之处,各个实施例之间相同相似的部分互相参见即可。
本领域内的技术人员应明白,本发明实施例的实施例可提供为方法、装置、或计算机程序产品。因此,本发明实施例可采用完全硬件实施例、完全软件实施例、或结合软件和硬件方面的实施例的形式。而且,本发明实施例可采用在一个或多个其中包含有计算机可用程序代码的计算机可用存储介质(包括但不限于磁盘存储器、CD-ROM、光学存储器等)上实施的计算机程序产品的形式。
本发明实施例是参照根据本发明实施例的方法、终端设备(系统)、和计算机程序产品的流程图和/或方框图来描述的。应理解可由计算机程序指令实现流程图和/或方框图中的每一流程和/或方框、以及流程图和/或方框图中的流程和/或方框的结合。可提供这些计算机程序指令到通用计算机、专用计算机、嵌入式处理机或其他可编程数据处理终端设备的处理器以产生一个机器,使得通过计算机或其他可编程数据处理终端设备的处理器执行的指令产生用于实现在流程图一个流程或多个流程和/或方框图一个方框或多个方框中指定的功能的装置。
这些计算机程序指令也可存储在能引导计算机或其他可编程数据处理终端设备以特定方式工作的计算机可读存储器中,使得存储在该计算机可读存储器中的指令产生包括指令装置的制造品,该指令装置实现在流程图一个流程或多个流程和/或方框图一个方框或多个方框中指定的功能。
这些计算机程序指令也可装载到计算机或其他可编程数据处理终端设备上,使得在计算机或其他可编程终端设备上执行一系列操作步骤以产生计算机实现的处理,从而在计算机或其他可编程终端设备上执行的指令提供用于实现在流程图一个流程或多个流程和/或方框图一个方框或多个方框中指定的功能的步骤。
尽管已描述了本发明实施例的优选实施例,但本领域内的技术人员一旦得知了基本创造性概念,则可对这些实施例做出另外的变更和修改。所以,所附权利要求意欲解释为包括优选实施例以及落入本发明实施例范围的所有变更和修改。
最后,还需要说明的是,在本文中,诸如第一和第二等之类的关系术语仅仅用来将一个实体或者操作与另一个实体或操作区分开来,而不一定要求或者暗示这些实体或操作之间存在任何这种实际的关系或者顺序。而且,术语“包括”、“包含”或者其任何其他变体意在涵盖非排他性的包含,从而使得包括一系列要素的过程、方法、物品或者终端设备不仅包括那些要素,而且还包括没有明确列出的其他要素,或者是还包括为这种过程、方法、物品或者终端设备所固有的要素。在没有更多限制的情况下,由语句“包括一个……”限定的要素,并不排除在包括所述要素的过程、方法、物品或者终端设备中还存在另外的相同要素。
以上对本发明所提供的一种热点方法的识别方法和一种热点方法的识别装置,进行了详细介绍,本文中应用了具体个例对本发明的原理及实施方式进行了阐述,以上实施例的说明只是用于帮助理解本发明的方法及其核心思想;同时,对于本领域的一般技术人员,依据本发明的思想,在具体实施方式及应用范围上均会有改变之处,综上所述,本说明书内容不应理解为对本发明的限制。

Claims (12)

1.一种热点方法的识别方法,其特征在于,包括:
接收判决请求,所述判决请求包括待识别方法的标识信息;
基于所述标识信息获取所述待识别方法的静态特征和动态特征;
根据所述静态特征和所述动态特征判断所述待识别方法是否为疑似热点方法;
当所述待识别方法为疑似热点方法时,将所述待识别方法添加到编译队列中;
其中,所述根据所述静态特征和所述动态特征判断所述待识别方法是否为疑似热点方法,包括:
获取所述静态特征对应的第一属性值;
获取所述动态特征对应的第二属性值;
根据所述第一属性值计算得到静态预测值,根据所述第二属性值计算的得到动态预测值;
根据所述静态预测值和所述动态预测值判断所述待识别方法是否为疑似热点方法。
2.根据权利要求1所述的识别方法,其特征在于,所述基于所述标识信息获取所述待识别方法的静态特征和动态特征,包括:
根据所述标识信息确定对应的待识别方法;
扫描所述待识别方法对应的程序段以获取所述待识别方法的静态特征;
根据所述标识信息获取待识别方法对应的动态特征。
3.根据权利要求1所述的识别方法,其特征在于,所述根据所述静态预测值和所述动态预测值判断所述待识别方法是否为疑似热点方法,包括:
当所述静态预测值不小于预设的第一阈值,且所述动态预测值不小于预设的第二阈值时,确定所述待识别方法为疑似热点方法;否则,所述待识别方法不是疑似热点方法。
4.根据权利要求1所述的识别方法,其特征在于,所述根据所述静态预测值和所述动态预测值判断所述待识别方法是否为疑似热点方法,包括:
根据所述静态预测值和所述动态预测值生成疑似概率值;
当所述疑似概率值不小于预设的疑似阈值时,确定所述待识别方法为疑似热点方法;否则,所述待识别方法不是疑似热点方法。
5.根据权利要求1所述的识别方法,其特征在于,所述接收判决请求之前,还包括:
统计所述待识别方法的调用次数和内部循环次数;
当所述方法的调用次数与内部循环次数的和达到预设阈值的整数倍时,生成对应的判决请求。
6.根据权利要求1-5任一项所述的识别方法,其特征在于,所述识别方法还包括:
监测所述编译队列中疑似热点方法的活跃度,并根据活跃度删除所述编译队列中不再活跃的疑似热点方法。
7.一种热点方法的识别装置,其特征在于,包括:
判决请求接收模块,用于接收判决请求,所述判决请求包括待识别方法的标识信息;
方法特征获取模块,用于基于所述标识信息获取所述待识别方法的静态特征和动态特征;
疑似热点方法判断模块,用于根据所述静态特征和所述动态特征判断所述待识别方法是否为疑似热点方法;
编译队列添加模块,用于当所述待识别方法为疑似热点方法时,将所述待识别方法添加到编译队列中;
其中,所述疑似热点方法判断模块,包括:
第一属性值获取子模块,用于获取所述静态特征对应的第一属性值;
第二属性值获取子模块,用于获取所述动态特征对应的第二属性值;
预测值计算子模块,用于根据所述第一属性值计算得到静态预测值,根据所述第二属性值计算的得到动态预测值;
疑似热点方法判断子模块,用于根据所述静态预测值和所述动态预测值判断所述待识别方法是否为疑似热点方法。
8.根据权利要求7所述的装置,其特征在于,所述方法特征获取模块,包括:
待识别方法确定子模块,用于根据所述标识信息确定对应的待识别方法;
静态特征获取子模块,用于扫描所述待识别方法对应的程序段以获取所述待识别方法的静态特征;
动态特征获取子模块,用于根据所述标识信息获取待识别方法对应的动态特征。
9.根据权利要求7所述的装置,其特征在于,所述疑似热点方法判断子模块,包括:
第一疑似热点方法判断单元,用于当所述静态预测值不小于预设的第一阈值,且所述动态预测值不小于预设的第二阈值时,确定所述待识别方法为疑似热点方法;否则,所述待识别方法不是疑似热点方法。
10.根据权利要求7所述的装置,其特征在于,所述疑似热点方法判断子模块,包括:
疑似概率值生成单元,用于根据所述静态预测值和所述动态预测值生成疑似概率值;
第二疑似热点方法判断单元,用于当所述疑似概率值不小于预设的疑似阈值时,确定所述待识别方法为疑似热点方法;否则,所述待识别方法不是疑似热点方法。
11.根据权利要求7所述的装置,其特征在于,所述装置还包括:
次数统计模块,用于统计所述待识别方法的调用次数和内部循环次数;
判决请求生成模块,用于当所述方法的调用次数与内部循环次数的和达到预设阈值的整数倍时,生成对应的判决请求。
12.根据权利要求7-11任一项所述的装置,其特征在于,所述装置还包括:
疑似热点方法监测模块,用于监测所述编译队列中疑似热点方法的活跃度,并根据活跃度删除所述编译队列中不再活跃的疑似热点方法。
CN201710117984.5A 2017-03-01 2017-03-01 一种热点方法的识别方法和装置 Active CN108536514B (zh)

Priority Applications (1)

Application Number Priority Date Filing Date Title
CN201710117984.5A CN108536514B (zh) 2017-03-01 2017-03-01 一种热点方法的识别方法和装置

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
CN201710117984.5A CN108536514B (zh) 2017-03-01 2017-03-01 一种热点方法的识别方法和装置

Publications (2)

Publication Number Publication Date
CN108536514A CN108536514A (zh) 2018-09-14
CN108536514B true CN108536514B (zh) 2020-10-27

Family

ID=63488608

Family Applications (1)

Application Number Title Priority Date Filing Date
CN201710117984.5A Active CN108536514B (zh) 2017-03-01 2017-03-01 一种热点方法的识别方法和装置

Country Status (1)

Country Link
CN (1) CN108536514B (zh)

Families Citing this family (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN110673887B (zh) * 2019-08-15 2021-05-04 华为技术有限公司 应用程序启动方法、装置、终端设备及可读存储介质
CN112866392B (zh) 2020-08-31 2023-06-30 支付宝(杭州)信息技术有限公司 一种执行智能合约的方法、区块链节点、系统和存储介质
CN116382702B (zh) * 2023-06-06 2023-08-18 湖南天河国云科技有限公司 智能合约热点探测方法、装置、电子设备和存储介质

Citations (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN101067798A (zh) * 2007-06-14 2007-11-07 华南理工大学 一种动态探针方法及其在嵌入式系统中的应用
CN103377035A (zh) * 2012-04-12 2013-10-30 浙江大学 针对粗颗粒度流应用的流水并行化方法
CN103729235A (zh) * 2013-12-24 2014-04-16 华为技术有限公司 Java虚拟机的编译方法和Java虚拟机
CN106325964A (zh) * 2015-06-18 2017-01-11 龙芯中科技术有限公司 动态编译调度方法及装置

Family Cites Families (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
KR20160070636A (ko) * 2014-12-10 2016-06-20 경희대학교 산학협력단 분산 클라우드 환경에서의 마이그레이션 제어 장치 및 이를 이용한 마이그레이션 제어 방법

Patent Citations (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN101067798A (zh) * 2007-06-14 2007-11-07 华南理工大学 一种动态探针方法及其在嵌入式系统中的应用
CN103377035A (zh) * 2012-04-12 2013-10-30 浙江大学 针对粗颗粒度流应用的流水并行化方法
CN103729235A (zh) * 2013-12-24 2014-04-16 华为技术有限公司 Java虚拟机的编译方法和Java虚拟机
CN106325964A (zh) * 2015-06-18 2017-01-11 龙芯中科技术有限公司 动态编译调度方法及装置

Also Published As

Publication number Publication date
CN108536514A (zh) 2018-09-14

Similar Documents

Publication Publication Date Title
CN107392619B (zh) 智能合约处理方法及装置
CN109272109B (zh) 神经网络模型的指令调度方法及装置
US9569179B1 (en) Modifying models based on profiling information
US9880822B2 (en) Method and system for parallelization of sequential computer program codes
CN108536514B (zh) 一种热点方法的识别方法和装置
Hla et al. Applying particle swarm optimization to prioritizing test cases for embedded real time software retesting
WO2011159309A1 (en) Combined branch target and predicate prediction
JPH11237989A (ja) 休止中にバイトコード最適化を実行する方法及び装置
US9128747B2 (en) Methods and systems for optimizing the performance of software applications at runtime
CN107729240B (zh) 嵌入式软件堆栈溢出检测方法和装置
US8671397B2 (en) Selective data flow analysis of bounded regions of computer software applications
Fu et al. Value speculation scheduling for high performance processors
US10007495B2 (en) Code generation method for scheduling processors using hook function and exception handling function
CN110609689A (zh) 一种应用的安装运行方法及装置
US11288047B2 (en) Heterogenous computer system optimization
US9182956B2 (en) Flattening conditional statements
CN115829006A (zh) 神经网络模型的编译方法、装置、电子设备和存储介质
Rashid et al. Integrated analysis of cache related preemption delays and cache persistence reload overheads
US20110093838A1 (en) Managing speculative assist threads
US20160117157A1 (en) Eager and optimistic evaluation of promises
US20200065209A1 (en) Performance of a system including a first processor and a second processor
Fonseca et al. Evaluation of runtime cut-off approaches for parallel programs
EP3134815B1 (en) Memory efficient thread-level speculation
EP1387266A1 (en) Software pipelining for branching control flow
CN110764771B (zh) 动态编译方法和装置、可读存储介质及电子设备

Legal Events

Date Code Title Description
PB01 Publication
PB01 Publication
SE01 Entry into force of request for substantive examination
SE01 Entry into force of request for substantive examination
GR01 Patent grant
GR01 Patent grant
CP01 Change in the name or title of a patent holder
CP01 Change in the name or title of a patent holder

Address after: 100095 Building 2, Longxin Industrial Park, Zhongguancun environmental protection technology demonstration park, Haidian District, Beijing

Patentee after: Loongson Zhongke Technology Co.,Ltd.

Address before: 100095 Building 2, Longxin Industrial Park, Zhongguancun environmental protection technology demonstration park, Haidian District, Beijing

Patentee before: LOONGSON TECHNOLOGY Corp.,Ltd.