[发明专利]一种内存监控的方法和装置有效
申请号: | 200910132368.2 | 申请日: | 2009-03-30 |
公开(公告)号: | CN101515247A | 公开(公告)日: | 2009-08-26 |
发明(设计)人: | 张明振 | 申请(专利权)人: | 福建星网锐捷网络有限公司 |
主分类号: | G06F11/34 | 分类号: | G06F11/34;G06F11/32 |
代理公司: | 北京同达信恒知识产权代理有限公司 | 代理人: | 黄志华 |
地址: | 350015福建省福*** | 国省代码: | 福建;35 |
权利要求书: | 查看更多 | 说明书: | 查看更多 |
摘要: | |||
搜索关键词: | 一种 内存 监控 方法 装置 | ||
技术领域
本发明涉及计算机嵌入式操作系统领域,尤其涉及一种内存监控的方法和装置。
背景技术
在现有技术中计算机系统的内存不管容量有多大,均是有限的,因此优化内存管理有效地利用内存空间是一个非常关键的问题。
现有技术中通常采用的内存管理的结构如图1所示,其中,内存管理通常采用双层管理的方式,具体包括:
第一层管理:页分配器101将物理内存切割成一定长度的内核内存页,并管理该内核内存页,根据申请内存的实体的类别将系统中的内存划分到多个缓冲池中进行管理,在实际的应用环境中申请和使用内存的实体一般为任务和/或模块(简称为任务/模块)。
第二层管理:Slab分配器102将缓冲池所包含的缓冲区划分为多个Slab(是一种数据结构),Slab是由一个或多个(2N)连续页(页为内存的单元)组成的slab链条,另外,每个slab所包含的多个连续页作为一个整体被分为多个对象单元(也可称为对象体)。
对象单元是从特定缓存中进行内存分配和释放的基本元素,如开放最短路由优先协议(Open Shortest Path First,ospf)任务的路由公告一次内存申请就会占用Slab的多个对象单元;
每个缓冲池中缓存的都是同类任务/模块申请的对象单元,并且缓冲池的主要目的是缓存,而不是预留内存。
一个新建的缓冲池里面没有任何空闲对象单元,这时如果一个任务需要申 请内存,则对该任务对应的缓冲池发送一个分配新对象单元的请求,然后slab分配器为这个缓冲池分配一个新的slab,该任务则会分配到如图1A所示的对象单元1A01(对象单元大小是固定的,如1个内存页)。
如图2所示,对象单元被全部占用或者是部分占用的slab称之为“活动的(Active)slab”,这部分slab正在被系统使用,如上图2所示的Full和Partial情形;空的slabs称之为不活动的,如图2所示的Empty情形,在该示意图中对象1占用两个slab的所有对象单元。
对于Partial和Empty两种情形,即Slab中对象单元部分或者全部出现空闲,系统在分配内存时会出现如下问题:
伴随着内存分配和释放的不断进行,空闲内存空间逐渐被拆分成了如图3所示的众多大小不均的小块,在某个任务/模块申请内存时,这些小块的总量可以满足一个请求,但是由于其不连续的缘故实际无法满足,这种内存申请失败的情况则称之为内存碎片问题。
如果系统中经常出现申请内存失败,则会导致telnet应用无法进行登陆管理;控制台无法管理;ospf等路由协议任务无法为路由表项申请到内存空间,进一步会出现系统无法完成基本的数据转发任务等问题。
为了解决内存碎片问题,目前网络设备系统都将内存使用情况信息存放在结构体中,同时还提供了内存信息查看接口,虽然各种设备输出信息的形式不完全一样,但都仅是信息的罗列,信息量相对比较庞大,其中列出了所有的任务内存使用情况、不同大小字节类型的使用情况、不同缓冲池使用情况,这种方法存在的缺点是:
(1)需要查看的信息量大,而且不直观。
(2)如图4所示,该方法在测试过程中,还需要不断地将内存信息通过可视化的方式输出,并查看和比对(在实际的应用中可以采用show memory命令将存放在结构体中的内存信息以列表的形式进行显示),对于相对复杂的信息输出,则需要将所述输出的内存信息进行综合核对。其中比对内容包括重点关注的字节数统计值,各个重点功能协议内存利用统计值,因为所需比对的项目相对较多所以很容易遗漏,另外因为显示的数据量大所以有可能需要观察的数据不在同一页面显示,从而造成观察面不齐备而且难以兼顾。
发明内容
本发明实施例提供一种内存监控的方法和装置,能够及时有效的提供系统内存情况。
本发明实施例提供一种内存监控的方法,网络设备定期对自身内存使用情况信息进行采样,并将采样数据存放于结构体中,包括:
选择监控的缓冲池,并设定监控周期;
根据设定的监控周期从所述结构体中获取任务或者模块对应缓冲池的结构体变量参数值,其中所述结构体变量参数值用于记录所述缓冲池内存使用情况的相关信息;
利用获取到的变量参数值计算得到相应的内存性能指标,并将得到的每个内存性能指标与设定的对应阈值进行比较,如果所述内存性能指标的任一项超过对应的阈值,则确定该缓冲池产生了内存碎片。
该专利技术资料仅供研究查看技术是否侵权等信息,商用须获得专利权人授权。该专利全部权利属于福建星网锐捷网络有限公司,未经福建星网锐捷网络有限公司许可,擅自商用是侵权行为。如果您想购买此专利、获得商业授权和技术合作,请联系【客服】
本文链接:http://www.vipzhuanli.com/pat/books/200910132368.2/2.html,转载请声明来源钻瓜专利网。