[发明专利]一种基于Linux的监控用户态进程内存状态方法及系统在审
申请号: | 201610095390.4 | 申请日: | 2016-02-22 |
公开(公告)号: | CN105760275A | 公开(公告)日: | 2016-07-13 |
发明(设计)人: | 高福亮 | 申请(专利权)人: | 汉柏科技有限公司 |
主分类号: | G06F11/30 | 分类号: | G06F11/30 |
代理公司: | 北京路浩知识产权代理有限公司 11002 | 代理人: | 李相雨 |
地址: | 300384 天津市滨海新*** | 国省代码: | 天津;12 |
权利要求书: | 查看更多 | 说明书: | 查看更多 |
摘要: | |||
搜索关键词: | 一种 基于 linux 监控 用户 进程 内存 状态 方法 系统 | ||
技术领域
本发明涉及计算机技术领域,尤其涉及一种基于Linux的监控用户态进程内存状态方法及系统。
背景技术
Linux操作系统允许程序申请比系统可用内存更多的内存空间,这个特性叫做Overcommit。可以理解的是,在Linux操作系统中,不是所有的程序申请了内存后立刻就会使用,因此当其真正使用内存时,系统可能已经进行了内存回收。与此同时,在系统内存严重不足的情况下,Linux操作系统会启用相关算法选择一个或多个进程并将其关闭,以释放内存从而保障系统的稳定运行,这个保护机制叫做OOM(Out-of-Memory)KILLER。
进一步的,Linux操作系统中每个进程都有一个OOM权重,其取值是-17到+15。OOMKILLER是通过进程的OOM权重值来决定哪个进程被关闭。OOM权重值越高,越容易被关闭。可以理解的是,OOM权重值是系统综合进程的内存消耗量、CPU时间(utime+stime)、存活时间(uptime-starttime)和OOM_adj计算出的,消耗内存越多值越高,存活时间越长值越低。此外,Linux在计算进程的内存消耗的时候,会将子进程所耗内存的一半同时算到父进程中。如图1所示,流程图是linux内核OOM的调用关系。
然而,现有技术中,基于linux操作系统的网络设备如防火墙、交换机等,其运行可能是多用户态进程或某些用户态进程,因而使用内存很大。当某个进程出现内存泄漏,或者多用户态进程使用内存达到系统内存的临界值时,就会触发内核的OOM机制,而关闭的用户态进程只是内核认为OOM权重值最高的,并不一定是导致内核OOM的真正原因。同时,网络设备所起的用户态进程都是有用的,OOM发生后任何被关闭的用户态进程都会导致部分功能不可用,此外,OOM信息、用户态进程内存信息不支持记录保存功能,设备重启后信息消失不利于内存泄漏相关问题定位。
发明内容
针对现有技术中的缺陷,本发明提供了一种基于Linux的监控用户态进程内存状态方法及系统,使得网络设备在网络环境中出现问题或正常情况下,有效监控用户态进程内存状态,预测或确定引起内存泄漏OOM的用户态进程。
第一方面,本发明提供了一种基于Linux的监控用户态进程内存状态方法,所述方法包括:
获取每个用户态进程启动时的第一内存状态;
获取所述每个用户态进程内存泄漏OOM时的第二内存状态;
根据所述第一内存状态和所述第二内存状态,获取所述每个用户态进程的第一内存增值;
将所述第一内存增值与预设阈值进行比较,获得第一监控用户态进程,所述第一监控用户态进程的第一内存增值大于预设阈值;
将所述第一监控用户态进程进行排序,获取第一排序结果,并根据所述第一排序结果生成第一提示信息,所述第一提示信息用于确定引起内存泄漏OOM的用户态进程。
优选地,所述获取每个用户态进程启动时的第一内存状态之前,所述方法还包括:
当系统启动时,获取每个用户态进程的内存状态信息;
将所述每个用户态进程的内存状态信息按照预设格式进行保存,获取启动时的内存状态信息表。
优选地,所述获取启动时的内存状态信息表之后,所述方法还包括:
在系统运行过程中,当新增用户态进程启动时,获取新增用户态进程的内存状态信息;
将所述新增用户态进程的内存状态信息按照预设格式进行保存,获取更新后的内存状态信息表。
优选地,所述获取每个用户态进程启动时的第一内存状态,包括:
根据所述内存状态信息表,获取每个用户态进程启动时的第一内存状态。
优选地,所述获取每个用户态进程启动时的第一内存状态之后,所述方法还包括:
获取所述每个用户态进程运行中预设时刻的第三内存状态;
根据所述第一内存状态和所述第三内存状态,获取所述每个用户态进程的第二内存增值;
将所述第二内存增值与预设阈值进行比较,获得第二监控用户态进程,所述第二监控用户态进程的第二内存增值大于预设阈值;
将所述第二监控用户态进程进行排序,获取第二排序结果,并根据所述第二排序结果生成第二提示信息,所述第二提示信息用于预测引起内存泄漏OOM的用户态进程。
优选地,所述获取所述每个用户态进程运行中预设时刻的第三内存状态,包括:
在系统运行过程中,获取预设时刻的每个用户态进程的内存状态信息;
将所述预设时刻的每个用户态进程的内存状态信息按照预设格式进行保存,获取运行中的内存状态信息表;
该专利技术资料仅供研究查看技术是否侵权等信息,商用须获得专利权人授权。该专利全部权利属于汉柏科技有限公司,未经汉柏科技有限公司许可,擅自商用是侵权行为。如果您想购买此专利、获得商业授权和技术合作,请联系【客服】
本文链接:http://www.vipzhuanli.com/pat/books/201610095390.4/2.html,转载请声明来源钻瓜专利网。