一种动环监控主机的内核内存监控方法与流程

文档序号:11276181阅读:760来源:国知局
一种动环监控主机的内核内存监控方法与流程

本发明涉及模块化数据中心mdc、通信机房等领域,具体地说是一种动环监控主机的内核内存监控方法。



背景技术:

模块化数据中心(moduledatacenter,mdc)是基于云计算的新一代数据中心部署形式,为了应对云计算、虚拟化、集中化、高密化等服务器发展的趋势,其采用模块化设计理念,最大程度的降低基础设施对机房环境的耦合。集成了供配电、制冷、机柜、气流遏制、综合布线、动环监控、消防等子系统,提高数据中心的整体运营效率,实现快速部署、弹性扩展和绿色节能。

linux操作系统内核空间和用户空间页表的管理方式不同,具体来说,每个进程都有不同的用户空间页表,而内核对于访问内存时需要的页表是单独进行管理的,有单独的内核页表,进程的页表会与内核主页表进行同步,所有进程共享linux的内核空间。

现有技术的技术方案,主要是通过shell脚本实现,一般的操作流程如下:

1)使用free命令查看linux系统内存使用情况;

2)查看截取剩余内存free的数值命令;

3)编写内存监控的脚本文件;

4)以文本文件的方式保存结果;

5)查看内存监控的结果文件。

目前已经存在的脚本可以对内存进行检测和监控,但是基本都是针对用户空间的,由于内核空间运行于特权级别,所以操作起来更加困难。此外,动态分析内核空间的工具中大多数针对的是内存泄露,溢出等常见错误的检测,缺乏对内存访问信息的监控工具。



技术实现要素:

本发明的技术任务是提供一种动环监控主机的内核内存监控方法。

本发明的技术任务是按以下方式实现的,该方法要求linux内核是模块化的,支持模块的动态插入;该方法主要由核心模块、内核内存访问信息监控模块、内核内存溢出检测模块、内核内存统计信息模块和界面统一展示模块实现;

所述的核心模块是基础模块,会捕获所监控内核内存的全部访问,并提供访问处理接口和管理监控内存的接口;

所述的内核内存访问信息监控模块对所监控内存的所有访问都进行具体判断处理;

所述的内核内存溢出检测模块检测linux内核模块的动态内存访问越界的问题;

所述的内核内存统计信息模块用于统计读写操作、进程、用户信息;

所述的界面统一展示模块用于通过图形化界面展现监控结果,实时监控访问内存信息。

所述的核心模块对外提供两类接口,一类注册或注销的接口,用来注册或者注销监控模块的接口;另一类添加或删除监控内存的接口,用来控制所要监控的内存模块的范围。

所述的内核内存监控方法的步骤如下:

1)向核心模块动态添加内核内存访问信息监控模块;

2)向核心模块动态添加内核内存溢出检测模块;

3)向核心模块动态添加内核内存统计信息监控模块;

4)向核心模块成功注册后,内核内存访问信息监控模块利用通知机制等待访问内存;

5)内核内存访问,向核心模块添加需要监控检测内存信息,对于特别危险的行为设置强制结束;

6)进程产生缺页异常;

7)判断是否因监控引起的缺页异常;

8)否,系统正常处理;

9)是,进入内核内存访问信息监控模块进行处理;

10)根据当前寄存器的信息和当前的进程控制块current来记录进程的访问信息;

11)设置页表项pte为页存在状态;

12)修改标志寄存器为单步调试;

13)内核内存正常访问;

14)产生单步中断,然后通知机制会通知内核内存溢出检测模块,启动内核内存溢出检测模块;

15)复制可执行代码到内核空间,内核内存溢出检测模块做预处理,随后继续执行初始化函数;

16)内核内存溢出检测的主要方法是在申请内存块的时候,增加申请内存的大小,将这些申请额外的空间作为检测区域;然后向核心模块添加这个较大的内存块;当访问该内存块时,通过判断是否访问到了边界区域来确定是否发生了内存越界访问;

