一种内存监控的方法和装置制造方法及图纸

技术编号:3895039 阅读:162 留言:0更新日期:2012-04-11 18:40
一种内存监控的方法,网络设备定期对自身内存使用情况信息进行采样,并将采样数据存放于结构体中,其特征在于,包括: 选择监控的缓冲池,并设定监控周期; 根据设定的监控周期从所述结构体中获取所述缓冲池的结构体变量参数值,其中所述结构体变量参数值用于记录所述缓冲池内存使用情况的相关信息; 利用获取到的变量参数值计算得到相应的内存性能指标,并将得到的每个内存性能指标与设定的对应阀值进行比较,如果所述内存性能指标的任一项超过对应的阀值,则确定该缓冲池产生了内存碎片。

【技术实现步骤摘要】

本专利技术涉及计算机嵌入式操作系统领域,尤其涉及一种内存监控的方法和 装置。
技术介绍
在现有技术中计算机系统的内存不管容量有多大,均是有限的,因此优化 内存管理有效地利用内存空间是一个非常关键的问题。现有技术中通常采用的内存管理的结构如图1所示,其中,内存管理通常采用双层管理的方式,具体包括第一层管理页分配器101将物理内存切割成一定长度的内核内存页,并 管理该内核内存页,根据申请内存的实体的类别将系统中的内存划分到多个緩 冲池中进行管理,在实际的应用环境中申请和使用内存的实体一般为任务和/ 或模块(简称为任务/模块)。第二层管理Slab分配器102将緩沖池所包含的緩冲区划分为多个Slab(是 一种数据结构),Slab是由一个或多个(2N)连续页(页为内存的单元)组成 的slab链条,另外,每个slab所包含的多个连续页作为一个整体被分为多个对 象单元(也可称为对象体)。对象单元是从特定緩存中进行内存分配和释放的基本元素,如开放最短路 由优先协议(Open Shortest Path First, ospf)任务的路由公告一次内存申请就会 占用Slab的多个对象单元;每个緩冲池中緩存的都是同类任务/模块申请的对象单元,并且緩冲池的主 要目的是緩存,而不是预留内存。一个新建的緩冲池里面没有任何空闲对象单元,这时如果一个任务需要申请内存,则对该任务对应的緩沖池发送一个分配新对象单元的请求,然后slab 分配器为这个緩沖池分配一个新的slab,该任务则会分配到如图1A所示的对 象单元IAOI (对象单元大小是固定的,如l个内存页)。如图2所示,对象单元被全部占用或者是部分占用的slab称之为"活动的 (Active) slab",这部分slab正在被系统4吏用,如上图2所示的Full和Partial 情形;空的slabs称之为不活动的,如图2所示的Empty情形,在该示意图中 对象l占用两个slab的所有对象单元。对于Partial和Empty两种情形,即Slab中对象单元部分或者全部出现空 闲,系统在分配内存时会出现如下问题伴随着内存分配和释放的不断进行,空闲内存空间逐渐被拆分成了如图3 所示的众多大小不均的小块,在某个任务/模块申请内存时,这些小块的总量可 以满足一个请求,但是由于其不连续的缘故实际无法满足,这种内存申请失败 的情况则称之为内存碎片问题。如果系统中经常出现申请内存失败,则会导致telnet应用无法进行登陆管 理;控制台无法管理;ospf等路由协议任务无法为路由表项申请到内存空间, 进一 步会出现系统无法完成基本的数据转发任务等问题。为了解决内存碎片问题,目前网络设备系统都将内存使用情况信息存放在 结构体中,同时还提供了内存信息查看接口,虽然各种设备输出信息的形式不 完全一样,但都仅是信息的罗列,信息量相对比较庞大,其中列出了所有的任 务内存使用情况、不同大小字节类型的使用情况、不同緩冲池使用情况,这种 方法存在的缺点是(1) 需要查看的信息量大,而且不直观。(2) 如图4所示,该方法在测试过程中,还需要不断地将内存信息通过 可视化的方式输出,并查看和比对(在实际的应用中可以采用show memoiy 命令将存放在结构体中的内存信息以列表的形式进行显示),对于相对复杂的 信息输出,则需要将所述输出的内存信息进行综合核对。其中比对内容包括重点关注的字节数统计值,各个重点功能协议内存利用统计值,因为所需比对的 项目相对较多所以很容易遗漏,另外因为显示的数据量大所以有可能需要观察 的数据不在同一页面显示,从而造成观察面不齐备而且难以兼顾。
技术实现思路
本专利技术实施例提供一种内存监控的方法和装置,能够及时有效的提供系统 内存情况。本专利技术实施例提供一种内存监控的方法,网络设备定期对自身内存使用情况信息进行采样,并将采样数据存放于结构体中,包括 选择监控的緩沖池,并设定监控周期;根据设定的监控周期从所述结构体中获取任务或者模块对应緩冲池的结 构体变量参数值,其中所述结构体变量参数值用于记录所述緩沖池内存使用情况的相关信 息;利用获取到的变量参数值计算得到相应的内存性能指标,并将得到的每个 内存性能指标与设定的对应阀值进行比较,如果所述内存性能指标的任一项超 过对应的阀值,则确定该緩沖池产生了内存碎片。针对上述方法,本专利技术实施例还提供一种内存监控的装置,网络设备定期对自身内存使用情况信息进行采样,并将采样数据存放于结构体中,包括 预处理模块,用于选择监控的緩沖池,并设定监控周期,根据设定的监控周期从所述结构体中获取緩冲池的结构体变量参数值,其中所述结构体变量参数值用于记录所述緩沖池内存使用情况的相关信息;确定模块,用于利用获取到的变量I^L值计算得到相应的内存性能指标,并将得到的每个内存性能指标与设定的对应阀值进行比较,如果所述内存性能指标的任一项超过对应的阀值,则确定该緩冲池产生了内存碎片。本专利技术实施例通过交换机提供的外部接口获取緩沖池的结构体变量参数值并利用获取到的结构体变量参数值计算得到内存性能指标,并用该内存性能指标与预设的阀值进行比较,从而判断系统是否存在内存碎片问题,通过本发 明实施例提供的方法能够有效监控系统内存碎片现象,并且能够缩短内存碎片 问题被发现的周期。附图说明图1为现有技术中内存管理的结构示意图1A为现有技术中slab和对象单元的关系示意图2为现有技术中緩冲池的结构示意图3为内存申请分割图示;图4为show memory命令部分显示效果图5为緩冲池与任务/模块的对应关系以及内存情况部分显示效果图; 图6为本专利技术实施例一种内存监控方法的流程图; 图7为本专利技术实施例一种内存监控装置的装置图。具体实施例方式本专利技术实施例一种监控内存的方法首先通过所述网络设备提供的外部接 口选择监控的緩冲池,并设定监控周期;根据设定的监控周期从所述结构体中 获取所述緩冲池的结构体变量参数值,其中所述结构体变量参数值用于记录所 述緩冲池内存使用情况的相关信息;利用获取到的变量参数值计算得到相应的 内存性能指标,并将得到的每个内存性能指标与设定的对应阀值进行比较,如 果所述内存性能指标的任一项超it^t应的阀值,则确定该緩冲池产生了内存碎 片。下面结合说明书附图对本专利技术实施例进行详细说明,如图6所示,本专利技术 实施例一种内存监控的方法,具体包括步骤601,在所述网络设备中设置外部接口,并通过该外部接口选择需要 监控的緩沖池,并设定监控周期,定期从结构体中获取所述緩冲池相关的结构体变量参数值,所述结构体变量参数值是定期对緩冲池的使用情况信息进行采 样所获取到的参数值。其中,设定需要监控的緩沖池以及监控周期是通过交换机上提供的外部接 口实现的,所述外部接口是交换机设备所提供的一些命令接口 ,并且外部可视,如"monitor time Long"。进一步,还可以通过该接口选择监控哪种系统资源、监控那种任务或模块、 监控哪个任务的哪种字节数、任务参数为OSPF等、内存部分监控还有字节数 的选项、设置抽样监控时间间隔、能够设定多久输出一次比较结果。在本专利技术实施例中,任务/模块在申请内存时可能因为所申请内存类型或大 小的不同,从而使得所申请到的内存被划分到不同的緩冲池。因为某个任务/模块申请的内存有可能被划分在多本文档来自技高网
...

【技术保护点】
一种内存监控的方法,网络设备定期对自身内存使用情况信息进行采样,并将采样数据存放于结构体中,其特征在于,包括: 选择监控的缓冲池,并设定监控周期; 根据设定的监控周期从所述结构体中获取所述缓冲池的结构体变量参数值,其中所述结构体变量参数值用于记录所述缓冲池内存使用情况的相关信息; 利用获取到的变量参数值计算得到相应的内存性能指标,并将得到的每个内存性能指标与设定的对应阀值进行比较,如果所述内存性能指标的任一项超过对应的阀值,则确定该缓冲池产生了内存碎片。

【技术特征摘要】

【专利技术属性】
技术研发人员:张明振
申请(专利权)人:福建星网锐捷网络有限公司
类型:发明
国别省市:35

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

1