CN103870315B - 一种jvm能耗控制方法及装置 - Google Patents
一种jvm能耗控制方法及装置 Download PDFInfo
- Publication number
- CN103870315B CN103870315B CN201410117546.5A CN201410117546A CN103870315B CN 103870315 B CN103870315 B CN 103870315B CN 201410117546 A CN201410117546 A CN 201410117546A CN 103870315 B CN103870315 B CN 103870315B
- Authority
- CN
- China
- Prior art keywords
- jvm
- memory
- internal memory
- virtualization
- internal
- 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
Links
- 238000000034 method Methods 0.000 title claims abstract description 46
- 230000015654 memory Effects 0.000 claims abstract description 356
- 239000010813 municipal solid waste Substances 0.000 claims abstract description 59
- 238000005265 energy consumption Methods 0.000 claims abstract description 43
- 238000012544 monitoring process Methods 0.000 claims abstract description 33
- 230000000284 resting effect Effects 0.000 claims abstract description 15
- 230000008859 change Effects 0.000 claims abstract description 11
- 238000013507 mapping Methods 0.000 claims description 61
- 238000012545 processing Methods 0.000 claims description 20
- 230000005059 dormancy Effects 0.000 claims description 11
- 239000002245 particle Substances 0.000 claims description 11
- 239000002699 waste material Substances 0.000 claims description 11
- 238000003860 storage Methods 0.000 claims description 9
- 238000010304 firing Methods 0.000 claims description 3
- 230000008569 process Effects 0.000 claims description 3
- 238000000151 deposition Methods 0.000 claims description 2
- 230000007246 mechanism Effects 0.000 abstract description 6
- 230000005611 electricity Effects 0.000 description 10
- 238000005516 engineering process Methods 0.000 description 5
- 230000009467 reduction Effects 0.000 description 5
- 238000009826 distribution Methods 0.000 description 4
- 238000005457 optimization Methods 0.000 description 3
- 238000007796 conventional method Methods 0.000 description 2
- 238000012986 modification Methods 0.000 description 2
- 230000004048 modification Effects 0.000 description 2
- 238000011160 research Methods 0.000 description 2
- 238000004378 air conditioning Methods 0.000 description 1
- 238000013459 approach Methods 0.000 description 1
- 238000004364 calculation method Methods 0.000 description 1
- 238000004140 cleaning Methods 0.000 description 1
- 238000004891 communication Methods 0.000 description 1
- 238000013461 design Methods 0.000 description 1
- 230000007613 environmental effect Effects 0.000 description 1
- 230000002070 germicidal effect Effects 0.000 description 1
- 238000005286 illumination Methods 0.000 description 1
- 230000010365 information processing Effects 0.000 description 1
- 230000006641 stabilisation Effects 0.000 description 1
- 238000011105 stabilization Methods 0.000 description 1
- 239000011800 void material Substances 0.000 description 1
Classifications
-
- Y—GENERAL TAGGING OF NEW TECHNOLOGICAL DEVELOPMENTS; GENERAL TAGGING OF CROSS-SECTIONAL TECHNOLOGIES SPANNING OVER SEVERAL SECTIONS OF THE IPC; TECHNICAL SUBJECTS COVERED BY FORMER USPC CROSS-REFERENCE ART COLLECTIONS [XRACs] AND DIGESTS
- Y02—TECHNOLOGIES OR APPLICATIONS FOR MITIGATION OR ADAPTATION AGAINST CLIMATE CHANGE
- Y02D—CLIMATE CHANGE MITIGATION TECHNOLOGIES IN INFORMATION AND COMMUNICATION TECHNOLOGIES [ICT], I.E. INFORMATION AND COMMUNICATION TECHNOLOGIES AIMING AT THE REDUCTION OF THEIR OWN ENERGY USE
- Y02D10/00—Energy efficient computing, e.g. low power processors, power management or thermal management
Landscapes
- Memory System (AREA)
Abstract
本发明公开了一种JVM能耗控制方法及装置,包括监控JVM中的内存垃圾回收情况,以获取JVM的内存使用信息;在JVM内存空闲时,关闭其对应的物理内存。本发明利用利用JVM中已有的内存垃圾回收机制,并根据同一物理内存设备在休眠状态和空闲状态下能耗开销的不同,在JVM内存空闲时,转换对应的物理内存状态为休眠状态,简单、高效地控制了与计算平台的能耗问题,有效降低了***能耗,从而达到了降低内存能耗的目的。
Description
技术领域
本发明涉及计算机信息处理技术,尤指一种云计算平台中的Java虚拟机(JVM,Java Virtual Machine)能耗控制方法及装置。
背景技术
云计算作为一种新型的计算方式,以其高可扩展性和高可用性等优点迅速成为学术界和产业界的研究热点。随着云计算的迅速发展,数据中心的数量和规模也迅猛增长,能耗问题也越显突出。从2005年到2010年,全球的数据中心增加了约56%。据估计,一个拥有50000个计算节点的数据中心每年耗电量超过1亿千瓦时。高能耗已成为云计算***的一个主要问题,且随着近年来云计算规模的日益扩大,其能耗开销也愈加严重。云计算平台中的能耗管理已成为最具挑战性的研究课题之一。
根据云平台运营统计数据,电能消耗主要分布在以下三个方面:IT主设备如Java虚拟机用电约占45%-55%;机房环境用电主要包括机房照明、空调制冷和制热等,其中空调用电超过了总用电量的约40%以上;电源***用电接近总用电量的10%。目前,在很多为实现节能减排目标的研究中,采取的运营措施重点放在了机房环境用电和电源***用电两方面,对于IT主设备用电缺乏有效控制手段。而根据经验数据,降低一个单位IT主设备的能耗,相当于降低2~3个单位环境***的能耗,因此,控制IT主设备用电才是降低整体能耗指标的关键所在。
目前,针对云计算平台的能耗问题,国内外提出了多种方法,大致包括:
一种是动态电压调整(DVS,Dynamic Voltage Scaling)方法。DVS技术主要针对处理器等电压/频率可调节的IT设备。在完成同样任务的情况下,IT设备稳定在低频率上时能耗会较低。如果能以较低处理器频率满足任务的性能要求,则可以降低***能耗。DVS方法的关键是要正确预测工作负载对IT设备的需求,并合理分配配额,而这很难实现。
另一种是动态电源管理技术。云计算***中许多部件,如磁盘驱动器、通讯网卡、内存等具有多种功耗模式,这类部件也称为功率可管理部件(PMC,Power ManageableComponent)。实验观察发现,计算机***的许多部件大部分时间均处于空闲状态。一般地,PMC休眠模式的功耗比运行模式低很多,***可通过将空闲PMC设置为低功耗休眠模式,以降低PMC空闲时间的功耗。这种方法的关键问题是要解决如何知道***部件何时处于空闲状态,即要设计额外的内存监控机制,增加了***的复杂度。
还有一种是资源调度算法。云计算平台将各种计算资源、存储资源和网络资源整合在一起,形成资源池。不同资源的能耗通常都不相同,不好的资源调度方式会使得能用较低能耗资源就可以执行的任务调用了高能耗资源,这是形成云计算***高能耗的原因之一。因此,通过对资源的合理分配及调度,可以降低资源的能耗,但是,由于资源种类多、规模大,在任务与资源之间往往是多对多的关系,因此,给资源的调度带来了一定的难度。目前还没有提出好的资源调度解决方案。
发明内容
为了解决上述技术问题,本发明提供了一种JVM能耗控制方法及装置,能够简单、高效地控制云计算平台的能耗问题,有效地降低***能耗。
为了达到本发明目的,本发明提供了一种JVM Java虚拟机能耗控制方法,包括:
监控JVM中的内存垃圾回收情况,以获取JVM的内存使用信息;
在JVM内存空闲时,关闭其对应的物理内存。
对于所述JVM所在JVM集群中的各JVM,该方法之前还包括:
***初始化,关闭暂不用的物理内存;
初始化用于存储JVM内存与虚拟化内存之间的映射关系的虚拟化内存映射表、用于存储虚拟化内存与物理内存之间的映射关系的物理内存映射表;获取所有JVM的虚拟机ID;
设置内存监控时间间隔T,以及老年区内存空闲允许阈值V。
所述获取JVM中的内存使用信息包括:
按照预先设置的时间间隔T,监控所述JVM中的内存垃圾回收情况,以获取所述JVM集群中所有JVM的虚拟机ID对应的JVM内存使用信息;
所述JVM内存使用信息至少包括垃圾回收的类型及时间、老年代内存已使用比例、老年代内存剩余大小、垃圾碎片比率及其它相关信息。
所述确定JVM是否空闲包括:
将所述JVM集群中所有虚拟机ID放入队列Q,将队列Q中队首元素的值赋给变量v,在判断出变量v对应的JVM未进行次要垃圾回收minor GC且变量v对应的JVM已进行全局垃圾回收Full GC,则确定JVM内存有空闲;
该方法还包括:更新所述物理内存映射表。
关闭所述JVM空闲内存对应的物理内存之前,还包括:移动内存垃圾碎片,通过移动虚拟化内存关闭物理内存块,并更新所述虚拟化内存映射表。
如果判断出所述变量v对应的JVM已进行minor GC,且有对象从新生代进入老年代,则获取老年代内存已使用比例r,老年代的当前剩余空间大小S;
该方法还包括:在老年代当前剩余空间大小小于预先设置的老年区内存空闲允许阈值时,将处于休眠状态物理内存块的状态转换为启用状态。
所述将处于休眠状态物理内存块转换为启用状态之前,该方法还包括:移动虚拟化内存,并更新所述虚拟化内存映射表。
在判断出变量v对应的JVM已进行minor GC,但是没有对象从新生代进入老年代时;或者,在判断出老年代当前剩余空间大小不小于预先设置的老年区内存空闲允许阈值时;或者,在判断出变量v对应的JVM已进行minorGC,但是变量v对应的JVM未进行Full GC时;或者,在老年代当前剩余空间大小小于预先设置的老年区内存空闲允许阈值的情况下,所述更新虚拟化内存映射表后;或者,所述更新物理内存映射表后;或者,在判断出变量v对应的JVM未进行minor GC且变量v对应的JVM已进行Full GC的情况下,没有物理内存块可关闭时;该方法还包括:
判断对所述JVM集群中的JVM是否轮询完成,如果没有,继续对所述JVM集群中的下一个JVM进行监控,直至所述JVM集群中的JVM轮询完成。
本发明还提供了一种JVM能耗控制装置,至少包括内存垃圾监控单元、虚拟化内存管理单元,以及处理单元,其中,
内存垃圾监控单元,用于监控JVM集群中JVM的内存垃圾回收情况,并将JVM内存使用信息发送给虚拟化内存管理单元;
虚拟化内存管理单元,用于根据接收到的JVM内存使用信息,在自身可以处理时,移动虚拟化内存,并更新虚拟化内存映射表;在自身不能处理时,通知处理单元;根据来自处理单元的反馈信息管理自身存储的虚拟化内存映射表、物理内存映射表;
处理单元,用于接收来自虚拟化内存管理单元的通知,控制物理内存的状态变化,包括休眠状态和启用状态之间的状态控制,并将处理后信息反馈给虚拟化内存管理单元。
所述内存垃圾监控单元,具体用于按照预先设置的时间间隔T,获取JVM集群中所有JVM的虚拟机ID对应的JVM内存使用情况,将所有虚拟机ID放入队列Q,将队列Q中队首元素的值赋给变量v;在判断出变量v对应的JVM已进行minor GC,且有对象从新生代进入老年代,则获取老年代内存已使用比例r,当前剩余空间大小S;在当前剩余空间大小S小于老年区内存空闲允许阈值V时,向所述虚拟化内存管理单元发送第一通知;在判断出变量v对应的JVM未进行minor GC,且变量v对应的JVM已进行全局GC,则移动内存垃圾碎片,向所述虚拟化内存管理单元发送第三通知;
所述虚拟化内存管理单元,具体用于接收到来自内存垃圾监控单元的第一通知,判断出自身可以通过虚拟化内存解决,移动虚拟化内存,并更新虚拟化内存映射表;如果判断出自身不能通过虚拟化内存解决,则向所述处理单元发送第二通知;接收到来自内存垃圾监控单元的第三通知,判断出自身可以通过移动虚拟化内存关闭物理内存块,则移动虚拟化内存并更新虚拟化内存映射表;判断出有物理内存块可关闭,向所述处理单元发送第四通知;
所述处理单元,具体用于接收到来自虚拟化内存管理单元的第二通知,将处于休眠状态的物理内存块的状态转换为启用状态,并通知所述虚拟化内存管理单元更新物理内存映射表;接收到来自所述虚拟化内存管理单元的第四通知,将空闲的内存块从启用状态转换为休眠状态,并通知所述虚拟化内存管理单元更新物理内存映射表。
与现有技术相比,本发明只需通过监控JVM中的内存垃圾回收情况,以获取JVM的内存使用信息;在JVM内存空闲时,关闭其对应的物理内存。本发明利用JVM中已有的内存垃圾回收机制,并根据同一物理内存设备在休眠状态和空闲状态下能耗开销的不同,在JVM内存空闲时,转换对应的物理内存状态为休眠状态,简单、高效地控制了与计算平台的能耗问题,有效降低了***能耗,从而达到了降低内存能耗的目的。
本发明的其它特征和优点将在随后的说明书中阐述,并且,部分地从说明书中变得显而易见,或者通过实施本发明而了解。本发明的目的和其他优点可通过在说明书、权利要求书以及附图中所特别指出的结构来实现和获得。
附图说明
附图用来提供对本发明技术方案的进一步理解,并且构成说明书的一部分,与本申请的实施例一起用于解释本发明的技术方案,并不构成对本发明技术方案的限制。
图1为本发明JVM能耗控制装置的组成结构示意图;
图2为本发明JVM能耗控制方法的流程图;
图3为本发明JVM能耗控制方法的实施例的流程图。
具体实施方式
为使本发明的目的、技术方案和优点更加清楚明白,下文中将结合附图对本发明的实施例进行详细说明。需要说明的是,在不冲突的情况下,本申请中的实施例及实施例中的特征可以相互任意组合。
在附图的流程图示出的步骤可以在诸如一组计算机可执行指令的计算机***中执行。并且,虽然在流程图中示出了逻辑顺序,但是在某些情况下,可以以不同于此处的顺序执行所示出或描述的步骤。
对于云计算平台的能耗,有一大部分是消耗在设备上,包括CPU、内存、磁盘设备、网络设备等,而对于这些物理设备,可以有关闭、休眠、空闲、工作等状态,其中,关闭状态和休眠状态的能耗要远低于空闲状态和工作状态的能耗。而对于内存来说,将空闲内存子块的状态转换为休眠状态是降低功耗的最直接的方法。
Java虚拟机(JVM,Java Virtual Machine)的内存分为方法区、栈、堆、寄存器等,JVM在进行内存垃圾回收(GC,Garbage Collection)时,主要是针对“堆”这部分内存进行的。目前,商用JVM的垃圾收集大都采用分代收集(Generational Collection)算法。分代算法将堆分成两个或多个对象,对象按照生存期分组,每一个子堆为一“代”对象服务。垃圾收集器将从最年轻的子堆(这个子堆称为新生代)中收集这些对象,如果一个对象经历了几次垃圾收集后仍然存活,那么,这个对象就成长为生存期更高的一代,当超过预设的生存期阈值时,该对象会被转移到另外一个子堆(这个子堆称为老年代)中去。
分代垃圾回收算法的实现包括次要垃圾回收(minor GC)和全局垃圾回收(fullGC),minor GC主要回收新生代的内存垃圾,且把到达一定生存期的对象转移到老年代,minor GC进行的频率较高;而full GC则同时回收新生代和老年代的内存垃圾。
根据Java的实践应用,发明人发现,对于Java应用***,存在老年代内存中有较多的内存长时间空闲时,JVM几乎不进行全局内存垃圾回收,或者,进行全局内存垃圾回收的时间间隔较长等特点,此时,发明人认为这部分内存是可以转入休眠状态的,以降低***能耗。
图1为本发明JVM能耗控制装置的组成结构示意图,如图1所示,至少包括内存垃圾监控单元、虚拟化内存管理单元,以及处理单元,其中,
内存垃圾监控单元,用于监控JVM中的内存垃圾回收情况,并将JVM内存使用信息发送给虚拟化内存管理单元。具体地,对JVM集群中各个JVM的内存使用情况进行监控,JVM内存使用信息至少包括垃圾回收的类型及时间、老年代内存已使用比例、老年代内存剩余大小、垃圾碎片比率及其它相关信息等。
虚拟化内存管理单元,用于根据接收到的JVM内存使用信息,在自身可以处理时,移动虚拟化内存,并更新虚拟化内存映射表;在自身不能处理时,通知处理单元;根据来自处理单元的反馈信息管理自身存储的虚拟化内存映射表、物理内存映射表。其中,
虚拟化内存映射表用于存储JVM内存与虚拟化内存之间的映射关系;物理内存映射表用于存储虚拟化内存与物理内存之间的映射关系。虚拟化内存指虚拟化的内存资源。物理内存指物理内存基础资源。
处理单元,用于接收来自虚拟化内存管理单元的通知,控制物理内存的状态变化,包括休眠状态和启用状态之间的状态控制,并将处理后信息反馈给虚拟化内存管理单元。
具体地,
内存垃圾监控单元,按照预先设置的时间间隔T,获取JVM集群中所有vmid(用于标识JVM集群中不同的JVM)对应的JVM内存使用情况,将所有vmid放入队列Q,将队列Q中队首元素的值赋给变量v,在判断出变量v对应的JVM已进行了minor GC,且有对象从新生代进入老年代,则获取老年代内存已使用比例r,当前剩余空间大小S;在当前剩余空间大小S小于老年区内存空闲允许阈值V时,向虚拟化内存管理单元发送第一通知;在判断出变量v对应的JVM未进行minor GC,且变量v对应的JVM进行了全局GC,则移动内存垃圾碎片,向虚拟化内存管理单元发送第三通知;
虚拟化内存管理单元,接收到来自内存垃圾监控单元的第一通知,判断出自身可以通过虚拟化内存解决(即自身空闲的虚拟化内存,大于老年代内存空闲允许阈值V与当年剩余空间大小S之差的值),移动虚拟化内存,并更新虚拟化内存映射表;如果判断出自身不能通过虚拟化内存解决,则向处理单元发送第二通知;接收到来自内存垃圾监控单元的第三通知,判断出自身可以通过移动虚拟化内存关闭物理内存块(即判断当清理内存垃圾碎片后,空闲的这部分虚拟化内存移动后可以关闭原本对应的物理内存块),则移动虚拟化内存并更新虚拟化内存映射表;判断出有物理内存块可关闭,向处理单元发送第四通知;
处理单元,接收到来自虚拟化内存管理单元的第二通知,将处于休眠状态的物理内存块的状态转换为启用状态,并通知虚拟化内存管理单元更新物理内存映射表;接收到来自虚拟化内存管理单元的第四通知,将空闲的内存块从启用状态转换为休眠状态,并通知所述虚拟化内存管理单元更新物理内存映射表。
需要说明的是,在***初始化时,会关闭暂不用的物理内存;初始化虚拟化内存映射表、物理内存映射表;获取所有JVM的虚拟机ID(vmid);设置内存监控时间间隔T,以及老年区内存空闲允许阈值V。具体实现属于本领域技术人员的惯用技术手段,也不用于限定本发明的保护范围,这里不再赘述。
本发明装置利用JVM中已有的内存垃圾回收机制,并根据同一物理内存设备在休眠状态和空闲状态下能耗开销的不同,在JVM内存空闲时,转换对应的物理内存状态为休眠状态,简单、高效地控制了与计算平台的能耗问题,有效降低了***能耗,从而达到了降低内存能耗的目的。
图2为本发明JVM能耗控制方法的流程图,如图2所示,包括:
步骤200:监控JVM中的内存垃圾回收情况,以获取JVM的内存使用信息。
本步骤之前还包括:***初始化,关闭暂不用的物理内存;初始化虚拟化内存映射表、物理内存映射表;获取所有JVM的虚拟机ID(vmid);设置内存监控时间间隔T,以及老年区内存空闲允许阈值V。其中,虚拟化内存映射表用于存储JVM内存与虚拟化内存之间的映射关系;物理内存映射表用于存储虚拟化内存与物理内存之间的映射关系。虚拟化内存指虚拟化的内存资源。物理内存指物理内存基础资源。
本步骤具体包括:按照预先设置的时间间隔T,监控JVM中的内存垃圾回收情况,以获取JVM集群中所有vmid对应的JVM内存使用信息,至少包括垃圾回收的类型及时间、老年代内存已使用比例、老年代内存剩余大小、垃圾碎片比率及其它相关信息等。
步骤201:在JVM内存空闲时,关闭其对应的物理内存。
本步骤中确定JVM是否空闲包括:
将所有vmid放入队列Q,将队列Q中队首元素的值赋给变量v,在判断出变量v对应的JVM未进行minor GC且变量v对应的JVM已进行了全局GC,则确定JVM内存有空闲,此时关闭该JVM空闲内存对应的物理内存,并更新物理内存映射表。其中,如何关闭JVM空闲内存对应的物理内存,是本领域技术人员的惯用技术手段,具体实现并不用于限定本发明的保护范围,这里不再赘述。
在关闭JVM空闲内存对应的物理内存之前,本步骤还包括:移动内存垃圾碎片,通过移动虚拟化内存关闭物理内存块,并更新虚拟化内存映射表。具体实现属于本领域技术人员的常用技术手段,这里不再赘述。
进一步地,如果判断出变量v对应的JVM进行了minor GC,且有对象从新生代进入老年代,则获取老年代内存已使用比例r,老年代的当前剩余空间大小S;本发明方法还包括:在老年代当前剩余空间大小小于预先设置的老年区内存空闲允许阈值时,将处于休眠状态物理内存块的状态转换为启用状态。其中,在将处于休眠状态物理内存块转换为启用状态之前,该方法还包括:移动虚拟化内存,并更新虚拟化内存映射表。
本发明方法还包括:在判断出变量v对应的JVM进行了minor GC,但是没有对象从新生代进入老年代时;或者,在判断出老年代当前剩余空间大小不小于预先设置的老年区内存空闲允许阈值时;或者,在判断出变量v对应的JVM进行了minor GC,但是变量v对应的JVM未进行Full GC时;或者,在老年代当前剩余空间大小小于预先设置的老年区内存空闲允许阈值的情况下,更新虚拟化内存映射表后;或者,更新物理内存映射表后;或者,在判断出变量v对应的JVM未进行minor GC且变量v对应的JVM已进行了Full GC的情况下,没有物理内存块可关闭时,本发明方法还包括:判断对JVM集群中的JVM是否轮询完成,如果没有返回步骤200继续对下一个JVM进行监控,直至JVM集群中的JVM轮询完成。
本发明方法利用JVM中已有的内存垃圾回收机制,并根据同一物理内存设备在休眠状态和空闲状态下能耗开销的不同,在JVM内存空闲时,转换对应的物理内存状态为休眠状态,简单、高效地控制了与计算平台的能耗问题,有效降低了***能耗,从而达到了降低内存能耗的目的。
下面结合实施例对本发明方法进行详细描述。
图3为本发明JVM能耗控制方法的实施例的流程图,如图3所示,包括:
步骤300:***初始化,具体包括:初始化虚拟化内存映射表、物理内存映射表;获取JVM集群中所有JVM的虚拟机ID(vmid)设置内存监控时间间隔T,及老年区内存空闲允许阈值V。
步骤301:虚拟化内存管理单元根据JVM的分配,优化虚拟化内存映射表、物理内存映射表;处理单元关闭暂不用的物理内存。
其中,优化虚拟化内存映射表、物理内存映射表具体包括:根据JVM分配情况,发现哪些JVM中有空闲JVM内存,移动这部分JVM内存对应的虚拟化内存,以优化虚拟化内存映射表;同时,在空闲内存对应的虚拟化内存移动后,调整该虚拟化内存对应的物理内存块,以优化物理内存映射表。。
步骤302:内存垃圾监控单元按照预先设置的时间间隔T,获取所有vmid对应的JVM内存使用情况,并将所有vmid放入队列Q。
步骤303:***移除队列Q中队首元素并赋值给变量v。
步骤304:内存垃圾监控单元判断变量v对应的JVM是否进行了minorGC,如果已进行,则进入步骤305;否则进入步骤313。
步骤305:内存垃圾监控单元判断是否有对象从新生代进入老年代,如果有,则进行步骤306;否则进入步骤24。
步骤306:内存垃圾监控单元获取老年代内存已使用比例r,以及当前剩余空间大小S。
步骤307:***管理模块判断是否老年代的当前剩余空间大小S是否小于预先设置的老年区内存空闲允许阈值V,若小于,则进入步骤308;如果不小于则进行步骤24。
步骤308:虚拟化内存管理单元判断是否可以通过移动虚拟化内存解决,如果可以,则进入步骤309;否则进入步骤311。
步骤309:虚拟化内存管理单元移动虚拟化内存。
步骤310:更新虚拟化内存映射表。之后转入步骤24。
步骤311:处理单元将一个或多个休眠状态物理内存块转为启用状态。
步骤312:更新物理内存映射表。之后转入步骤24。
步骤313:内存垃圾监控单元判断变量v对应的JVM是否进行了全局GC,若以已进行,则进入步骤314;否则,转到步骤24。
步骤314:JVM的内存垃圾回收器进行内存垃圾碎片移动
步骤315:虚拟化内存管理单元判断是否可以通过移动虚拟化内存来关闭物理内存块,如果可以,则进入步骤316;否则返回步骤312。
步骤316:虚拟化内存管理单元移动虚拟化内存。
步骤317:修改虚拟化内存映射表。
步骤318:虚拟化内存管理单元判断是否有物理内存块可关闭,如果有,则进入步骤319;否则转到步骤24。
步骤319:处理单元将空闲的内存块从启用状态转为休眠状态。之后返回步骤312。
步骤320:***判断队列Q是否为空,如果为空,则进入步骤321;否则返回步骤303。
步骤321:判断是否结束,若内存优化完毕,则结束,否则返回步骤302。也就说,在对JVM集群中的所有JVM轮询完成后结束。
本发明方法利用JVM中已有的内存垃圾回收机制,并根据同一物理内存设备在休眠状态和空闲状态下能耗开销的不同,在JVM内存空闲时,转换对应的物理内存状态为休眠状态,简单、高效地控制了与计算平台的能耗问题,有效降低了***能耗,从而达到了降低内存能耗的目的。
虽然本发明所揭露的实施方式如上,但所述的内容仅为便于理解本发明而采用的实施方式,并非用以限定本发明。任何本发明所属领域内的技术人员,在不脱离本发明所揭露的精神和范围的前提下,可以在实施的形式及细节上进行任何的修改与变化,但本发明的专利保护范围,仍须以所附的权利要求书所界定的范围为准。
Claims (10)
1.一种JVM Java虚拟机能耗控制方法,其特征在于,包括:
监控JVM中的内存垃圾回收情况,以获取JVM的内存使用信息;
在JVM内存空闲时,关闭其对应的物理内存;
确定JVM是否空闲包括:
将所述JVM所在JVM集群中所有虚拟机ID放入队列Q,将队列Q中队首元素的值赋给变量v,在判断出变量v对应的JVM未进行次要垃圾回收minor GC且变量v对应的JVM已进行全局垃圾回收Full GC,则确定JVM内存有空闲。
2.根据权利要求1所述的JVM能耗控制方法,其特征在于,对于所述JVM所在JVM集群中的各JVM,该方法之前还包括:
***初始化,关闭暂不用的物理内存;
初始化用于存储JVM内存与虚拟化内存之间的映射关系的虚拟化内存映射表、用于存储虚拟化内存与物理内存之间的映射关系的物理内存映射表;获取所有JVM的虚拟机ID;
设置内存监控时间间隔T,以及老年区内存空闲允许阈值V。
3.根据权利要求2所述的JVM能耗控制方法,其特征在于,所述获取JVM中的内存使用信息包括:
按照预先设置的时间间隔T,监控所述JVM中的内存垃圾回收情况,以获取所述JVM集群中所有JVM的虚拟机ID对应的JVM内存使用信息;
所述JVM内存使用信息至少包括垃圾回收的类型及时间、老年代内存已使用比例、老年代内存剩余大小、垃圾碎片比率及其它相关信息。
4.根据权利要求3所述的JVM能耗控制方法,其特征在于,
该方法还包括:更新所述物理内存映射表。
5.根据权利要求4所述的JVM能耗控制方法,其特征在于,关闭所述JVM空闲内存对应的物理内存之前,还包括:移动内存垃圾碎片,通过移动虚拟化内存关闭物理内存块,并更新所述虚拟化内存映射表。
6.根据权利要求4所述的JVM能耗控制方法,其特征在于,如果判断出所述变量v对应的JVM已进行minor GC,且有对象从新生代进入老年代,则获取老年代内存已使用比例r,老年代的当前剩余空间大小S;
该方法还包括:在老年代当前剩余空间大小小于预先设置的老年区内存空闲允许阈值时,将处于休眠状态物理内存块的状态转换为启用状态。
7.根据权利要求6所述的JVM能耗控制方法,其特征在于,所述将处于休眠状态物理内存块转换为启用状态之前,该方法还包括:移动虚拟化内存,并更新所述虚拟化内存映射表。
8.根据权利要求4~7任一项所述的JVM能耗控制方法,其特征在于,在判断出变量v对应的JVM已进行minor GC,但是没有对象从新生代进入老年代时;或者,在判断出老年代当前剩余空间大小不小于预先设置的老年区内存空闲允许阈值时;或者,在判断出变量v对应的JVM已进行minor GC,但是变量v对应的JVM未进行Full GC时;或者,在老年代当前剩余空间大小小于预先设置的老年区内存空闲允许阈值的情况下,所述更新虚拟化内存映射表后;或者,所述更新物理内存映射表后;或者,在判断出变量v对应的JVM未进行minor GC且变量v对应的JVM已进行Full GC的情况下,没有物理内存块可关闭时;该方法还包括:
判断对所述JVM集群中的JVM是否轮询完成,如果没有,继续对所述JVM集群中的下一个JVM进行监控,直至所述JVM集群中的JVM轮询完成。
9.一种JVM能耗控制装置,其特征在于,至少包括内存垃圾监控单元、虚拟化内存管理单元,以及处理单元,其中,
内存垃圾监控单元,用于监控JVM集群中JVM的内存垃圾回收情况,并将JVM内存使用信息发送给虚拟化内存管理单元;
虚拟化内存管理单元,用于根据接收到的JVM内存使用信息,在自身可以处理时,移动虚拟化内存,并更新虚拟化内存映射表;在自身不能处理时,通知处理单元;根据来自处理单元的反馈信息管理自身存储的虚拟化内存映射表、物理内存映射表;
处理单元,用于接收来自虚拟化内存管理单元的通知,控制物理内存的状态变化,包括休眠状态和启用状态之间的状态控制,并将处理后信息反馈给虚拟化内存管理单元。
10.根据权利要求9所述的JVM能耗控制装置,其特征在于,
所述内存垃圾监控单元,具体用于按照预先设置的时间间隔T,获取JVM集群中所有JVM的虚拟机ID对应的JVM内存使用情况,将所有虚拟机ID放入队列Q,将队列Q中队首元素的值赋给变量v;在判断出变量v对应的JVM已进行minor GC,且有对象从新生代进入老年代,则获取老年代内存已使用比例r,当前剩余空间大小S;在当前剩余空间大小S小于老年区内存空闲允许阈值V时,向所述虚拟化内存管理单元发送第一通知;在判断出变量v对应的JVM未进行minor GC,且变量v对应的JVM已进行全局GC,则移动内存垃圾碎片,向所述虚拟化内存管理单元发送第三通知;
所述虚拟化内存管理单元,具体用于接收到来自内存垃圾监控单元的第一通知,判断出自身可以通过虚拟化内存解决,移动虚拟化内存,并更新虚拟化内存映射表;如果判断出自身不能通过虚拟化内存解决,则向所述处理单元发送第二通知;接收到来自内存垃圾监控单元的第三通知,判断出自身可以通过移动虚拟化内存关闭物理内存块,则移动虚拟化内存并更新虚拟化内存映射表;判断出有物理内存块可关闭,向所述处理单元发送第四通知;
所述处理单元,具体用于接收到来自虚拟化内存管理单元的第二通知,将处于休眠状态的物理内存块的状态转换为启用状态,并通知所述虚拟化内存管理单元更新物理内存映射表;接收到来自所述虚拟化内存管理单元的第四通知,将空闲的内存块从启用状态转换为休眠状态,并通知所述虚拟化内存管理单元更新物理内存映射表。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201410117546.5A CN103870315B (zh) | 2014-03-26 | 2014-03-26 | 一种jvm能耗控制方法及装置 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201410117546.5A CN103870315B (zh) | 2014-03-26 | 2014-03-26 | 一种jvm能耗控制方法及装置 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN103870315A CN103870315A (zh) | 2014-06-18 |
CN103870315B true CN103870315B (zh) | 2017-05-31 |
Family
ID=50908882
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201410117546.5A Active CN103870315B (zh) | 2014-03-26 | 2014-03-26 | 一种jvm能耗控制方法及装置 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN103870315B (zh) |
Families Citing this family (7)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN107220077B (zh) * | 2016-10-20 | 2019-03-19 | 华为技术有限公司 | 应用启动的管控方法和管控设备 |
US10628306B2 (en) * | 2017-02-01 | 2020-04-21 | Microsoft Technology Licensing, Llc | Garbage collector |
CN107766123B (zh) * | 2017-10-11 | 2020-10-27 | 苏州浪潮智能科技有限公司 | 一种jvm调优方法 |
CN109658541B (zh) * | 2017-10-11 | 2021-11-12 | 株洲中车时代电气股份有限公司 | 一种机车空闲能耗监控方法及装置 |
CN108255582B (zh) * | 2018-01-16 | 2021-02-02 | 携程旅游信息技术(上海)有限公司 | java虚拟机垃圾回收的方法、***、设备及存储介质 |
CN113778740B (zh) * | 2021-11-10 | 2022-08-02 | 中航金网(北京)电子商务有限公司 | 一种基于垃圾回收日志的异常处理方法及装置 |
CN115080192A (zh) * | 2022-08-23 | 2022-09-20 | 中建电子商务有限责任公司 | 一种jvm性能监控方法、***、设备及介质 |
Citations (5)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN101281458A (zh) * | 2008-05-14 | 2008-10-08 | 华为技术有限公司 | 一种垃圾回收的装置、***及方法 |
CN101859279A (zh) * | 2010-05-21 | 2010-10-13 | 北京星网锐捷网络技术有限公司 | 一种内存分配、释放方法及装置 |
CN103514102A (zh) * | 2013-10-25 | 2014-01-15 | 中国联合网络通信集团有限公司 | 一种Java虚拟机实现内存垃圾回收的方法及装置 |
CN103577335A (zh) * | 2013-10-23 | 2014-02-12 | 中国科学院计算技术研究所 | 一种内存垃圾回收***及方法 |
CN103593298A (zh) * | 2013-10-16 | 2014-02-19 | 北京航空航天大学 | 内存回收方法和装置 |
Family Cites Families (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN102262591B (zh) * | 2010-05-31 | 2014-03-19 | 国际商业机器公司 | 用于内存复制***进行垃圾回收的方法和*** |
-
2014
- 2014-03-26 CN CN201410117546.5A patent/CN103870315B/zh active Active
Patent Citations (5)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN101281458A (zh) * | 2008-05-14 | 2008-10-08 | 华为技术有限公司 | 一种垃圾回收的装置、***及方法 |
CN101859279A (zh) * | 2010-05-21 | 2010-10-13 | 北京星网锐捷网络技术有限公司 | 一种内存分配、释放方法及装置 |
CN103593298A (zh) * | 2013-10-16 | 2014-02-19 | 北京航空航天大学 | 内存回收方法和装置 |
CN103577335A (zh) * | 2013-10-23 | 2014-02-12 | 中国科学院计算技术研究所 | 一种内存垃圾回收***及方法 |
CN103514102A (zh) * | 2013-10-25 | 2014-01-15 | 中国联合网络通信集团有限公司 | 一种Java虚拟机实现内存垃圾回收的方法及装置 |
Also Published As
Publication number | Publication date |
---|---|
CN103870315A (zh) | 2014-06-18 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN103870315B (zh) | 一种jvm能耗控制方法及装置 | |
CN101247421B (zh) | 分布式架构下nat地址池的自适应分配方法和*** | |
CN106059835B (zh) | 一种低能耗计算机集群节点的高可靠性控制方法 | |
CN100407104C (zh) | 操作***协作下的嵌入式设备电源管理方法及*** | |
CN102158513A (zh) | 一种服务器集群节能的方法、装置和服务器集群 | |
CN103684916A (zh) | 一种云计算下智能监控分析方法及*** | |
CN103902379A (zh) | 一种任务调度方法、装置及服务器集群 | |
CN102385554A (zh) | 重复数据删除***的优化方法 | |
CN102426475A (zh) | 桌面虚拟化环境下的节能方法、节能管理服务器及*** | |
CN103677957A (zh) | 云数据中心基于多资源的高能效虚拟机放置方法 | |
CN111124531A (zh) | 一种车辆雾计算中基于能耗和延迟权衡的计算任务动态卸载方法 | |
CN102136993A (zh) | 一种数据迁移的方法、装置和*** | |
CN103996296A (zh) | 一种基于云计算的违章拍照自动识别方法 | |
CN101232195A (zh) | 基于太阳能的工业无线传感器网络***及其休眠唤醒方法 | |
Jurenoks et al. | Sensor network information flow control method with static coordinator within internet of things in smart house environment | |
CN202870163U (zh) | 空调耗电处理装置及*** | |
CN101394418B (zh) | 一种基于移动代理的普适计算数据处理控制方法 | |
CN111343705B (zh) | 一种5g通信网元的智能节能方法 | |
CN109819674A (zh) | 计算机存储介质、嵌入式调度方法及*** | |
CN105684521B (zh) | 一种wifi接入点控制方法及wifi接入点 | |
CN110320813A (zh) | 基于物联网操作***的智能家电控制方法及装置 | |
JP6015660B2 (ja) | データ配置システム、分散アクセスノード、データ配置方法およびプログラム | |
CN106912088B (zh) | 一种小基站休眠的控制方法及装置 | |
Aboalnaser | Energy–aware task allocation algorithm based on transitive cluster-head selection for iot networks | |
CN101355440B (zh) | 一种集群管理中拓扑收集的方法 |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
C06 | Publication | ||
PB01 | Publication | ||
C10 | Entry into substantive examination | ||
SE01 | Entry into force of request for substantive examination | ||
GR01 | Patent grant | ||
GR01 | Patent grant |