一种内存保护方法及其系统技术方案

技术编号:2842235 阅读:254 留言:0更新日期:2012-04-11 18:40
本发明专利技术公开了一种内存保护方法,所述方法包括:当系统处于内存短缺告警时,检测系统内存,检查是否满足解除内存短缺告警条件;在满足解除内存短缺告警条件的情况下,检查此时解除告警是否将产生内存振荡;在将产生内存振荡的情况下,延迟一段时间T_delay后,再发送内存恢复通报以解除内存短缺告警。本发明专利技术同时还公开了一种内存保护系统。通过本发明专利技术的内存保护系统及方法可以有效地抑制内存振荡,增强系统的稳定性、可靠性和安全性。

【技术实现步骤摘要】

本专利技术涉及内存管理技术,尤其涉及一种内存保护方法及其系统
技术介绍
内存在系统中是必不可少但又有限的资源,因此内存的管理和保护对于系统是必不可少的。目前,各种系统均采用了一些机制对系统内存进行管理和保护。其中“memory shortage(内存短缺)”机制就是一种常用的内存保护机制。现在的内存保护方法大都同“memory shortage”机制相似,是通过“内存告警”和“内存恢复”实现对内存的管理和保护。当系统内存不足时,系统采取措施通知系统中的上层应用模块,告知当前内存的使用情况,上层应用模块就对应用程序申请内存采取一定的限制措施;而当正在使用内存的应用程序释放了内存,使得内存使用率降低到某个特定值时,系统通知上层应用模块当前的内存使用状况,上层应用模块就解除应用程序申请内存时的限制。现有技术中设定了两个门限值(阈值),即内存告警门限R_alarm和内存恢复门限R_restore。其中内存告警门限是发出内存短缺告警的门限值,而内存恢复门限是解除所述内存短缺告警的门限值。现有技术中,系统为应用模块分配内存时,首先检测内存,当发现系统内存使用率R高于内存告警门限R_alarm时,通知系统的上层应用模块当前系统处于内存短缺告警状态,接到该信息后应用模块将采取相应措施,诸如输出内存短缺告警信息,删除和重新计算路由,降低系统支持的最大路由容量规格等等。而当有应用模块释放内存时,系统也对内存进行检测,在系统内存使用率R处于内存恢复门限R_restore以下时,就通过通知应用模块解除内存短缺告警。现有技术中,通过上述过程实现对于内存的管理和保护,然而当内存的申请和释放比较频繁的时候,系统就会在短时间内由“告警”到“恢复”,再又由“恢复”到“告警”,这样在“告警”和“恢复”之间来回变化,这种现象被称为“内存振荡”。内存振荡的出现会对系统造成许多不良影响,使得系统不稳定,使系统的稳定性、可靠性和安全性大大降低,对上层应用模块也会造成不良影响。按照目前的实现机制,内存告警门限和内存恢复门限的设定取决于当前系统内存配置的多少,下表是内存配置于内存告警门限和内存恢复门限设置的一个实例。表1内存配置与门限值设定的关系 从表中可以看出,现有的实现机制中,内存告警门限比内存恢复门限高,使得系统从内存短缺告警到解除内存短缺告警有一定的缓冲,而不是一旦内存使用率低于内存告警门限就解除告警。这种做法对可能出现的内存振荡具有一定的抑制功能。但是,由于现有机制是通过一段内存空间来实现系统从内存告警到内存恢复的缓冲,如果系统处理能力进一步增强,而系统内存空间有限,即使缓冲区设定得再大,从内存告警到内存恢复的时间仍然很短,因此,对于该方法内存的保护力量就比较微弱,内存振荡也变得无法抑制。
技术实现思路
为此,本专利技术的目的在于提供一种能够有效抑制内存振荡的内存保护方法及其系统。有鉴于此,本专利技术提供了一种内存保护方法,所述方法包括步骤1,当系统处于内存短缺告警时,检测系统内存,检查是否满足解除内存短缺告警条件;步骤2,在满足解除内存短缺告警条件的情况下,检查此时解除告警是否将产生内存振荡;步骤3,在将产生内存振荡的情况下,延迟一段时间T_delay后,再发送内存恢复通报以解除内存短缺告警。上述的内存保护方法,所述步骤3中,在延迟一段时间T_delay之后,在发送内存恢复通报之前,进一步包括步骤3a,再次检测系统内存,检查当前是否仍然满足解除内存短缺告警条件,当系统当前仍处于满足解除内存短缺告警条件的状态时,执行发送内存恢复通报的步骤。上述的内存保护方法,其中所述的检测系统内存包括以下步骤计算系统当前的内存使用率R,当内存使用率R低于内存恢复门限R_restore时,则确定系统处于满足解除内存短缺告警条件的状态。上述的内存保护方法,其中步骤2所述的检查此时解除告警是否将产生内存振荡包括以下步骤步骤2a,计算上次内存短缺告警至此时解除内存短缺告警的时间、计算前M次内存短缺告警至解除内存短缺告警的时间的平均值或者计算前M次内存短缺告警至解除内存短缺告警的时间的加权平均值,将计算结果作为T_cost;步骤2b,比较T_cost和内存短缺告警至解除内存短缺告警的标准时间长度T_standard,如果T_cost小于T_standard,则确定为将发生内存振荡。上述的内存保护方法,其特征在于,所述的T_delay为恒定值,或者为产生内存振荡可能性的增函数。上述的内存保护方法,其中所述的T_delay为T_standard和T_cost差值的增函数。上述的内存保护方法,其中所述的T_delay同T_standard和T_cost的差值成线性增加关系。通过本专利技术的内存保护方法,能够对系统内存进行更好的保护,可以有效地抑制内存振荡,克服现有技术中内存保护方法的缺陷,提高系统的安全性稳、定性和可靠性。此外,本专利技术还提供了一种内存保护系统,其特征在于,所述系统包括 内存状态检测模块,用于在系统处于内存短缺告警时,对内存使用情况进行检测,检查是否满足解除内存短缺告警条件,并将其检查确定的结果通知内存振荡处理模块;内存振荡处理模块,用于在所述内存状态检测模块检查确定的结果为满足解除内存短缺告警条件的情况下,检查当前解除内存短缺告警是否将产生内存振荡,并在将出现内存振荡的情况下,执行一段时间的延时,然后再发送信号通知通报处理模块发送内存恢复通告;通报处理模块,用于发送内存恢复通告通知系统解除内存短缺告警。上述的内存保护系统,其中所述内存振荡处理模块包括内存振荡检测模块,用于在所述内存状态检测模块检查确定的结果为满足解除内存短缺告警条件的情况下,检查当前解除内存短缺告警是否将产生内存振荡,在将出现内存振荡的情况下,发送信号通知延时模块执行一段时间的延时;延时模块,用于执行延时并在延时结束后发送信号通知通报处理模块发送内存恢复通报。上述的内存保护系统,其中所述内存振荡处理模块进一步包括内存状态复检模块,用于获取延时模块发送给通报处理模块的信号,并再次检测系统内存,检查当前状态是否满足解除内存短缺告警条件,在当前状态仍满足解除内存短缺告警条件的情况下,将所述延时模块发送的信号转发给所述通报处理模块通知其发送内存恢复通报。本专利技术的内存保护方法及其系统在内存层采取了与时间相关的抑制措施,有效地抑制了内存振荡,从而增强了系统的稳定性、可靠性和安全性,避免了因内存振荡而给上层应用模块带来的不利影响。附图说明图1为本专利技术的内存保护系统结构示意框图;图2为本专利技术的内存保护系统的第一实施例的结构示意框图;图3为本专利技术的内存保护方法的第一实施例的流程图;图4为本专利技术的内存保护系统的第二实施例的结构示意框图;图5为本专利技术的内存保护方法的第二实施例的流程图。具体实施例方式本专利技术提供了一种内存保护方法及其系统,该内存保护系统通过在系统处于可以解除内存短缺告警的情况下,在可能出现内存振荡时,执行延迟处理来实现对内存振荡的抑制。为此,在本专利技术中设置了一个标准时间长度T_standard作为内存短缺告警至解除内存短缺告警的标准时长。该T_Standard与硬件配置等相关,当连接在网络中时还与网路连接复杂度相关,通常该值在5秒中至90秒之间。此外,还设置了T_restore和T本文档来自技高网
...

【技术保护点】
一种内存保护方法,其特征在于,所述方法包括:步骤1,当系统处于内存短缺告警时,检测系统内存,检查是否满足解除内存短缺告警条件;步骤2,在满足解除内存短缺告警条件的情况下,检查此时解除告警是否将产生内存振荡;步骤3,在 将产生内存振荡的情况下,延迟一段时间T_delay后,再发送内存恢复通报以解除内存短缺告警。

【技术特征摘要】

【专利技术属性】
技术研发人员:安宏杰孔繁辉
申请(专利权)人:华为技术有限公司
类型:发明
国别省市:94[中国|深圳]

网友询问留言 已有0条评论
  • 还没有人留言评论。发表了对其他浏览者有用的留言会获得科技券。

1