CN103154891B - 虚拟机阶段检测 - Google Patents
虚拟机阶段检测 Download PDFInfo
- Publication number
- CN103154891B CN103154891B CN201180047531.0A CN201180047531A CN103154891B CN 103154891 B CN103154891 B CN 103154891B CN 201180047531 A CN201180047531 A CN 201180047531A CN 103154891 B CN103154891 B CN 103154891B
- Authority
- CN
- China
- Prior art keywords
- stage
- virtual machine
- scope
- data handling
- metric
- 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.)
- Expired - Fee Related
Links
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements 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/44—Arrangements for executing specific programs
- G06F9/455—Emulation; Interpretation; Software simulation, e.g. virtualisation or emulation of application or operating system execution engines
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements 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/44—Arrangements for executing specific programs
- G06F9/455—Emulation; Interpretation; Software simulation, e.g. virtualisation or emulation of application or operating system execution engines
- G06F9/45504—Abstract machines for programme code execution, e.g. Java virtual machine [JVM], interpreters, emulators
- G06F9/45516—Runtime code conversion or optimisation
Landscapes
- Engineering & Computer Science (AREA)
- Software Systems (AREA)
- Theoretical Computer Science (AREA)
- Physics & Mathematics (AREA)
- General Engineering & Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Devices For Executing Special Programs (AREA)
- Debugging And Monitoring (AREA)
Abstract
公开一种将虚拟机阶段归类的计算机实现的方法、系统和计算机程序产品。数据处理系统启动虚拟机。他设置因子阶段范围,其中对于每个组合因子和阶段,存在对应的范围,以及其中每个范围与重设范围一样宽。他设置用于对虚拟机度量进行采样的频率,并对虚拟机度量进行采样,为每个因子形成多个虚拟机度量。他对每个虚拟机度量满足的每个范围应用一个值,形成与范围对应的多个阶段合格值,并且将每个阶段的所有阶段合格值进行求和,形成阶段可能性。数据处理系统还选择与最高阶段可能性对应的阶段。数据处理系统确定当前范围是否不同于先前范围。该系统扩大与当前阶段对应的每个范围。
Description
技术领域
本发明一般地涉及用于确定虚拟机的状态的计算机实现的方法、数据处理系统、和计算机程序产品。更具体地,本发明涉及在数据处理系统中适配算法、策略或探索以响应于在其中托管的虚拟机中执行的行为的等级和类型。
背景技术
计算机,特别是托管经划分的虚拟机的计算机可以将其执行的状态从开机的时刻向其被关机的时刻演进。在托管多个虚拟机的数据处理系统中,每个虚拟机可分配有客户端,其中组织依赖于虚拟机来支持组织的数据处理功能。
通常,可以在若干客户端之间分割数据处理系统。每个客户端与数据处理系统的所有者建立约定。由此,对于每个客户端,为了实现其商业目标,启动一个或多个虚拟机。很快,每个虚拟机可实现处理客户端任务的稳定状态。最后,例如,因为交易日结束,每个虚拟机可到达行为被最小化的空闲状态。
由于每个阶段带来新的问题和机会,所以识别虚拟机何时在阶段之间转换可能是有利的。
发明内容
本发明提供一种计算机实现的方法、系统和计算机程序产品,用于基于容易获得的虚拟机度量集将虚拟机阶段归类。数据处理系统启动虚拟机。其设置因子阶段范围,其中对于每个组合因子和阶段,存在对应的范围,以及其中每个范围至少与重设范围一样宽。他设置用于对虚拟机度量进行采样的频率,并按照一个频率对虚拟机度量进行采样,为每个因子形成多个虚拟机度量。其对每个虚拟机度量满足的每个范围应用一个值,形成与范围(和阶段)对应的多个阶段合格值。他还将与每个阶段对应的所有阶段合格值进行求和,为每个阶段形成阶段可能性。数据处理系统还选择在多个阶段可能性中与最高阶段可能性对应/具有最高阶段可能性的阶段,作为当前阶段。数据处理系统确定当前范围是否不同于先前范围。数据处理系统响应于当前范围不同的确定,扩大与当前阶段对应的每个范围,并可适配其内部算法。
从另一方面浏览本发明,提供一种将虚拟机阶段归类的计算机实现的方法,该方法包括:对每个虚拟机度量和虚拟机阶段组合,确定至少一个标准满足或不满足,其中虚拟机度量测量虚拟机的性能;确定对于虚拟机的每个虚拟机阶段满足的标准的计数;基于具有与每个虚拟机阶段对应满足的标准的每个计数中满足的最多标准的所选虚拟机,从虚拟机阶段中选择所选虚拟机阶段;和响应于选择所选虚拟机阶段,改变数据处理系统资源的分配以响应于选择所选虚拟机阶段。
优选地,所选虚拟机阶段是稳定阶段,并且改变数据处理系统资源的分配是对于增加向虚拟机分配的存储器进行的改变。
附图说明
认为是新颖性特征的本发明的特性在所附权利要求中有所阐述。然而,在结合附图阅读时,本发明本身以及优选实施方式、及其他目的和优点将参照以下示例性实施例的具体实施方式被最好地理解,其中:
图1是根据本发明的示例性实施例的数据处理系统的框图;
图2是根据本发明的示例性实施例在计算机系统中操作的软件组件的关系的框图;
图3是根据本发明的示例性实施例的JVM的框图;
图4是根据本发明的示例性实施例的状态或阶段视图;
图5是根据本发明的示例性实施例的收集虚拟机度量和作出相应阶段改变的流程图;
图6A是根据本发明的示例性实施例的因子阶段范围的表;和
图6B是根据本发明的示例性实施例的比较示例性虚拟机度量的表。
具体实施方式
现在参照附图,特别地参照图1,示出实现示例性实施例的方面的数据处理系统的框图。数据处理系统100是计算机的实例,其中可设置有实现本发明的处理的代码或指令。在所示的实例中,数据处理系统100采用集线器架构,包括北桥和存储器控制器集线器(NB/MCH)102以及南桥和输入/输出(I/O)控制器集线器(SB/ICH)104。处理器106、主存储器108、和图形处理器110连接至北桥和存储器控制器集线器102。图形处理器110可通过例如加速图形端口(AGP)连接至NB/MCH。主存储器108可通过动态随机存取存储器、或其他形式的易失性存储器形成。易失性存储器是依赖于电荷或其他能量载体的再供给以记录和制定可访问数据的存储器。
在所示实例中,局域网(LAN)适配器112连接至南桥和I/O控制器集线器104,并且音频适配器116、键盘和鼠标适配器120、调制解调器122、只读存储器(ROM)124、硬盘驱动器(HDD)126、CD-ROM驱动器130、通用串行总线(USB)端口和其他通信端口132、和PCI/PCIe设备134通过总线138和总线140连接至南桥和I/O控制器集线器104。PCI/PCIe设备可包括例如以太网适配器、插件卡、和用于笔记本计算机的PC卡。PCI使用卡总线控制器,而PCIe则不使用。ROM124可以是例如闪速二进制输入/输出系统(BIOS)。硬盘驱动器126和CD-ROM驱动器130可使用例如集成驱动电子设备(IDE)或串行高级技术附件(SATA)接口。超级I/O(SIO)设备136可连接至南桥和I/O控制器集线器104。
操作系统在处理器106上运行,并协调和提供图1中数据处理系统100中的各个组件的控制。操作系统可以是商业可用的操作系统,例如 XP。Microsoft和Windows是微软公司在美国、其他国家或共用的商标。面向对象编程系统(例如JavaTM编程系统)可结合操作系统运行,并从数据处理系统100上执行的JavaTM程序或应用向操作系统提供调用。JavaTM是Oracle公司在美国、其他国家或共用的商标。
用于操作系统、面向对象编程系统、和应用或程序的指令设置在存储设备上,例如硬盘驱动器126,并且可加载至主存储器108中用于处理器106的处理。本发明的处理可通过处理器106使用可设置在例如主存储器108、只读存储器124的存储器中或一个或多个外围设备中的计算机实现的指令来执行。
本领域技术人员可理解,图1中的硬件可根据实现方案而改变。除了或代替图1中示出的硬件,可使用例如闪速存储器、等同的非易失性存储器等的其他内部硬件或外围设备。此外,示例性实施例的处理可应用于多处理器数据处理系统。
一些示例性实例中,数据处理系统100可以是个人数字助理(PDA),其配置有闪速存储器,提供非易失性存储器,用于存储操作系统文件和/或用户生成的数据。总线系统可包括一个或多个总线,例如系统总线、I/O总线、和PCI总线。当然,总线系统可使用在附连至组织(fabric)或架构的不同组件或设备之间提供数据的传送的任意类型的通信组织或架构来实现。通信单元可包括用于发送和接收数据的一个或多个设备,例如调制解调器或网络适配器。存储器可以是例如在北桥和存储器控制器集线器102中找到的主存储器108或高速缓存。处理单元可包括一个或多个处理器或CPU。图1中示出的实例不意味着暗示架构的限制。例如,除了采用PDA的形式之外,数据处理系统100还可以是桌面型计算机、膝上型计算机、或电话设备。
这里使用的术语仅用于描述特定实施例的目的,并非限制本发明。这里,单数形式“一”、“一个”、和“所述”还包含复数形式,除非上下文明确指出。还可理解,术语“包括”和/或“包含”在本说明书中使用时指定相关特征、整数、步骤、操作、元件和/或组件的存在,并非排除一个或多个其他特征、整数、步骤、操作、元件、组件和/或其组的存在或增加。
以下权利要求中的对应结构、材料、动作和所有装置或步骤加功能元件的等同物旨在包括用于执行与特别主张的其他主张元素组合的功能的任意结构、材料、或动作。提供本发明的说明,用于图示和说明的目的,并非用于以公开的形式穷举或限制本发明。本领域技术人员清楚,在不脱离本发明的范围和精神的情况下,可以进行许多修改和改变。选择和描述该实施例,以最佳地说明本发明的原理和实践性应用,并且使得本领域技术人员能够理解对于具有适合于特定使用目的的各种修改的各个实施例的发明。
所属技术领域的技术人员知道,本发明可以实现为系统、方法或计算机程序产品。因此,本公开可以具体实现为以下形式,即:可以是完全的硬件、也可以是完全的软件(包括固件、驻留软件、微代码等),还可以是硬件和软件结合的形式,本文一般称为“电路”、“模块”或“系统”。此外,在一些实施例中,本发明还可以实现为在一个或多个计算机可读介质中的计算机程序产品的形式,该计算机可读介质中包含计算机可读的程序代码。
可以采用一个或多个计算机可读的介质的任意组合。计算机可读介质可以是计算机可读信号介质或者计算机可读存储介质。计算机可读存储介质例如可以是——但不限于——电、磁、光、电磁、红外线、或半导体的系统、装置或器件,或者任意以上的组合。计算机可读存储介质的更具体的例子(非穷举的列表)包括:具有一个或多个导线的电连接、便携式计算机磁盘、硬盘、随机存取存储器(RAM)、只读存储器(ROM)、可擦式可编程只读存储器(EPROM或闪存)、光纤、便携式紧凑磁盘只读存储器(CD-ROM)、光存储器件、磁存储器件、或者上述的任意合适的组合。在本文件中,计算机可读存储介质可以是任何包含或存储程序的有形介质,该程序可以被指令执行系统、装置或者器件使用或者与其结合使用。
计算机可读的信号介质可以包括在基带中或者作为载波一部分传播的数据信号,其中承载了计算机可读的程序代码。这种传播的数据信号可以采用多种形式,包括——但不限于——电磁信号、光信号或上述的任意合适的组合。计算机可读的信号介质还可以是计算机可读存储介质以外的任何计算机可读介质,该计算机可读介质可以发送、传播或者传输用于由指令执行系统、装置或者器件使用或者与其结合使用的程序。
计算机可读介质上包含的程序代码可以用任何适当的介质传输,包括——但不限于——无线、电线、光缆、RF等等,或者上述的任意合适的组合。
可以以一种或多种程序设计语言或其组合来编写用于执行本发明操作的计算机程序代码,所述程序设计语言包括面向对象的程序设计语言—诸如Java、Smalltalk、C++,还包括常规的过程式程序设计语言—诸如”C”语言或类似的程序设计语言。程序代码可以完全地在用户计算机上执行、部分地在用户计算机上执行、作为一个独立的软件包执行、部分在用户计算机上部分在远程计算机上执行、或者完全在远程计算机或服务器上执行。在涉及远程计算机的情形中,远程计算机可以通过任意种类的网络——包括局域网(LAN)或广域网(WAN)—连接到用户计算机,或者,可以连接到外部计算机(例如利用因特网服务提供商来通过因特网连接)。
下面将参照本发明实施例的方法、装置(系统)和计算机程序产品的流程图和/或框图描述本发明。应当理解,流程图和/或框图的每个方框以及流程图和/或框图中各方框的组合,都可以由计算机程序指令实现。这些计算机程序指令可以提供给通用计算机、专用计算机或其它可编程数据处理装置的处理器,从而生产出一种机器,这些计算机程序指令通过计算机或其它可编程数据处理装置执行,产生了实现流程图和/或框图中的方框中规定的功能/操作的装置。
也可以把这些计算机程序指令存储在能使得计算机或其它可编程数据处理装置以特定方式工作的计算机可读介质中,这样,存储在计算机可读介质中的指令就产生出一个包括实现流程图和/或框图中的方框中规定的功能/操作的指令装置(instructionmeans)的制造品(manufacture)。
也可以把计算机程序指令加载到计算机、其它可编程数据处理装置、或其它设备上,使得在计算机、其它可编程数据处理装置或其它设备上执行一系列操作步骤,以产生计算机实现的过程,从而使得在计算机或其它可编程装置上执行的指令能够提供实现流程图和/或框图中的方框中规定的功能/操作的过程。
计算机程序指令也可加载到计算机、其他可编程数据处理装置、或其他设备上,使得一系列操作在计算机、其他可编程装置、或其他设备上执行以生成计算机实现的处理,从而在计算机或其他可编程装置上执行的指令提供用于实现流程图和/或框图的一个或多个框指定的功能/行为的处理。
虚拟机是仿真物理硬件的一个或多个数据结构,通过在数据处理系统(例如图1中的数据处理系统100)上执行计算机指令来组织。虚拟机可依赖于物理硬件的部分提供例如易失性存储器、存储装置、寄存器和处理循环的特征。偶然地,基础结构硬件可与虚拟机实例化不同。例如,作为物理数据处理系统资源的易失性存储器可被替换为并支持盘存储装置的虚拟机实现方案。数据处理系统资源是在虚拟机的支持中可使用的物理电路、存储设备或通信工具。虚拟机可以是例如Java虚拟机(JVMTM)。JVM是Oracle公司的商标。
图2是根据本发明的示例性实施例在计算机系统中操作的软件组件的关系的框图。基于Java的系统200包含特定平台操作系统202,其为特定硬件平台上执行的软件提供硬件和系统支持。JVM204是可结合操作系统执行的一个软件应用。JVM204为Java运行时环境提供执行Java应用或小程序206(即用Java编程语言编写的程序、servlet、或软件组件)的能力。JVM204和其他软件组件在其中运行的计算机系统可类似于上述数据处理系统100。然而,JVM204可以在所谓的Java芯片、Java-on-silicon、或具有嵌入picoJava核的Java处理器上的专用硬件中实现。
如监测器216的内部JVM监测器(profiler)是检测在执行时可消耗大量CPU资源的Java方法的JVM组件。在一个可能的实现方案中,内部JVM监测器基于周期性检查运行线程的Java栈的采样机构。在每个采样点,在栈的顶部找到的方法再一次接收测量。具有更多测量的方法认为在统计上比具有更少测量的方法更加活动,并且可看作即时(just-in-time,jit)编译以改善JVM的性能。在采样点收集的数据称为“采样”。落入按解释运行的方法的采样称为“解释的采样”。类似地,归于已经被即时编译的Java方法的采样称为“编译的采样”。在Java应用的初期阶段,大部分Java方法按解释运行,并且预期为解释的采样将占多数。随着时间推移,越来越多的Java方法被jit编译,可得到多数采样为编译的采样。
类是用于建立对象的实例的描述或模板。类可包括变量、方法、或两者。对象是动态建立的类实例或数组。存储器的分配和用于对象的变量的访问称为实例化。用编写的Java代码实例化对象的方式为声明<Class-name><object-name>=”new”<Class-name>。对象可以是类,这个情况下,类定义构成对象的方式。由此,类是用于建立该类型的对象的模式。类还可定义实例化的对象将包含的变量、以及实例化的对象的方法。该类型的每个对象可使用在类中声明或描述的变量和方法。
垃圾收集器(GC)是允许废弃对象占用的存储器变为空闲以用于对象的未来分配的JVM组件。垃圾收集器(例如垃圾收集器201)可在存储器中合并活动对象,从而空闲存储器在至少一个更大的相邻块中可用。
JVM在Java运行时环境的中心,其支持Java环境的许多方面,包括其架构、安全特征、跨网络的移动性和平台独立性。JVM是虚拟计算机,即抽象指定的计算机。该规范定义了每个JVM必须实现的某些特征,其中设计选择的一些范围可取决于在上面设计JVM以执行的平台。例如,所有JVM必须执行Java字节代码,并使用一套技术来执行由字节代码表示的指令。JVM可在软件中完整地实现或有一些在硬件中实现。这个灵活性允许为主机计算机和PDA设计不同JVM。
JVM是实际执行Java程序的虚拟计算机组件的名称。Java程序并非直接通过中央处理器运行,而是通过JVM,这本身是处理器上运行的一部分软件。JVM允许Java程序在不同平台上执行,而不是仅编译代码的一个平台。为JVM编译Java程序。这样,Java能够支持用于许多类型的数据处理系统的应用,可包含各种中央处理单元和操作系统架构。为了使得Java应用能够在不同类型的数据处理系统上执行,编译器典型地生成架构中立的文件格式。编译的代码可在许多处理器上执行,假设存在Java运行时系统。Java编译器生成对于特定计算机架构非特定的字节代码指令。字节代码是Java编译器生成且Java解释器执行的机器独立代码。Java编译器是备选地解码和解释一段或多段字节代码的JVM的一部分。这些字节代码指令被设计为容易在任意计算机上解释并容易地空中(onthefly)翻译成本地机器代码。字节代码可通过即时编译器或JIT翻译成本地代码。
JVM加载类文件并在其中执行字节代码。类文件通过JVM中的类加载器加载。类加载器加载应用中的类文件和应用所需的Java应用编程接口(API)中的类文件。执行字节代码的执行引擎可跨平台和实施方案而不同。
一种类型的基于软件执行引擎是即时(just-in-time,JIT)编译器。通过这个类型的执行,在成功履行用于使方法进行即时的一些类型的标准时,将方法的字节代码编译成本地机器代码。即时完成(或jit)是在运行时方法的字节代码到本地机器代码的转换。然后,在方法的下次调用时,高速缓存并重新使用该方法的本地机器代码。执行引擎也可在硬件中实现并嵌入芯片上,从而本地执行Java字节代码。
响应于数据处理系统接收编译的请求,对方法进行编译。因为另一方法需要编译方法的功能,或因为内部JVM监测组件检测到该方法对性能[LXY1]非常重要,所以可产生编译的请求。JVM接收的编译请求的数目可相关于JVM当前存在的阶段。此外,编译的类型也相关。由此,JVM可在对于方法发出的第一编译请求和用于方法的第二编译请求(重编译请求)之间作出区分。
当在平台特定的操作系统上的软件中实现的JVM上执行应用时,Java应用可通过调用本地方法与主机操作系统交互。Java方法用Java语言编写,编译成字节代码,并存储在类文件中。本地方法用某些其他语言编写,并编译成特定处理器的本地机器代码。本地方法存储于动态链接的库,其确切的形式为平台特定。
图3是根据本发明的示例性实施例的JVM的框图。JVM350包括类加载器子系统311,这是用于加载类型的机构,例如类和接口,假定完全是合格的名称。JVM350还包含运行时数据区域304、执行引擎307、本地方法接口308、和存储器管理310。本地方法接口可以是例如Java本地接口(JNI)。执行引擎307是用于执行由类加载器子系统311加载的类的方法中包含的指令的机构。执行引擎307可以是例如Java解释器312或即时编译器314。本地方法接口308允许访问基础操作系统中的资源。本地方法接口308可以是例如Java本地接口(JNI)。
运行时区域304包含本地方法栈326、Java栈318、程序计数器(PC)寄存器320、方法区域322、和堆324。这些不同数据区域代表JVM350执行程序所需的存储器的组织。
Java栈318用于存储Java方法调用的状态。当启动新线程时,JVM为该线程建立新Java栈。JVM仅在Java栈上直接执行2个操作:其推送和弹出帧。线程的Java栈为该线程存储Java方法调用的状态。Java方法调用的状态包括其局部变量、对其调用所采用的参数、其返回值(如果存在)、和中间计算。Java栈包括栈框。栈框包含一个Java方法调用的状态。当线程调用方法时,JVM向线程的Java栈上推送新框。当该方法完成时,JVM弹出用于该方法的框并丢弃它。JVM不具有用于保持中间值的任意寄存器;需要或生成中间值的任意Java指令使用用于保持中间值的栈。这样,为各种平台架构很好地定义Java指令集。
程序计数器(PC)寄存器320用于指示要执行的下一指令。每个实例化的线程得到其自己的PC寄存器和Java栈。如果该线程正在执行方法,则PC寄存器的值指示要执行的下一指令。如果该线程正在执行本地方法,则PC寄存器的内容没有被定义。
本地方法栈326存储本地方法的调用的状态。本地方法调用的状态用依赖于实现方案的方式存储在本地方法栈、寄存器、或其他依赖于实现方案的区域中。在一些JVM实现方案中,将本地方法栈326和Java栈318组合。
方法区域322包含类数据,而堆324包含所有实例化的对象。在这些实例中,恒定池位于方法区域322中。JVM规范严格定义数据类型和操作。大多JVM具有一个方法区域和一个堆,其每个由JVM(例如JVM350)中运行的所有线程共享。当JVM350加载类文件时,他从类文件中包含的二进制数据解析关于类型的信息。JVM350将这个类型的信息放置于方法区域322中。每次建立类实例或数组时,从堆324分配用于新对象的存储器。JVM350包括在存储器中为堆324分配存储器空间的指令,但是不包括在存储器将该空间释放的指令。在所示实例中,存储器管理310管理存储器空间。存储器空间在为堆324分配的存储器中。存储器管理310可包括垃圾收集器,其自动地重新主张不再被引用的对象使用的存储器。此外,垃圾收集器还可移动对象以减少堆碎片。
在示例性实施例中使用的步骤的描述中将使用以下定义。
类(class)是定义如何存储和访问数据的文件中封装的方法和数据的组合。类可形成由此建立或实例化运行代码的实例的模板。
客户端为依赖于其他实体的执行程序或者访问或处理客户端的数据的执行软件。一些情况下,要处理的数据可以是完全合格的类名称,并且返回的结果可以是实例。
代码对象(codeobject)或对象(object)是可以被解释的代码、编译的JVM(即字节代码)、或机器语言。他一旦为特定目的被实例化,则可以是类的实例。
对象实例体(ObjectInstantiator)或ObjectInstantiator为在处理器执行时建立对象的实例的程序或类。对象实例体建立的对象符合面向对象编程(OOP)定义的对象的概念,但是一般地为可以从其他对象继承或不继承或允许其行为和数据被其他对象继承的行为和数据的封装表示。ObjectInstantiator的概念包括对象建立体(objectcreator)或ObjectCreator。
图4是根据本发明的示例性实施例的状态或阶段视图。虚拟机阶段是虚拟机对数据处理系统的资源使用的总体描述符。虚拟机阶段可以按照阶段之间的生命周期或其他进展表征或归类虚拟机操作的状态。虚拟机阶段可按照描述或建议将虚拟机设计为寻址的目标和对象的方式概括多个虚拟机度量。虚拟机阶段可以是开始(start-up)、空闲(idle)、加速(ramp-up)、和稳定(steady)。开始阶段可以是虚拟机执行的阶段,此时加载类是虚拟机的主导功能。例如,开始401可以是一旦在数据处理系统上被实例化而虚拟机进入的阶段。相比而言,空闲阶段403可以是当代替履行来自客户端的请求或任务的更活动和专业的处理执行偶然管理(housekeeping)时而虚拟机进入的阶段。除了空闲阶段之外的阶段称为非空闲阶段。空闲403可以是其他行为、例如加速阶段405或稳定阶段407的前导。典型地,虚拟机可在稳定阶段407消耗其大量时间。稳定阶段407是发生对客户端来说高成效的例程行为的阶段,除了与空闲阶段403相关的那些行为。下面将解释进一步的区别。可理解,可实现或多或少的阶段。例如,深度稳定状态409可按照虚拟机相对于稳定阶段表现的持续时间与稳定阶段407区分。由此,当虚拟机已经处于稳定阶段超过5分钟、或另一预定时间,则可确定虚拟机处于深度稳定状态,例如深度稳定409。阶段图中所述的每个阶段是假设性的虚拟机阶段。假设性的虚拟机阶段是虚拟机可运行的阶段,并且可为此设置可测量的标准,其可选择该假设性的虚拟机阶段作为虚拟机的实际和当前阶段。由此,假设性的虚拟机阶段是虚拟机阶段的选择集,虚拟机或其他执行的方法可从中选择以确定虚拟机阶段。
示例性实施例可包括确定与虚拟机相关的虚拟机度量的数据处理系统,这在用于假设性的虚拟机阶段的标准中满足于一个或多个虚拟机度量。此外,数据处理系统可确定对于可能的虚拟机阶段中的每个满足的标准的计数。此外,数据处理系统可确定哪个虚拟机阶段具有最多满足的标准,由此选择该虚拟机阶段。因此,数据处理系统可改变数据处理系统资源的分配,以响应于选择所选的虚拟机阶段。结果,数据处理系统可为虚拟机优化处理,或更有效地,在可同时竞争这样的资源的若干虚拟机之间分配数据处理系统。
图5是根据本发明的示例性实施例的收集虚拟机度量和作出相应阶段改变的流程图。起初,数据处理系统启动虚拟机(步骤501)。这个步骤之后是将初始阶段设置为开始(STARTUP)(步骤502)。接下来,数据处理系统可设置因子阶段范围的表(步骤503)。因子阶段范围是与虚拟机度量和假设性阶段对应的范围或数字标准。以下参见图6A,用于因子阶段范围的详细描述。假设性阶段是可作为将虚拟机阶段归类的候选的若干阶段之一。因子阶段范围的一些实例包括0-2000、300或更多、和0。因子表是具有用于虚拟机和假设性范围的每个配对的因子阶段范围的表。由此,如果虚拟机度量满足因子阶段范围,则虚拟机是用于对应假设性阶段的阶段合格的。换句话说,对于当前测量的虚拟机度量满足的那些虚拟机度量和阶段组合,虚拟机可能在特定阶段中至少符合该虚拟机度量。由于因子阶段范围仅是因子,而不必决定阶段,所以合格的那些因子阶段范围在一起被因子化,随后,确定特定阶段是否最可能是虚拟机的阶段。
接着,数据处理系统可设置唤醒频率(步骤505)。唤醒频率可用于周期性由虚拟机触发虚拟机度量的收集或采样,这个任务典型地在称为“采样线程”的专用线程上执行。其他处理可确定这样的虚拟机度量是否信号传输虚拟机转换到的新阶段。
接着,采样线程休眠。响应于休眠周期期满(步骤507),可采取进一步动作。休眠周期对应于唤醒频率,更早被设置。当休眠时间期满时,虚拟机可收集非直接中央处理单元(或非直接CPU)度量(步骤509)。非直接CPU度量是不基于现代CPU中可用的硬件执行计数器的虚拟机度量。由此,非直接CPU度量是不需要借助于核设备驱动器的使用可获得的度量。而大多虚拟机度量可从虚拟机本身的内部数据结构直接获得-因此可非常廉价地被询问-一些需要操作系统支持。需要操作系统支持的这样的虚拟机度量的实例为CPU利用。
接着,虚拟机可基于虚拟机度量(例如非直接CPU度量)选择阶段(步骤511)。这个步骤可作为3个子步骤来执行。首先,虚拟机可对每个虚拟机度量满足的每个范围应用一个值,形成与因子阶段范围对应的多个阶段合格值。例如,可为满足的因子阶段范围分配1值,而为不满足的这样的因子阶段范围分配0值。当一个因子阶段范围倾向于与其他因子阶段范围相比赋予更高的权重,则可使用更大的值。如果因子阶段范围相比于其他因子阶段范围降低重要性,则可使用更小的值。
第二,虚拟机可将与每个阶段(或假设性阶段)对应的所有阶段合格值进行求和,形成对于每个阶段的阶段可能性。换句话说,阶段可能性是适合于假设性阶段的所有阶段合格值的总和。第三,虚拟机可在多个阶段可能性中选择与最高阶段可能性对应的阶段,作为当前阶段。换句话说,获得对于所有假设性阶段(例如开始、空闲、加速、稳定和深度稳定)的阶段可能性的虚拟机可选择具有最高阶段可能性的阶段。可采用其他动作来优化对于所选阶段的虚拟机的性能,或备选地,如果该阶段建议更好地牺牲一些实施性能以避免成本,则可将虚拟机的操作成本降低。
接着,虚拟机可确定是否改变当前阶段(步骤513)。如果虚拟机确定对于当前阶段没有改变,则在步骤507虚拟机可返回至按一个频率采样虚拟机度量。然而,在步骤513的肯定结果可得到使得与当前阶段对应的每个范围扩大的虚拟机(步骤515)。由此,对于当前范围,更有可能满足与因子阶段范围的未来比较。这个特征可提供一定的滞后,并防止在阶段之间不期望的频繁切换。
滞后可能被进一步提升。接着,虚拟机可将与该虚拟机相关的先前阶段对应的每个因子阶段范围进行重设(步骤519)。重设包含将适合于先前阶段的每个因子阶段范围设置为在执行步骤515之前存在的值或标准。由此,虚拟机度量可更加远离每个因子阶段范围的边缘情况。步骤515和519的组合效果可使得虚拟机度量进一步嵌入于当前阶段的因子阶段范围内,而先前因子阶段范围从当前测量的虚拟机度量后退。因子阶段范围的扩大可以到达上限、下线、或两者,假设多个限制存在于因子阶段范围。此外,在没有适合于因子阶段范围的上限或范围时,不扩大该特定因子阶段范围。
图6A是根据本发明的示例性实施例的因子阶段范围的表。每个因子阶段范围表可在将近虚拟机的实例化时设置。此外,因子阶段范围表可独立于每个虚拟机而设置,由此可被动态修正以提供为每个虚拟机选择的阶段的滞后。因子阶段范围表600可包括9个因子,在组合时可用作虚拟机的阶段选择的基础。悬置JIT编译请求的数目601是还未完成的JIT编译请求的指示。该数目可从例如图3的JIT编译器314的即时编译器获得。
第一时间编译的到达率是JIT编译器从先前采样时段接收的第一时间编译的数目,除以采样的时段。类似地,重新编译请求的到达率是这样的重新编译请求的数目除以采样的时段。
类加载率604可从类加载器311获得。在该时段加载的类的数目除以该时段,获得该率。当确定是否满足与类加载率和空闲622阶段对应的因子阶段范围时,虚拟机可确定在该时段期间是否加载任何类。由此,执行一个测试,而不确定虚拟机度量是否落于两个值之间。
编译代码中的采样605是从内部JVM监测器机构216应用于已经jit编译的方法的最后检查之后监测(sampling)采样的数目。
解释代码中的采样606是从内部JVM监测器机构216应用于仍旧作为解释运行的方法的最后检查之后监测采样的数目。
活动线程的数目607是虚拟机建立的活动地执行一些可用任务并有助于应用的进展的应用线程的数目。相比而言,非活动线程仅等待工作,而不消耗CPU周期。类似地,执行处理的CPU利用608是在数据处理系统中CPU或核心中向虚拟机分配的CPU周期的百分比。
虚拟机度量“稳定阶段的持续时间”是虚拟机持久处于稳定阶段或深度稳定阶段的分钟的数目。
图6B是根据本发明的示例性实施例的比较或概括示例性虚拟机度量的比较的表。例如,采样时段可为悬置JIT编译请求的数目、第一时间编译的到达率、重新编译请求的到达率、类加载率、编译代码中的采样、解释代码中的采样、活动线程的数目、和执行处理的CPU利用的每个分别生成1005,1005,5,250,25,0,5,5和0。稳定状态的持续时间可能不可用或未定义。
由此,可确定阶段合格值。例如,由于虚拟机度量1005满足图6A的范围0-2000640,满足与悬置JIT编译请求的数目651和开始阶段656对应的因子阶段范围的标准的1的阶段合格值680是“1”。此外,该表为每个假设性阶段提供阶段合格值的总和,作为阶段可能性的集合690。对于虚拟机度量655,对应的阶段可能性具有与加速阶段对应的最高阶段可能性。由此,虚拟机可选择加速作为当前阶段。
一旦选择当前阶段,则各个响应是可能的。例如,虚拟机可响应于选择空闲阶段而降低其背景管理行为的频率。频率的降低是相比于在非空闲阶段发生的管理行为。这个响应可使得虚拟机的客户或其他所有者免于必须在空闲期间为CPU周期进行支付。此外,这可允许操作系统从易失性存储器去除虚拟机的图像,并用其他活动应用代替。
对于确定虚拟机处于开始阶段的响应可包括禁止Java虚拟机(JVM)的表示。另一响应可以是在即时编译期间延缓jit编译或减少优化努力,以向客户提供更好的开始体验或在安排的事件(如软件升级)或不可预测的事件(如硬件或软件故障)之后减少停机时间。
响应优化的另一实例可包括对以下情况的响应。起初,虚拟机可以在开始阶段,例如由流程图500的步骤选择。在这样的开始阶段,虚拟机应抑制分配相对大量的存储器。虚拟机还可采样,对虚拟机度量满足的每个范围应用值或阶段可能性集,以选择当前阶段为稳定阶段的方式将这样的值求和。响应于这样的转换,虚拟机可选择与存储器占用相比倾向于执行速度的使用内部算法。
另一响应优化可包括对确定稳定阶段或深度稳定阶段的响应。作为到达深度稳定阶段的初始步骤,虚拟机可确定在稳定阶段的连续执行是否达到预定时间。由此,响应于确定满足预定时间条件,虚拟机可禁止即时(JIT)编译或方法监测。方法监测为收集关于运行时方法的行为的信息的动作。所分配的信息的实例包括在方法内的什么路径被更频繁地执行,什么目标更可能被接口调用来引用等。
由此,通过以上公开的方法和装置,托管一个或多个虚拟机的数据处理系统可表征每个虚拟机到达特定阶段。一旦一个阶段已知,则可根据客户端的偏好,或备选地数据处理系统的所有者或操作者的偏好,执行额外优化。因此,可动态调节所述优化,以适合于在虚拟机的生命周期期间为每个阶段分配的不同目标。
附图中的流程图和框图示出根据本发明各个实施例的系统、方法、和计算机程序产品的可能实现的架构、功能、和操作。由此,流程图或框图中的每个框可表示包括用于实现特定逻辑功能的一个或多个可执行指令的模块、段、或代码部分。还应注意,在一些实施例中,在框中提及的功能可并非按照附图中提及的顺序发生。例如,连续示出的两个框可事实上基本同时执行,或所述框有时候可按相反顺序执行,这取决于涉及的功能。框图和/或流程图的框的每个框、以及框图和/或流程图的框的组合可通过执行特定功能或行为的基于专用硬件系统与专用硬件和计算机指令结合来实现。
本发明可采用完全硬件实施例、完全软件实施例或包含硬件和软件元素的实施例的形式。在优选实施例中,在包括但不限于固件、驻留软件、微码等的硬件和软件中实现本发明。
此外,本发明可采用从计算机可用或计算机可读介质可访问的计算机程序产品的形式,所述计算机可用或计算机可读介质提供用于计算机或任意指令执行系统或与其连接的程序代码。为了这里说明的目的,计算机可用或计算机可读介质可以是可包含、存储、通信、传播或传输用于指令执行系统、装置或设备或与其连接的程序的任意有形装置。
介质可以是电子、磁、光、电磁、红外或半导体系统(或装置或设备)或传播介质。计算机可读介质的实例包括:半导体或固态存储器、磁带、可卸计算机磁盘、随机存取存储器(RAM)、只读存储器(ROM)、硬盘和光盘。光盘的当前实例包括压缩盘-只读存储器(CD-ROM)、压缩盘-读/写(CD-R/W)和DVD。
适用于存储和/或执行程序代码的数据处理系统包括直接或通过系统总线间接与存储器元件耦合的至少一个处理器。存储器元件可包括在程序代码的实际执行期间采用的本地存储器、海量存储装置、以及提供至少一些程序代码的临时存储以减少在执行期间必须从海量存储装置提取代码的次数的高速缓存。
输入/输出或I/O设备(包括但不限于键盘、显示器、定点设备等)可直接或通过中间I/O控制器耦合至系统。
网络适配器也可耦合至系统,以使得数据处理系统能够通过中间专用网络或公共网络耦合至其他数据处理系统或远程打印机或存储设备。调制解调器、电缆调制解调器和以太网卡仅是网络适配器的几个当前可用类型。
为了说明和描述的目的提出本发明实施例的以上描述,并且其不是穷尽的,以及并没有将本发明限制在所公开的特定形式。对于本领域普通技术人员,许多变形和改变是清楚的。选择和描述实施例以最佳地解释发明原理、实际应用,以及使得本领域普通技术人员能够通过适用于特定用途的具有各种修改的各种实施例理解本发明。
Claims (14)
1.一种将虚拟机阶段归类的计算机实现的方法,该方法包括:
启动虚拟机;
设置因子阶段范围,其中对于每个组合因子和阶段,存在对应的范围,以及其中每个范围至少与重设范围一样宽;
设置用于对虚拟机度量进行采样的频率;
按照一个频率对虚拟机度量进行采样,为每个因子形成多个虚拟机度量;
对每个虚拟机度量满足的每个范围应用一个值,形成与范围对应的多个阶段合格值;
将与每个阶段对应的所有阶段合格值进行求和,为每个阶段形成阶段可能性;
选择在多个阶段可能性中与最高阶段可能性对应的阶段,作为当前阶段;
确定当前范围是否不同于先前范围;和
响应于当前范围不同的确定,扩大与当前阶段对应的每个范围。
2.如权利要求1所述的计算机实现的方法,其中虚拟机度量是非直接中央处理单元虚拟机度量。
3.如权利要求1所述的计算机实现的方法,其中选择阶段包括选择开始阶段;和
响应于选择开始阶段,延缓至少一个方法的即时编译。
4.如权利要求1所述的计算机实现的方法,其中选择阶段包括选择空闲阶段,并且该计算机实现的方法还包括:
响应于选择空闲阶段,与非空闲阶段中使用的第二管理行为相比,减少虚拟机的第一管理行为。
5.如权利要求1所述的计算机实现的方法,其中选择阶段包括选择开始阶段,并且该计算机实现的方法还包括:
禁止在虚拟机中的方法监测。
6.如权利要求1所述的计算机实现的方法,其中选择虚拟机阶段包括选择开始阶段,并且该方法还包括:
响应于选择开始阶段向虚拟机分配第一存储器量;
进一步采样、应用、求和以及选择稳定阶段;和
响应于选择稳定阶段,分配比第一存储器量更大的第二存储器量。
7.如权利要求6所述的计算机实现的方法,该方法还包括:
确定在稳定阶段连续执行预定时间;和
响应于在稳定阶段连续执行的确定,禁止即时编译。
8.一种将虚拟机阶段归类的数据处理系统,该数据处理系统包括:
配置为启动虚拟机的装置;
配置为设置因子阶段范围的装置,其中对于每个组合因子和阶段,存在对应的范围,以及其中每个范围至少与重设范围一样宽;
配置为设置用于对虚拟机度量进行采样的频率的装置;配置为按照一个频率对虚拟机度量进行采样,为每个因子形成多个虚拟机度量的装置;
配置为对每个虚拟机度量满足的每个范围应用一个值,形成与范围对应的多个阶段合格值的装置;
配置为将与每个阶段对应的所有阶段合格值进行求和,为每个阶段形成阶段可能性的装置;配置为选择在多个阶段可能性中与最高阶段可能性对应的阶段作为当前阶段的装置;
配置为确定当前范围是否不同于先前范围的装置;和
配置为响应于当前范围不同的确定扩大与当前阶段对应的每个范围的装置。
9.如权利要求8所述的数据处理系统,其中虚拟机度量是非直接中央处理单元虚拟机度量。
10.如权利要求8所述的数据处理系统,其中选择阶段包括选择开始阶段装置,该数据处理系统进一步包括配置为响应于选择开始阶段延缓至少一个方法的即时编译的装置。
11.如权利要求8所述的数据处理系统,其中选择阶段包括选择空闲阶段,并且该数据处理系统进一步包括:
配置为与非空闲阶段中使用的第二管理行为相比减少虚拟机的第一管理行为的装置。
12.如权利要求10所述的数据处理系统,其中选择阶段包括选择开始阶段,并且该数据处理系统还包括:
配置为禁止在虚拟机中的方法监测的装置。
13.如权利要求8所述的数据处理系统,其中选择虚拟机阶段包括选择开始阶段,该数据处理系统进一步包括:配置为响应于选择开始阶段向虚拟机分配第一存储器量的装置;配置为进一步采样、应用、求和以及选择稳定阶段的装置;和配置为响应于选择稳定阶段分配比第一存储器量更大的第二存储器量的装置。
14.如权利要求13所述的数据处理系统,进一步包括:配置为执行确定在稳定阶段连续执行预定时间的装置;和配置为响应于在稳定阶段连续执行的确定禁止即时编译的装置。
Applications Claiming Priority (3)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
US12/896,155 US8533712B2 (en) | 2010-10-01 | 2010-10-01 | Virtual machine stage detection |
US12/896,155 | 2010-10-01 | ||
PCT/EP2011/064215 WO2012041600A1 (en) | 2010-10-01 | 2011-08-18 | Virtual machine stage detection |
Publications (2)
Publication Number | Publication Date |
---|---|
CN103154891A CN103154891A (zh) | 2013-06-12 |
CN103154891B true CN103154891B (zh) | 2016-03-23 |
Family
ID=44503852
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201180047531.0A Expired - Fee Related CN103154891B (zh) | 2010-10-01 | 2011-08-18 | 虚拟机阶段检测 |
Country Status (3)
Country | Link |
---|---|
US (2) | US8533712B2 (zh) |
CN (1) | CN103154891B (zh) |
WO (1) | WO2012041600A1 (zh) |
Families Citing this family (7)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US9378058B2 (en) * | 2011-10-17 | 2016-06-28 | Excalibur Ip, Llc | Method and system for dynamic control of a multi-tier processing system |
US9081588B2 (en) * | 2012-01-31 | 2015-07-14 | Mentor Graphics Corporation | Execution time profiling for interpreted programming languages |
US9239706B2 (en) * | 2013-04-24 | 2016-01-19 | International Business Machines Corporation | Selective speculative class-based optimization |
CN104348671A (zh) * | 2013-07-26 | 2015-02-11 | 中国电信股份有限公司 | IPv6网络中识别虚拟主机的方法和DPI设备 |
US9898307B2 (en) * | 2015-12-21 | 2018-02-20 | Intel Corporation | Starting application processors of a virtual machine |
US20190220294A1 (en) * | 2018-01-17 | 2019-07-18 | International Business Machines Corporation | Using lightweight jit compilation for short-lived jvms on parallel distributing computing framework |
US11972242B2 (en) * | 2022-07-26 | 2024-04-30 | Red Hat, Inc. | Runtime environment optimizer for JVM-style languages |
Citations (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN101430674A (zh) * | 2008-12-23 | 2009-05-13 | 北京航空航天大学 | 一种分布式虚拟机监控器内连通信方法 |
Family Cites Families (9)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US6289506B1 (en) | 1998-06-30 | 2001-09-11 | Intel Corporation | Method for optimizing Java performance using precompiled code |
US6971091B1 (en) | 2000-11-01 | 2005-11-29 | International Business Machines Corporation | System and method for adaptively optimizing program execution by sampling at selected program points |
US20080086285A1 (en) | 2002-03-04 | 2008-04-10 | George Gombas | System and method for monitoring complex distributed application environments |
US7389502B2 (en) | 2004-03-31 | 2008-06-17 | Intel Corporation | Program phase detection for dynamic optimization |
US7770157B2 (en) | 2005-08-08 | 2010-08-03 | International Business Machines Corporation | System and method for improving virtual machine performance using an offline profile repository |
US7930513B2 (en) * | 2006-11-04 | 2011-04-19 | Virident Systems Inc. | Writing to asymmetric memory |
US8271989B2 (en) * | 2008-02-07 | 2012-09-18 | International Business Machines Corporation | Method and apparatus for virtual processor dispatching to a partition based on shared memory pages |
US9141381B2 (en) | 2008-10-27 | 2015-09-22 | Vmware, Inc. | Version control environment for virtual machines |
US8108406B2 (en) * | 2008-12-30 | 2012-01-31 | Expanse Networks, Inc. | Pangenetic web user behavior prediction system |
-
2010
- 2010-10-01 US US12/896,155 patent/US8533712B2/en not_active Expired - Fee Related
-
2011
- 2011-08-18 WO PCT/EP2011/064215 patent/WO2012041600A1/en active Application Filing
- 2011-08-18 CN CN201180047531.0A patent/CN103154891B/zh not_active Expired - Fee Related
-
2012
- 2012-07-02 US US13/452,175 patent/US8756603B2/en not_active Expired - Fee Related
Patent Citations (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN101430674A (zh) * | 2008-12-23 | 2009-05-13 | 北京航空航天大学 | 一种分布式虚拟机监控器内连通信方法 |
Also Published As
Publication number | Publication date |
---|---|
US20130014105A1 (en) | 2013-01-10 |
WO2012041600A1 (en) | 2012-04-05 |
US8756603B2 (en) | 2014-06-17 |
US20120084776A1 (en) | 2012-04-05 |
US8533712B2 (en) | 2013-09-10 |
CN103154891A (zh) | 2013-06-12 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN103154891B (zh) | 虚拟机阶段检测 | |
US10334031B2 (en) | Load balancing based on impending garbage collection in execution environment | |
EP4086767B1 (en) | Methods and apparatus to manage workload memory allocation | |
US10684832B2 (en) | Code placement using a dynamic call graph | |
CN102722432B (zh) | 追踪内存访问的方法和装置 | |
US7987452B2 (en) | Profile-driven lock handling | |
JP5147728B2 (ja) | 質的に注釈を付けられた注釈付きコード | |
US10963267B2 (en) | Bootstrapping profile-guided compilation and verification | |
US20090235247A1 (en) | Apparatus and method for checking idle period of virtual machine, and computer readable recording medium for embodying the method | |
CN110362301B (zh) | 一种终端应用行为反射的处理方法 | |
US7600223B2 (en) | Abstracted managed code execution | |
EP3577567A1 (en) | Multiple stage garbage collector | |
US20070074171A1 (en) | Per thread buffering for storing profiling data | |
CN110291508A (zh) | 垃圾收集器 | |
US8700864B2 (en) | Self-disabling working set cache | |
CN115904611B (zh) | 一种Java字节码注入方法、装置、电子设备及存储介质 | |
CN106406828A (zh) | 一种修改java系统业务工具功能的方法及装置 | |
Kannan et al. | A software solution for dynamic stack management on scratch pad memory | |
US20070022268A1 (en) | Add/remove memory pressure per object | |
US7549045B2 (en) | Delegate registration in a managed code execution environment | |
WO2020248512A1 (zh) | 一种构造终端应用行为的运行时模型的方法 | |
US20060101439A1 (en) | Memory management in a managed code execution environment | |
Wang | Thin serverless functions with graalvm native image | |
CN100549958C (zh) | 一种类文件装载方法和系统 | |
Higuera-Toledano et al. | Analyzing the performance of memory management in RTSJ |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
C06 | Publication | ||
PB01 | Publication | ||
C10 | Entry into substantive examination | ||
SE01 | Entry into force of request for substantive examination | ||
C14 | Grant of patent or utility model | ||
GR01 | Patent grant | ||
CF01 | Termination of patent right due to non-payment of annual fee |
Granted publication date: 20160323 Termination date: 20200818 |
|
CF01 | Termination of patent right due to non-payment of annual fee |