17)进入内核内存访问信息监控模块,设置页表项pte为缺页状态,恢复标志寄存器;

18)进入内核内存统计信息模块,对于同一个进程,信息只记录一份,包括对该内存的读、写次数,访问时间;

19)可视化界面统一展示模块读取内核内存监控结果,并在用户空间进行呈现;

20)重复(5)~(19)步骤,完成循环监控过程。

本发明的一种动环监控主机的内核内存监控方法和现有技术相比,有助于动环监控主机的linux调试,尤其是在涉及底层驱动代码调试时,可以快速定位程序的内存访问位置,有利于开发及调试中深层次问题的定位,提升动环监控主机的稳定性与可靠性,并保障业务系统的稳定、可靠运行。

附图说明

附图1为一种动环监控主机的内核内存监控方法的系统架构图。

附图2为一种动环监控主机的内核内存监控方法的流程示意图。

具体实施方式

实施例1:

该方法要求linux内核是模块化的,支持模块的动态插入;该方法主要由核心模块、内核内存访问信息监控模块、内核内存溢出检测模块、内核内存统计信息模块和界面统一展示模块实现;

所述的核心模块是基础模块,会捕获所监控内核内存的全部访问,并提供访问处理接口和管理监控内存的接口;所述的核心模块对外提供两类接口,一类注册或注销的接口,用来注册或者注销监控模块的接口;另一类添加或删除监控内存的接口,用来控制所要监控的内存模块的范围。

所述的内核内存访问信息监控模块对所监控内存的所有访问都进行具体判断处理;

所述的内核内存溢出检测模块检测linux内核模块的动态内存访问越界的问题;

所述的内核内存统计信息模块用于统计读写操作、进程、用户信息;

所述的界面统一展示模块用于通过图形化界面展现监控结果,实时监控访问内存信息。

所述的内核内存监控方法的步骤如下:

1)向核心模块动态添加内核内存访问信息监控模块;

2)向核心模块动态添加内核内存溢出检测模块;

3)向核心模块动态添加内核内存统计信息监控模块;

4)向核心模块成功注册后,内核内存访问信息监控模块利用通知机制等待访问内存;

5)内核内存访问,向核心模块添加需要监控检测内存信息,对于特别危险的行为设置强制结束;

6)进程产生缺页异常;

7)判断是否因监控引起的缺页异常;

8)否,系统正常处理;

9)是,进入内核内存访问信息监控模块进行处理;

10)根据当前寄存器的信息和当前的进程控制块current来记录进程的访问信息;

11)设置页表项pte为页存在状态;

12)修改标志寄存器为单步调试;

13)内核内存正常访问;

14)产生单步中断,然后通知机制会通知内核内存溢出检测模块,启动内核内存溢出检测模块;

15)复制可执行代码到内核空间,内核内存溢出检测模块做预处理,随后继续执行初始化函数;

16)内核内存溢出检测的主要方法是在申请内存块的时候,增加申请内存的大小,将这些申请额外的空间作为检测区域;然后向核心模块添加这个较大的内存块;当访问该内存块时,通过判断是否访问到了边界区域来确定是否发生了内存越界访问;

17)进入内核内存访问信息监控模块,设置页表项pte为缺页状态,恢复标志寄存器;

18)进入内核内存统计信息模块,对于同一个进程,信息只记录一份,包括对该内存的读、写次数,访问时间;

19)可视化界面统一展示模块读取内核内存监控结果,并在用户空间进行呈现;

20)重复(5)~(19)步骤,完成循环监控过程。

通过上面具体实施方式,所述技术领域的技术人员可容易的实现本发明。但是应当理解,本发明并不限于上述的几种具体实施方式。在公开的实施方式的基础上,所述技术领域的技术人员可任意组合不同的技术特征,从而实现不同的技术方案。

当前第1页1 2 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1