内存配额的调整方法和限制方法及其装置的制作方法

文档序号:6385294阅读:383来源:国知局
专利名称:内存配额的调整方法和限制方法及其装置的制作方法
技术领域
本发明涉及内存配额的管理,尤其是一种内存配额的调整方法和控制方法及其装置。
背景技术
在现有技术中,在服务器上可运行多个虚拟机,同时每个虚拟机又可能会有多个进程的启动,如不加管理和控制,会导致某个虚拟机中的某个进程内存占用过大,而影响整个虚拟机的性能。目前已经为各个虚拟机或者各个进程分配的内存配额基本固定不变,当某个进程的内存配额分配过大时会造成浪费,而某个进程的内存配额过小时又造成频繁报错。因此,动态、按需的内存配额管理是提高服务器性能的关键。需要一种技术对内存配额进行动态调整。当某个虚拟机占用的内存配额已经较大时,需要有一种技术能够限制该虚拟机继续启动更多的线程造成内存配额的负荷过大。Page Fault是进程的缺页错误数,是每个进程的属性,可通过系统信息直接获得的,该值时刻在更新变化,体现不同时刻进程的实体内存需求情况。通过实时观察统计PageFault,能够动态获取内存需求变化,相应进行内存配额的调整和限制。

发明内容
PageFault Rate为单位时间(周期)内的PageFault数,该值可反应出某一进程在某个时段的实体内存使用情况,在本项目中该值为实现核心算法的重要参考依据。作为内存配额管理的服务端,应合理的分配管理各个虚拟机中的内存,平衡虚拟机的性能,以最佳性能运行。由于每个进程的Page Fault Rate可以代表该进程实体内存的使用状况,Page Fault Rate太低,代表实体内存有很多的富余,Page Fault Rate太高,则代表实体内存已经不够用了。故此,本发明利用PageFaultRate值,及时统计每个进程的PageFaultRate值和整个虚拟机的PageFaultRate平均值,并根据需要进行实时调整,成为实现当需要内存管理或判断是否可允许启动新进程时的功能的重要参考依据。为解决上述问题,本发明提出了以下技术方案:一种内存配额的调整方法,包括以下步骤:步骤A,更新内存信息,获取每个进程当前的PageFault值,根据一段时间内的PageFault值,计算单位时间内的PageFault以获得每个进程的PageFaultRate ;步骤B,根据内存信息判断是否需要调整进程的内存配额;如不需要则退出;如需要,则进入步骤C ;步骤C,查找当前PageFaultRate最小的进程;对该进程的内存配额按照削减步长进行削减。如上所述的方法,还包括,步骤A运行之前设置步骤A启动条件,包括:设置定时器,按周期定时启动步骤A ;或者,设置触发条件,满足条件时立即启动步骤A。
如上所述的方法,步骤A中更新内存信息还包括,统计每个虚拟机中的内存剩余量,针对每个虚拟机,将单个虚拟机内包括的各个进程的PageFaultRate取平均值,分别获得每个虚拟机的平均PageFaultRate。如上所述的方法,步骤B中根据内存信息判断是否需要调整进程的内存配额包括根据以下信息至少一种进行判断:每个进程的PageFaultRate,每个虚拟机中的内存剩余量,每个虚拟机的平均PageFaultRate。如上所述的方法,所述步骤C之后还包括,步骤D,查找当前PageFaultRate最大的进程;对该进程的内存配额按照增加步长进行增加。一种内存配额的限制方法,包括以下步骤:步骤J,更新内存信息,获取每个进程当前的PageFault值,根据一段时间内的PageFault值,计算单位时间内的PageFault以获得每个进程的PageFaultRate ;步骤K,当虚拟机发出开启新进程请求时,根据内存信息判断是否允许开启新进程;如不允许则通知虚拟机不允许开启,并且退出,否则进入步骤L ;步骤L,通知虚拟机允许开启。如上所述的方法,步骤J中更新内存信息还包括,统计每个虚拟机中的内存剩余量,针对每个虚拟机,将单个虚拟机内包括的各个进程的PageFaultRate取平均值,分别获得每个虚拟机的平均PageFaultRate。如上所述的方法,步骤K中根据内存信息判断是否允许开启新进程包括根据以下信息至少一种进行判断:该虚拟机中的内存剩余量,该虚拟机的平均PageFaultRate,该虚拟机已经启动的进程数。本发明还提出了:一种内存配额的调整装置,包括以下模块:模块A,用于更新内存信息,获取每个进程当前的PageFault值,根据一段时间内的PageFault值,计算单位时间内的PageFault以获得每个进程的PageFaultRate ;模块B,用于根据内存信息判断是否需要调整进程的内存配额;如不需要则退出处理;如需要,则转由模块C处理;模块C,用于查找当前PageFaultRate最小的进程;对该进程的内存配额按照削减步长进行削减。如上所述的装置,进一步还可以包括:模块D,用于查找当前PageFaultRate最大的进程;对该进程的内存配额按照增加步长进行增加。一种内存配额的限制装置,包括以下模块:模块J,用于更新内存信息,获取每个进程当前的PageFault值,根据一段时间内的PageFault值,计算单位时间内的PageFault以获得每个进程的PageFaultRate ;模块K,用于当虚拟机发出开启新进程请求时,根据内存信息判断是否允许开启新进程;如不允许则通知虚拟机不允许开启,并且退出处理,否则转由模块L处理;
模块L,用于通知虚拟机允许开启。本发明实现后,可以让服务器合理科学的控制每个连接登陆上的用户虚拟机,及控制用户虚拟机上的进程数并且科学及时的调整用户虚拟机的内存使用,达到每个用户虚拟机都可以稳定的运行目的。
以下结合附图详细说明本发明的实施例,其中:

图1为本发明提出的内存配额的调整方法图2为本发明提出的内存配额的限制方法
具体实施例方式如图1所示,本发明提出的内存配额的调整方法,首先设置启动条件,优选的方法可以采用定时器,每当定时周期到达时,即执行内存配额的调整,当然也可以用条件触发的方式启动,预先设置启动的条件或者条件组合,例如,内存的总剩余量、进程总数量、内存报错次数等等条件的任意组合。当满足触发条件时,则执行内存配额的调整方法。该方法包括以下步骤:步骤A,更新内存信息,从系统信息中获取每个进程当前的PageFault值,根据一段时间内的PageFault值,计算单位时间内的PageFault以获得每个进程的PageFaultRate ;步骤A中更新内存信息还包括,统计每个虚拟机中的内存剩余量,针对每个虚拟机,将单个虚拟机内包括的各个进程的PageFaultRate取平均值,分别获得每个虚拟机的平均 PageFaultRate。步骤B,根据内存信息判断是否需要调整进程的内存配额;如不需要则退出;如需要,则进入步骤C ;步骤B中根据内存信息判断是否需要调整进程的内存配额包括根据以下信息至少一种进行判断:每个进程的PageFaultRate,每个虚拟机中的内存剩余量,每个虚拟机的平均PageFaultRate。可以为上述每个信息分别设置一个阈值,当任何一个超过阈值之后即可判断为需要进行调整,当然也可以为上述信息分别设置权重,为其加权平均设置统一的阈值,以此来综合判断是否需要调整。步骤C,查找当前PageFaultRate最小的进程;对该进程的内存配额按照削减步长进行削减。削减步长可以是根据经验预先设定的百分比,例如20%,也可以是预先设定的固定值。还可以是根据内存信息判断的动态值,当内存配额紧张时,即内存信息超阈值较多时,削减步长较大,当内存配额宽松时,即内存信息超阈值较少时,削减步长较小。尽管削减最富裕的进程的内存配额之后,即已经解决了本发明的技术问题之一。但,所述步骤C之后还可以优选包括,步骤D,查找当前PageFaultRate最大的进程;对该进程的内存配额按照增加步长进行增加。即对于内存配额太小难以满足需求的进程,适当增加其内存配额。除了动态调整内存配额之外,本发明还提出了一种内存配额的限制方法,包括以下步骤:
步骤J,更新内存信息,获取每个进程当前的PageFault值,根据一段时间内的PageFault值,计算单位时间内的PageFault以获得每个进程的PageFaultRate ;所述的更新内存信息可以通过设置定时器,每当定时到达时执行,也可以设置条件触发,满足条件时执行。步骤J中更新内存信息还包括,统计每个虚拟机中的内存剩余量,针对每个虚拟机,将单个虚拟机内包括的各个进程的PageFaultRate取平均值,分别获得每个虚拟机的平均 PageFaultRate。步骤K,当虚拟机发出开启新进程请求时,根据内存信息判断是否允许开启新进程;如不允许则通知虚拟机不允许开启,并且退出,否则进入步骤L ;步骤K中根据内存信息判断是否允许开启新进程包括根据以下信息至少一种进行判断:该虚拟机中的内存剩余量,该虚拟机的平均PageFaultRate,该虚拟机已经启动的进程数。可以为上述每个信息分别设置一个阈值,当任何一个超过阈值之后即可判断为需要进行限制,当然也可以为上述信息分别设置权重,为其加权平均设置统一的阈值,以此来综合判断是否需要限制。步骤L,通知虚拟机允许开启。本发明还提出了,一种内存配额的调整装置,包括以下模块:模块A,用于更新内存信息,获取每个进程当前的PageFault值,根据一段时间内的PageFault值,计算单位时间内的PageFault以获得每个进程的PageFaultRate ;模块A的启动条件,包括:设置定时器,按周期定时启动模块A ;或者,设置触发条件,满足条件时立即启动模块A。模块A中更新内存信息还包括,统计每个虚拟机中的内存剩余量,针对每个虚拟机,将单个虚拟机内包括的各个进程的PageFaultRate取平均值,分别获得每个虚拟机的平均 PageFaultRate。模块B,用于根据内存信息判断是否需要调整进程的内存配额;如不需要则退出处理;如需要,则转由模块C处理;模块B中根据内存信息判断是否需要调整进程的内存配额包括根据以下信息至少一种进行判断:每个进程的PageFaultRate,每个虚拟机中的内存剩余量,每个虚拟机的平均PageFaultRate。 模块C,用于查找当前PageFau11Rate最小的进程;对该进程的内存配额按照削减步长进行削减。如上所述的装置,进一步还可以包括:模块D,用于查找当前PageFaultRate最大的进程;对该进程的内存配额按照增加步长进行增加。本发明还提出了,
—种内存配额的限制装置,包括以下模块:模块J,用于更新内存信息,获取每个进程当前的PageFault值,根据一段时间内的PageFault值,计算单位时间内的PageFault以获得每个进程的PageFaultRate ;所述的更新内存信息可以通过设置定时器,每当定时到达时执行,也可以设置条件触发,满足条件时执行。模块J中更新内存信息还包括,统计每个虚拟机中的内存剩余量,针对每个虚拟机,将单个虚拟机内包括的各个进程的PageFaultRate取平均值,分别获得每个虚拟机的平均 PageFaultRate。模块K,用于当虚拟机发出开启新进程请求时,根据内存信息判断是否允许开启新进程;如不允许则通知虚拟机不允许开启,并且退出处理,否则转由模块L处理;模块K中根据内存信息判断是否允许开启新进程包括根据以下信息至少一种进行判断:该虚拟机中的内存剩余量,该虚拟机的平均PageFaultRate,该虚拟机已经启动的进程数。模块L,用于通知虚拟机允许开启。本发明充分利用PageFaultRate对于进程实体内存的使用状况的反映,对于需要调整的进程的内存配额能够动态调整,需要限制配额时,能够禁止虚拟机启动新的进程。本发明实现后,可以让服务器合理科学的控制每个连接登陆上的用户虚拟机,及控制用户虚拟机上的进程数并且科学及时的调整用户虚拟机的内存使用,达到每个用户虚拟机都可以稳定的运行目的。本发明的上述方法及装置,本领域人员熟知能够使用软件、硬件、固件中的任意一种或者其任意组合来实现。以上描述仅为示例性说明,并不限制其具体的实施形式。以上所述,仅为本发明的具体实施方式
,但本发明的保护范围并不局限于此,任何熟悉本技术领域的技术人员在本发明揭露的技术范围内,可轻易想到的变化或替换,都应涵盖在本发明的保护范围之内。因此,本发明的保护范围应以权利要求的保护范围为准。
权利要求
1.一种内存配额的调整方法,包括以下步骤: 步骤A,更新内存信息,获取每个进程当前的PageFault值,根据一段时间内的PageFault值,计算单位时间内的PageFault以获得每个进程的PageFaultRate ; 步骤B,根据内存信息判断是否需要调整进程的内存配额;如不需要则退出;如需要,则进入步骤C ; 步骤C,查找当前PageFaultRate最小的进程;对该进程的内存配额按照削减步长进行削减。
2.如权利要求1所述的方法,还包括,步骤A运行之前设置步骤A启动条件,包括: 设置定时器,按周期定时启动步骤A ;或者, 设置触发条件,满足条件时立即启动步骤A。
3.如权利要求1所述的方法,步骤A中更新内存信息还包括,统计每个虚拟机中的内存剩余量,针对每个虚拟机,将单个虚拟机内包括的各个进程的PageFaultRate取平均值,分别获得每个虚拟机的平均PageFaultRate。
4.如权利要求3所述的方法,步骤B中根据内存信息判断是否需要调整进程的内存配额包括根据以下信息至少一种进行判断: 每个进程的PageFaultRate,每个虚拟机中的内存剩余量,每个虚拟机的平均PageFaultRate0
5.如权利要求1所述的方法,所述步骤C之后还包括, 步骤D,查找当前PageFaultRate最大的进程;对该进程的内存配额按照增加步长进行增加。
6.一种内存配额的限制方法,包括以下步骤: 步骤J,更新内存信息,获取每个进程当前的PageFault值,根据一段时间内的PageFault值,计算单位时间内的PageFault以获得每个进程的PageFaultRate ; 步骤K,当虚拟机发出开启新进程请求时,根据内存信息判断是否允许开启新进程;如不允许则通知虚拟机不允许开启,并且退出,否则进入步骤L ; 步骤L,通知虚拟机允许开启。
7.如权利要求6所述的方法,步骤J中更新内存信息还包括,统计每个虚拟机中的内存剩余量,针对每个虚拟机,将单个虚拟机内包括的各个进程的PageFaultRate取平均值,分别获得每个虚拟机的平均PageFaultRate。
8.如权利要求7所述的方法,步骤K中根据内存信息判断是否允许开启新进程包括根据以下信息至少一种进行判断: 该虚拟机中的内存剩余量,该虚拟机的平均PageFaultRate,该虚拟机已经启动的进程数。
9.一种内存配额的调整装置,包括以下模块: 模块A,用于更新内存信息,获取每个进程当前的PageFault值,根据一段时间内的PageFault值,计算单位时间内的PageFault以获得每个进程的PageFaultRate ; 模块B,用于根据内存信息判断是否需要调整进程的内存配额;如不需要则退出处理;如需要,则转由模块C处理; 模块C,用于查找当前PageFaultRate最小的进程;对该进程的内存配额按照削减步长进行削减。
10.一种内存配额的限制装置,包括以下模块: 模块J,用于更新内存信息,获取每个进程当前的PageFault值,根据一段时间内的PageFault值,计算单位时间内的PageFault以获得每个进程的PageFaultRate ; 模块K,用于当虚拟机发出开启新进程请求时,根据内存信息判断是否允许开启新进程;如不允许则通知虚拟机不允许开启,并且退出处理,否则转由模块L处理; 模块L,用于通知虚拟机允许开启。
全文摘要
本发明提出一种内存配额的调整方法和限制方法,及其相应的装置。利用PageFaultRate值,及时统计每个进程的PageFaultRate值和整个虚拟机的PageFaultRate平均值,并根据需要进行实时调整。本发明实现后,可以让服务器合理科学的控制每个连接登陆上的用户虚拟机,及控制用户虚拟机上的进程数并且科学及时的调整用户虚拟机的内存使用,达到每个用户虚拟机都可以稳定的运行目的。
文档编号G06F9/455GK103116516SQ20121056810
公开日2013年5月22日 申请日期2012年12月24日 优先权日2012年12月24日
发明者李瑞平 申请人:北京伸得纬科技有限公司, 国际伸得纬有限公司
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1