一种紧急探查系统信息的方法及模块.pdf

上传人:b*** 文档编号:1040930 上传时间:2018-03-27 格式:PDF 页数:16 大小:617.52KB
返回 下载 相关 举报
摘要
申请专利号:

CN201010219920.4

申请日:

2010.07.06

公开号:

CN102314382A

公开日:

2012.01.11

当前法律状态:

撤回

有效性:

无权

法律详情:

发明专利申请公布后的视为撤回IPC(主分类):G06F 11/07申请公布日:20120111|||实质审查的生效IPC(主分类):G06F 11/07申请日:20100706|||公开

IPC分类号:

G06F11/07; H04L29/08

主分类号:

G06F11/07

申请人:

中兴通讯股份有限公司

发明人:

阳广元

地址:

518057 广东省深圳市南山区高新技术产业园科技南路中兴通讯大厦法务部

优先权:

专利代理机构:

北京安信方达知识产权代理有限公司 11262

代理人:

李健;龙洪

PDF下载: PDF下载
内容摘要

本发明提供一种紧急探查系统信息的方法及模块,该方法应用于Linux操作系统,包括:在Linux操作系统初始化时,将紧急故障探查程序加载到内核,创建紧急故障探查线程;接收到预定功能键的按键消息后,触发所述紧急故障探查线程监听远程客户端的连接请求;所述紧急故障探查线程监听到远程客户端的连接请求后,与所述远程客户端建立连接,根据所述远程客户端的命令请求探查系统信息,并将探查到的系统信息发送给所述远程客户端。本发明通过扩展SysRq键功能,实现直接植入内核,以在Linux系统出现故障时提供不关机重启的状态下,提供故障Linux系统的信息。

权利要求书

1: 一种紧急探查系统信息的方法, 应用于 Linux 操作系统, 包括 : 在 Linux 操作系统初始化时, 将紧急故障探查程序加载到内核, 创建紧急故障探查线 程; 接收到预定功能键的按键消息后, 触发所述紧急故障探查线程监听远程客户端的连接 请求 ; 所述紧急故障探查线程监听到远程客户端的连接请求后, 与所述远程客户端建立连 接, 根据所述远程客户端的命令请求探查系统信息, 并将探查到的系统信息发送给所述远 程客户端。
2: 如权利要求 1 所述的方法, 其特征在于 : 所述紧急故障探查线程监听远程客户端的 连接请求的步骤包括 : 所述紧急故障探查线程创建网络监听套接字 (Socket), 绑定监听地址和端口, 然后开 始监听所述远程客户端的连接请求。
3: 如权利要求 1 或 2 所述的方法, 其特征在于 : 所述紧急故障探查线程监听远程客户 端的连接请求的步骤还包括 : 所述紧急故障探查线程若在预定时间内未监听到所述远程客户端的连接请求, 则返回 到休眠状态。
4: 如权利要求 1 所述的方法, 其特征在于 : 所述紧急故障探查线程与所述远程客户端 建立连接的步骤之后, 所述方法还包括 : 所述紧急故障探查线程对所述远程客户端进行验证。
5: 如权利要求 1 或 2 或 4 所述的方法, 其特征在于 : 所述探查系统信息包括 : 从 proc 文件系统中读取系统信息, 或从内核中读取系统信息, 所述系统信息包括 : 进 程信息、 内存信息和虚拟内存信息 ; 或 获取 Linux 操作系统上的文件内容信息。
6: 如权利要求 1 所述的方法, 其特征在于 : 所述预定功能键为系统请求 (SysRq) 组合键。
7: 一种紧急探查系统信息模块, 应用于 Linux 操作系统, 其特征在于, 包括 : 主控子模 块和命令子模块, 其中, 所述主控子模块包括 : 初始化单元, 用于在 Linux 操作系统初始化时, 将紧急故障探查程序加载到内核, 创建 紧急故障探查线程 ; 触发单元, 基于紧急故障探查线程实现, 用于接收到预定功能键的按键消息后, 触发监 听单元 ; 所述监听单元, 基于紧急故障探查线程实现, 用于通过所述紧急故障探查线程监听远 程客户端的连接请求 ; 连接单元, 基于紧急故障探查线程实现, 用于在所述紧急故障探查线程监听到远程客 户端的连接请求后, 建立所述紧急故障探查线程与所述远程客户端之间的连接, 将所述远 程客户端的命令请求发送给所述命令模块 ; 所述命令子模块, 基于紧急故障探查线程实现, 用于根据所述远程客户端的命令请求 探查系统信息, 并将探查到的系统信息发送给所述远程客户端。 2
8: 如权利要求 7 所述的模块, 其特征在于 : 所述监听单元通过所述紧急故障探查线程监听远程客户端的连接请求时, 是通过所述 紧急故障探查线程创建网络监听套接字 (Socket), 绑定监听地址和端口, 然后开始监听所 述远程客户端的连接请求。
9: 如权利要求 7 或 8 所述的模块, 其特征在于 : 所述监听单元, 还用于若判断所述紧急故障探查线程在预定时间内未监听到所述远程 客户端的连接请求, 则将所述紧急故障探查线程返回到休眠状态。
10: 如权利要求 7 所述的模块, 其特征在于 : 所述连接单元在建立所述紧急故障探查线程与所述远程客户端之间的连接之后还用 于, 对所述远程客户端进行验证。
11: 如权利要求 7 所述的模块, 其特征在于 : 所述命令子模块根据所述远程客户端的命令请求探查系统信息时, 是从 proc 文件系 统中读取系统信息, 或从内核中读取系统信息, 所述系统信息包括 : 进程信息、 内存信息和 虚拟内存信息 ; 或者, 获取 Linux 操作系统上的文件内容信息。

说明书


一种紧急探查系统信息的方法及模块

    技术领域 本发明涉及系统故障检测技术, 特别是涉及一种在 Linux 操作系统故障时的紧急 探查系统信息的方法及模块。
     背景技术 随着 Linux 企业应用的成熟, Linux 已被广泛应用于服务器领域, 并且随着 Linux 上业务应用的不断增加, 需要 Linux 提供更加稳定、 可靠及高效的系统服务以保证业务的 连续运行。即使是在 Linux 出现故障 ( 特别是系统挂起、 用户输入无响应, 但内核还在正常 运行 ) 时, 也应保证其上运行业务的不间断运行。因此需要提供一种技术来在线对 Linux 出现此类故障时进行实时的在线分析、 定位及修复, 以保证在不停止其上运行业务的情况 下实时的在线修复此类故障。
     目前的解决方法一般有以下几种 :
     (1) 一种是通过在 Linux 的本地终端登陆, 然后进行实时在线的故障处理。 但是这 种方法的缺点是在 Linux 出现故障且本地终端不可用时, 将无法完成故障的处理。
     (2) 另一种是使用远程工具登陆发生故障的 Linux, 然后通过登录终端进行实时 的在线故障处理。但这种方法的缺点是当 Linux 出现故障且网络可用, 而提供远程登陆的 服务因无法获得系统调度时, 将导致远程工具无法正常登陆来完成故障的处理。
     (3) 另外就是利用 SysRq(System Request) 键来排除和诊断系统故障, 通过它提 供的一些指令能够在系统挂起的情况下获取系统当前的信息, 如 CPU、 内存及进程等, 即通 过 SysRq 键提供的指令直接请求内核的响应, 并将结果以日志的方式记录在相关日志文件 里, 从而在 Linux 用户态无法提供正常功能的情况下获取系统的当前信息。但这种方法的 缺点是在执行完 SysRq 键提供的指令后, 需要重新启动出现故障的 Linux 才能查看诊断的 日志结果, 从而导致 Linux 其上运行的业务中断而不能对外提供正常的业务。
     发明内容 本发明要解决的技术问题是提供一种紧急探查系统信息的方法及装置, 以实现在 故障发生时, 不关机重启 Linux, 即保证运行其上的业务的正常运行, 就能完成在线收集系 统当前运行信息、 分析故障原因、 实施在线修复措施的紧急探查方法。
     为了解决上述技术问题, 本发明提供了一种紧急探查系统信息的方法, 应用于 Linux 操作系统, 包括 :
     在 Linux 操作系统初始化时, 将紧急故障探查程序加载到内核, 创建紧急故障探 查线程 ;
     接收到预定功能键的按键消息后, 触发所述紧急故障探查线程监听远程客户端的 连接请求 ;
     所述紧急故障探查线程监听到远程客户端的连接请求后, 与所述远程客户端建立 连接, 根据所述远程客户端的命令请求探查系统信息, 并将探查到的系统信息发送给所述
     远程客户端。
     进一步地, 上述方法还具有下面特点 : 所述紧急故障探查线程监听远程客户端的 连接请求的步骤包括 :
     所述紧急故障探查线程创建网络监听套接字 (Socket), 绑定监听地址和端口, 然 后开始监听所述远程客户端的连接请求。
     进一步地, 上述方法还具有下面特点 : 所述紧急故障探查线程监听远程客户端的 连接请求的步骤还包括 :
     所述紧急故障探查线程若在预定时间内未监听到所述远程客户端的连接请求, 则 返回到休眠状态。
     进一步地, 上述方法还具有下面特点 : 所述紧急故障探查线程与所述远程客户端 建立连接的步骤之后, 所述方法还包括 :
     所述紧急故障探查线程对所述远程客户端进行验证。
     进一步地, 上述方法还具有下面特点 : 所述探查系统信息包括 :
     从 proc 文件系统中读取系统信息, 或从内核中读取系统信息, 所述系统信息包 括: 进程信息、 内存信息和虚拟内存信息 ; 或
     获取 Linux 操作系统上的文件内容信息。
     进一步地, 上述方法还具有下面特点 : 所述预定功能键为系统请求 (SysRq) 组合 键。
     为了解决上述问题, 本发明还提供了一种紧急探查系统信息模块, 应用于 Linux 操作系统, 其特征在于, 包括 : 主控子模块和命令子模块, 其中,
     所述主控子模块包括 :
     初始化单元, 用于在 Linux 操作系统初始化时, 将紧急故障探查程序加载到内核, 创建紧急故障探查线程 ;
     触发单元, 基于紧急故障探查线程实现, 用于接收到预定功能键的按键消息后, 触 发监听单元 ;
     所述监听单元, 基于紧急故障探查线程实现, 用于通过所述紧急故障探查线程监 听远程客户端的连接请求 ;
     连接单元, 基于紧急故障探查线程实现, 用于在所述紧急故障探查线程监听到远 程客户端的连接请求后, 建立所述紧急故障探查线程与所述远程客户端之间的连接, 将所 述远程客户端的命令请求发送给所述命令模块 ;
     所述命令子模块, 基于紧急故障探查线程实现, 用于根据所述远程客户端的命令 请求探查系统信息, 并将探查到的系统信息发送给所述远程客户端。
     进一步地, 上述模块还具有下面特点 :
     所述监听单元通过所述紧急故障探查线程监听远程客户端的连接请求时, 是通过 所述紧急故障探查线程创建网络监听套接字 (Socket), 绑定监听地址和端口, 然后开始监 听所述远程客户端的连接请求。
     进一步地, 上述模块还具有下面特点 :
     所述监听单元, 还用于若判断所述紧急故障探查线程在预定时间内未监听到所述 远程客户端的连接请求, 则将所述紧急故障探查线程返回到休眠状态。进一步地, 上述模块还具有下面特点 :
     所述连接单元在建立所述紧急故障探查线程与所述远程客户端之间的连接之后 还用于, 对所述远程客户端进行验证。
     进一步地, 上述模块还具有下面特点 :
     所述命令子模块根据所述远程客户端的命令请求探查系统信息时, 是从 proc 文 件系统中读取系统信息, 或从内核中读取系统信息, 所述系统信息包括 : 进程信息、 内存信 息和虚拟内存信息 ; 或者, 获取 Linux 操作系统上的文件内容信息。
     综上, 本发明提供一种紧急探查系统信息的方法及模块, 通过扩展 SysRq 键功能, 将实现直接植入内核, 以在 Linux 系统出现故障 ( 特别是系统挂起、 用户输入无响应, 但内 核还在正常运行 ) 时提供不关机重启的状态下, 提供故障 Linux 系统的信息, 例如, 进程信 息、 内存信息、 虚拟内存信息及文件内容查看功能等, 以进行故障分析、 定位及修复。 附图说明
     图 1 为本发明实施例的紧急探查系统信息模块的示意图 ; 图 2 是本发明实施例的主控子模块的示意图 ; 图 3 为本发明实施例的紧急探查系统信息的方法的流程图 ; 图 4 为本发明实施例的实现 esh 线程状态机的示意图 ; 图 5 为本发明实施例的直接从内核获取进程信息的示意图 ; 图 6 为本发明实施例的直接从内核获取内存信息的示意图 ; 图 7 为本发明实施例的直接从内核获取虚拟内存信息的示意图 ; 图 8 为本发明实施例的直接从 proc 文件系统获取进程信息的示意图 ; 图 9 为本发明实施例的直接从 proc 文件系统获取内存信息的示意图 ; 图 10 为本发明实施例的直接从 proc 文件系统获取虚拟内存信息的示意图。具体实施方式
     本发明的主要是设计一个扩展 SysRq 键功能, 运行于内核, 基于优先级应用于 Linux 系统的用于紧急探查系统信息的内核支持模块, 简称 esh(Emergency Shell, 紧急 Shell, 本发明中也称为紧急探查系统信息模块 )。
     下面结合附图及实施例对本发明的技术方案进行更详细的说明。
     图 1 为本发明实施例的紧急探查系统信息模块的示意图, 如图 1 所示, 本实施例的 紧急探查系统信息模块主要包含三个子模块 :
     主控子模块, 主要用于实现 esh 的线程状态机、 对模块启动、 连接建立、 密码验证、 命令执行等过程进行控制 ;
     命令子模块, 主要用于实现 esh 所支持的全部用户命令, 根据主控子模块的分发 的用户命令执行相应的命令, 并将命令结果返回给客户端 ;
     网络子模块, 主要用于向主控子模块和命令子模块提供网络服务支持, 对所需的 Linux 内核网络服务进行统一的接口封装。
     具体地, 如图 2 所示, 本实施例中的主控子模块可以包括 : 初始化单元、 触发单元、 监听单元和连接单元, 其中,初始化单元, 用于在 Linux 操作系统初始化时, 将紧急故障探查程序加载到内核, 创建紧急故障探查线程, 然后将该紧急故障探查线程置为休眠状态 ;
     触发单元, 基于紧急故障探查线程实现, 用于接收到预定功能键的按键消息后, 触 发监听单元 ;
     所述监听单元, 基于紧急故障探查线程实现, 用于通过所述紧急故障探查线程监 听远程客户端的连接请求 ;
     连接单元, 基于紧急故障探查线程实现, 用于在所述紧急故障探查线程监听到远 程客户端的连接请求后, 建立所述紧急故障探查线程与所述远程客户端之间的连接, 将所 述远程客户端的命令请求发送给所述命令模块 ;
     所述命令子模块, 基于紧急故障探查线程实现, 用于根据所述远程客户端的命令 请求探查系统信息, 并将探查到的系统信息发送给所述远程客户端。
     这样, 本发明实施例的紧急探查系统信息模块能够在故障发生时, 不关机重启 Linux, 即保证运行其上的业务的正常运行, 就能完成在线收集系统当前运行信息、 分析故 障原因、 实施在线修复措施。
     具体地, 所述监听单元通过所述紧急故障探查线程监听远程客户端的连接请求 时, 是通过所述紧急故障探查线程创建网络监听套接字 (Socket), 绑定监听地址和端口, 然 后开始监听所述远程客户端的连接请求。 所述监听单元还可用于若判断所述紧急故障探查线程在预定时间内未监听到所 述远程客户端的连接请求, 则将所述紧急故障探查线程返回到休眠状态。
     进一步地, 所述连接单元在建立所述紧急故障探查线程与所述远程客户端之间的 连接之后还用于, 对所述远程客户端进行验证, 以保证在远程客户端在获得 esh 的合法授 权后, 再接受远程客户端的命令, 以保证操作的安全性。
     进一步地, 所述命令子模块根据所述远程客户端的命令请求探查系统信息时, 是 从 proc 文件系统中读取系统信息, 或从内核中读取系统信息, 所述系统信息包括 : 进程信 息、 内存信息和虚拟内存信息 ; 或者, 获取 Linux 操作系统上的文件内容信息。
     本发明实施例中, 命令子模块既可以直接读取内核中的数据 ( 如图 5、 图 6、 图 7), 也可以直接读取 /proc 文件系统中的数据 ( 如图 8、 图 9、 图 10)。执行命令时优先选择从 /proc 文件系统中读取数据, 但考虑到 /proc 文件系统存在无法使用的可能, 一旦出现这种 情况, 命令将自动切换到直接从内核读取数据。
     具体地, 在 Linux 出现故障 ( 特别是系统挂起、 用户输入无响应, 但内核还在正常 运行 ) 时, 本发明实施例能够提供故障 Linux 的以下信息 :
     (1) 进程信息 : 进程所属的用户、 进程 ID、 进程占用的 CPU 使用率、 进程占用的内存 使用率、 进程占用的虚拟内存大小、 进程占用的内存大小、 进程的当前运行状态、 创建该进 程的命令字符串等 ;
     (2) 内存信息 : 物理内存总量、 已分配内存大小、 未被分配的内存大小、 共享内存 大小、 系统分配但未被使用的缓存区大小、 系统分配但未被使用的高速缓存大小等 ;
     (3) 虚拟内存 : 运行和等待 CPU 时间片的进程数、 在等待资源的进程数、 切换到内 存交换区的内存数量、 当前空闲页面列表中内存数量、 作为缓存区高速缓存的内存数量、 作 为页面高速缓存的内存数量、 由内存进入内存交换区数量、 由内存交换区进入内存数量、 从
     块设备读入数据的总量、 块设备写入数据的总量、 某一时间间隔中观测到的每秒设备中断 数、 每秒产生的上下文切换次数、 用户模式下所花费 CPU 时间的百分比、 内核进程所花费的 CPU 时间的百分比、 IO 等待所占用的 CPU 时间的百分比、 CPU 处在空闲状态的时间百分比、 运行虚拟机的时间内执行其他任务的时间百分比等。
     (4) 文件内容查看 : 通过本发明实施例中的文件查看命令可以直接查看故障 Linux 上的文件内容, 以查看更详细的日志信息, 如运行过程产生的日志。
     图 3 为本发明实施例的紧急探查系统信息的方法的流程图, 如图 3 所示, 本实施例 的方法应用于 Linux 操作系统, 可以包括下面步骤 :
     S10、 在 Linux 操作系统初始化时, 将紧急故障探查程序加载到内核, 创建紧急故 障探查线程, 然后将该紧急故障探查线程置为休眠状态 ;
     具体地, 在操作系统初始化时, 首先将 esh 加载到内核, 以内核模块的方式运行于 操作系统内, 并完成 esh 线程的创建。当创建 esh 线程时, 先将 esh 线程置为休眠状态, 并 在系统正常运行期间一直保持休眠状态。
     S20、 接收到预定功能键的按键消息后, 触发所述紧急故障探查线程监听远程客户 端的连接请求 ; 具体地, 在操作系统运行的过程中需要启用 esh 线程时, 通过使用 SysRq 组合键唤 醒 esh 线程, 使之开始监听指定的网络端口 ( 例如, 网络端口 9132), 并等待客户端程序的连 接请求。
     具体地, esh 线程创建网络监听套接字 (Socket), 绑定监听地址和端口, 然后开始 监听所述远程客户端的连接请求。
     进一步地, esh 线程若在预定时间内未监听到所述远程客户端的连接请求, 则返回 到休眠状态。
     S30、 所述紧急故障探查线程监听到远程客户端的连接请求后, 与所述远程客户端 建立连接, 根据所述远程客户端的命令请求探查系统信息, 并将探查到的系统信息发送给 所述远程客户端。
     具体地, 管理员可以使用 telnet 客户端远程连接到 esh, 以建立远程客户端与 esh 的通信链路, 然后输入 esh 的授权用户名及密码。远程客户端在获得 esh 的合法授权后, 可 以向 esh 发送指定的命令请求, 以获得系统的当前运行状态、 故障的在线定位及修复等。
     本发明实施例的紧急探查系统信息的方法通过扩展 SysRq 键功能, 将实现直接植 入内核, 以在 Linux 出现故障 ( 特别是系统挂起、 用户输入无响应, 但内核还在正常运行 ) 时提供不关机重启 Linux 状态下提供故障 Linux 的进程信息、 内存信息、 虚拟内存信息及文 件内容查看功能等, 以进行故障分析、 定位及修复。
     图 4 为本发明实施例的实现 esh 线程状态机的示意图, 如图 4 所示, 本实施例的主 控子模块实现的 esh 线程状态机可以分为四种状态 :
     一是休眠 (SLEEP) 状态 : esh 线程被创建并进行相应的初始化设置之后处于该 SLEEP 状态 ;
     二是连接 (CONNECT) 状态 : 处于 SLEEP 状态的 esh 线程被 SysRq 组合键唤醒之后 即处于该 CONNECT 状态, esh 线程将在该 CONNECT 状态中等待客户端的连接请求。 如果连接 失败或者在 10 分钟之内没有收到客户端的连接请求, esh 线程将重新返回到 SLEEP 状态 ;
     三是验证 (PASSWD) 状态 : esh 线程和客户端之间的连接成功建立后即处于该 PASSWD 状态, esh 线程将在该 PASSWD 状态中等待用户输入密码并加以验证, 若用户在预定 次数 ( 例如 3 次 ) 之内未能输入正确的密码, 或者用户在这个过程中超过 30 分钟没有任何 操作, esh 线程将重新返回到 SLEEP 状态 ;
     四是命令 (COMMAND) 状态 : 指用户通过验证后 esh 线程所处的状态, esh 线程将在 该 COMMAND 状态中以无限循环的方式等待用户输入命令, 随后执行用户的命令并将结果返 回给用户, 然后等待用户输入下一条命令。但是用户一旦输入 exit 命令或用户在预定时间 ( 例如 30 分钟 ) 内没有任何操作, esh 线程将重新返回到 SLEEP 状态。
     如图 4 所示, esh 线程一旦进入 CONNECT 状态就开始启动建立网络连接的过程 : 首 先创建网络监听套接字 (socket), 绑定监听地址和端口 ; 完成地址和端口的绑定后, 就开 始监听来自客户端的连接请求。
     同时本发明实施例在监听过程中引入了超时机制, 例如, 如果监听 socket 在 10 分钟内没有任何输入数据, esh 线程将离开 CONNECT 状态, 重新返回到 SLEEP 状态 ; 如果 在 10 分钟内收到了来自客户端的连接请求, esh 线程将执行建立连接的操作, 得到已连 接的 socket, 以供后续数据交互使用, 从而完成整个连接的建立过程, 而 esh 线程也将从 CONNECT 状态迁移到 PASSWD 状态。
     图 5 为本发明实施例的直接从内核获取进程信息的示意图, 如图 5 所示, 本实施例 的命令子模块直接从内核中获取进程信息的步骤如下 :
     (1) 遍历内核中的任务链表 ;
     (2) 获取每个任务的 task_struct 结构体 ;
     (3) 从每个任务的 task_struct 结构体中获取与进程相关的信息 ;
     (4) 对获取的与进程相关的信息进行处理, 并返回给用户。
     获取与进程相关的信息可以包括 : 例 如, 进 程 的 当 前 运 行 状 态 (STAT)、 进程 ID(PID)、 进程占用的 CPU 使用率 (% CPU)、 进程占用的内存使用率 (% MEN)、 进程占用的虚 拟内存大小 (VSZ)、 进程占用的内存大小 (RSS)、 进程所属的用户 (UESR)、 创建该进程的命 令字符串 (COMMAND)。
     图 6 为本发明实施例的直接从内核获取内存信息的示意图, 如图 6 所示, 本实施例 的命令子模块直接从内核中获取内存信息的步骤如下 :
     (1) 初始化 sysinfo 结构体 ;
     (2) 填充 sysinfo 结构体 ;
     (3) 从 sysinfo 结构体获取与内存相关的信息 ;
     (4) 对获取的与内存相关的信息进行处理, 并返回给用户。
     获取与内存相关的信息可以包括 : 物 理 内 存 总 量 (total)、 已分配内存大小 (used)、 未被分配的内存大小 (free)、 共享内存大小 (shared)、 系统分配但未被使用的缓 存区大小 (buffers)、 系统分配但未被使用的高速缓存大小 (cached) 等 ;
     图 7 为本发明实施例的直接从内核获取虚拟内存信息的示意图, 如图 7 所示, 本实 施例的命令子模块直接从内核中获取虚拟内存信息的步骤如下 :
     (1) 从 CPU 的运行队列中获取与虚拟内存信息相关的结构体信息 ;
     (2) 从获取的结构体信息中获取与虚拟内存相关的原始数据 ;(3) 对获取的与虚拟内存相关的信息进行处理, 并返回给用户。
     本实施例中获取与虚拟内存相关的原始数据可以包括 : 运行和等待 CPU 时间片的 进程数 (r)、 在等待资源的进程数 (b)、 切换到内存交换区的内存数量 (swpd)、 当前空闲页 面列表中内存数量 (free)、 作为缓存区高速缓存的内存数量 (buff)、 作为页面高速缓存的 内存数量 (cache)、 由内存进入内存交换区数量 (si)、 由内存交换区进入内存数量 (so)、 从 块设备读入数据的总量 (bi)、 块设备写入数据的总量 (bo)、 某一时间间隔中观测到的每秒 设备中断数 (in)、 每秒产生的上下文切换次数 (cs)、 用户模式下所花费 CPU 时间的百分比 (us)、 内核进程所花费的 CPU 时间的百分比 (sy)、 IO 等待所占用的 CPU 时间的百分比 (id)、 CPU 处在空闲状态的时间百分比 (wa)、 运行虚拟机的时间内执行其他任务的时间百分比 (st) 等。
     图 8 为本发明实施例的直接从 proc 文件系统获取进程信息的示意图, 如图 8 所 示, USER 及 PID 的值是从 /proc/pid/status 文件中获取 ; % CPU 及 STAT 的值是从 /proc/ pid/stat 文件中获取 ; % MEM、 VSZ 及 RSS 的值是从 /proc/pid/statm 文件获取 ; COMMAD 的 值是从 /proc/pid/cmdline 中获取。
     图 9 为本发明实施例的直接从 proc 文件系统获取内存信息的示意图, 如图 9 所 示, total、 free、 buffers、 cached 的值均从 /proc/meminfo 中获取, 并且 used 的值等于 total 的值减去 free 的值。 图 10 为本发明实施例的直接从 proc 文件系统获取虚拟内存信息的示意图, 如图 10 所示, 给出了命令子模块中直接从 proc 中获取虚拟内存信息的关系图 : r 及 b 的值是从 /proc/pid/stat 文件中获取 ; si、 so、 bi、 bo、 in、 cs、 us、 sy、 id、 wa 及 st 的值是从 /proc/ stat 文件中获取 ; swpd、 free、 buff 及 cache 的值是从 /proc/meminfo 文件中获取。
     本领域普通技术人员可以理解上述方法中的全部或部分步骤可通过程序来指令 相关硬件完成, 所述程序可以存储于计算机可读存储介质中, 如只读存储器、 磁盘或光盘 等。可选地, 上述实施例的全部或部分步骤也可以使用一个或多个集成电路来实现。相应 地, 上述实施例中的各模块 / 单元可以采用硬件的形式实现, 也可以采用软件功能模块的 形式实现。本发明不限制于任何特定形式的硬件和软件的结合。
     以上仅为本发明的优选实施例, 当然, 本发明还可有其他多种实施例, 在不背离本 发明精神及其实质的情况下, 熟悉本领域的技术人员当可根据本发明作出各种相应的改变 和变形, 但这些相应的改变和变形都应属于本发明所附的权利要求的保护范围。
    

一种紧急探查系统信息的方法及模块.pdf_第1页
第1页 / 共16页
一种紧急探查系统信息的方法及模块.pdf_第2页
第2页 / 共16页
一种紧急探查系统信息的方法及模块.pdf_第3页
第3页 / 共16页
点击查看更多>>
资源描述

《一种紧急探查系统信息的方法及模块.pdf》由会员分享,可在线阅读,更多相关《一种紧急探查系统信息的方法及模块.pdf(16页珍藏版)》请在专利查询网上搜索。

1、10申请公布号CN102314382A43申请公布日20120111CN102314382ACN102314382A21申请号201010219920422申请日20100706G06F11/07200601H04L29/0820060171申请人中兴通讯股份有限公司地址518057广东省深圳市南山区高新技术产业园科技南路中兴通讯大厦法务部72发明人阳广元74专利代理机构北京安信方达知识产权代理有限公司11262代理人李健龙洪54发明名称一种紧急探查系统信息的方法及模块57摘要本发明提供一种紧急探查系统信息的方法及模块,该方法应用于LINUX操作系统,包括在LINUX操作系统初始化时,将紧急故。

2、障探查程序加载到内核,创建紧急故障探查线程;接收到预定功能键的按键消息后,触发所述紧急故障探查线程监听远程客户端的连接请求;所述紧急故障探查线程监听到远程客户端的连接请求后,与所述远程客户端建立连接,根据所述远程客户端的命令请求探查系统信息,并将探查到的系统信息发送给所述远程客户端。本发明通过扩展SYSRQ键功能,实现直接植入内核,以在LINUX系统出现故障时提供不关机重启的状态下,提供故障LINUX系统的信息。51INTCL19中华人民共和国国家知识产权局12发明专利申请权利要求书2页说明书7页附图6页CN102314386A1/2页21一种紧急探查系统信息的方法,应用于LINUX操作系统,。

3、包括在LINUX操作系统初始化时,将紧急故障探查程序加载到内核,创建紧急故障探查线程;接收到预定功能键的按键消息后,触发所述紧急故障探查线程监听远程客户端的连接请求;所述紧急故障探查线程监听到远程客户端的连接请求后,与所述远程客户端建立连接,根据所述远程客户端的命令请求探查系统信息,并将探查到的系统信息发送给所述远程客户端。2如权利要求1所述的方法,其特征在于所述紧急故障探查线程监听远程客户端的连接请求的步骤包括所述紧急故障探查线程创建网络监听套接字SOCKET,绑定监听地址和端口,然后开始监听所述远程客户端的连接请求。3如权利要求1或2所述的方法,其特征在于所述紧急故障探查线程监听远程客户端。

4、的连接请求的步骤还包括所述紧急故障探查线程若在预定时间内未监听到所述远程客户端的连接请求,则返回到休眠状态。4如权利要求1所述的方法,其特征在于所述紧急故障探查线程与所述远程客户端建立连接的步骤之后,所述方法还包括所述紧急故障探查线程对所述远程客户端进行验证。5如权利要求1或2或4所述的方法,其特征在于所述探查系统信息包括从PROC文件系统中读取系统信息,或从内核中读取系统信息,所述系统信息包括进程信息、内存信息和虚拟内存信息;或获取LINUX操作系统上的文件内容信息。6如权利要求1所述的方法,其特征在于所述预定功能键为系统请求SYSRQ组合键。7一种紧急探查系统信息模块,应用于LINUX操作。

5、系统,其特征在于,包括主控子模块和命令子模块,其中,所述主控子模块包括初始化单元,用于在LINUX操作系统初始化时,将紧急故障探查程序加载到内核,创建紧急故障探查线程;触发单元,基于紧急故障探查线程实现,用于接收到预定功能键的按键消息后,触发监听单元;所述监听单元,基于紧急故障探查线程实现,用于通过所述紧急故障探查线程监听远程客户端的连接请求;连接单元,基于紧急故障探查线程实现,用于在所述紧急故障探查线程监听到远程客户端的连接请求后,建立所述紧急故障探查线程与所述远程客户端之间的连接,将所述远程客户端的命令请求发送给所述命令模块;所述命令子模块,基于紧急故障探查线程实现,用于根据所述远程客户端。

6、的命令请求探查系统信息,并将探查到的系统信息发送给所述远程客户端。权利要求书CN102314382ACN102314386A2/2页38如权利要求7所述的模块,其特征在于所述监听单元通过所述紧急故障探查线程监听远程客户端的连接请求时,是通过所述紧急故障探查线程创建网络监听套接字SOCKET,绑定监听地址和端口,然后开始监听所述远程客户端的连接请求。9如权利要求7或8所述的模块,其特征在于所述监听单元,还用于若判断所述紧急故障探查线程在预定时间内未监听到所述远程客户端的连接请求,则将所述紧急故障探查线程返回到休眠状态。10如权利要求7所述的模块,其特征在于所述连接单元在建立所述紧急故障探查线程与。

7、所述远程客户端之间的连接之后还用于,对所述远程客户端进行验证。11如权利要求7所述的模块,其特征在于所述命令子模块根据所述远程客户端的命令请求探查系统信息时,是从PROC文件系统中读取系统信息,或从内核中读取系统信息,所述系统信息包括进程信息、内存信息和虚拟内存信息;或者,获取LINUX操作系统上的文件内容信息。权利要求书CN102314382ACN102314386A1/7页4一种紧急探查系统信息的方法及模块技术领域0001本发明涉及系统故障检测技术,特别是涉及一种在LINUX操作系统故障时的紧急探查系统信息的方法及模块。背景技术0002随着LINUX企业应用的成熟,LINUX已被广泛应用于。

8、服务器领域,并且随着LINUX上业务应用的不断增加,需要LINUX提供更加稳定、可靠及高效的系统服务以保证业务的连续运行。即使是在LINUX出现故障特别是系统挂起、用户输入无响应,但内核还在正常运行时,也应保证其上运行业务的不间断运行。因此需要提供一种技术来在线对LINUX出现此类故障时进行实时的在线分析、定位及修复,以保证在不停止其上运行业务的情况下实时的在线修复此类故障。0003目前的解决方法一般有以下几种00041一种是通过在LINUX的本地终端登陆,然后进行实时在线的故障处理。但是这种方法的缺点是在LINUX出现故障且本地终端不可用时,将无法完成故障的处理。00052另一种是使用远程工。

9、具登陆发生故障的LINUX,然后通过登录终端进行实时的在线故障处理。但这种方法的缺点是当LINUX出现故障且网络可用,而提供远程登陆的服务因无法获得系统调度时,将导致远程工具无法正常登陆来完成故障的处理。00063另外就是利用SYSRQSYSTEMREQUEST键来排除和诊断系统故障,通过它提供的一些指令能够在系统挂起的情况下获取系统当前的信息,如CPU、内存及进程等,即通过SYSRQ键提供的指令直接请求内核的响应,并将结果以日志的方式记录在相关日志文件里,从而在LINUX用户态无法提供正常功能的情况下获取系统的当前信息。但这种方法的缺点是在执行完SYSRQ键提供的指令后,需要重新启动出现故障。

10、的LINUX才能查看诊断的日志结果,从而导致LINUX其上运行的业务中断而不能对外提供正常的业务。发明内容0007本发明要解决的技术问题是提供一种紧急探查系统信息的方法及装置,以实现在故障发生时,不关机重启LINUX,即保证运行其上的业务的正常运行,就能完成在线收集系统当前运行信息、分析故障原因、实施在线修复措施的紧急探查方法。0008为了解决上述技术问题,本发明提供了一种紧急探查系统信息的方法,应用于LINUX操作系统,包括0009在LINUX操作系统初始化时,将紧急故障探查程序加载到内核,创建紧急故障探查线程;0010接收到预定功能键的按键消息后,触发所述紧急故障探查线程监听远程客户端的连。

11、接请求;0011所述紧急故障探查线程监听到远程客户端的连接请求后,与所述远程客户端建立连接,根据所述远程客户端的命令请求探查系统信息,并将探查到的系统信息发送给所述说明书CN102314382ACN102314386A2/7页5远程客户端。0012进一步地,上述方法还具有下面特点所述紧急故障探查线程监听远程客户端的连接请求的步骤包括0013所述紧急故障探查线程创建网络监听套接字SOCKET,绑定监听地址和端口,然后开始监听所述远程客户端的连接请求。0014进一步地,上述方法还具有下面特点所述紧急故障探查线程监听远程客户端的连接请求的步骤还包括0015所述紧急故障探查线程若在预定时间内未监听到所。

12、述远程客户端的连接请求,则返回到休眠状态。0016进一步地,上述方法还具有下面特点所述紧急故障探查线程与所述远程客户端建立连接的步骤之后,所述方法还包括0017所述紧急故障探查线程对所述远程客户端进行验证。0018进一步地,上述方法还具有下面特点所述探查系统信息包括0019从PROC文件系统中读取系统信息,或从内核中读取系统信息,所述系统信息包括进程信息、内存信息和虚拟内存信息;或0020获取LINUX操作系统上的文件内容信息。0021进一步地,上述方法还具有下面特点所述预定功能键为系统请求SYSRQ组合键。0022为了解决上述问题,本发明还提供了一种紧急探查系统信息模块,应用于LINUX操作。

13、系统,其特征在于,包括主控子模块和命令子模块,其中,0023所述主控子模块包括0024初始化单元,用于在LINUX操作系统初始化时,将紧急故障探查程序加载到内核,创建紧急故障探查线程;0025触发单元,基于紧急故障探查线程实现,用于接收到预定功能键的按键消息后,触发监听单元;0026所述监听单元,基于紧急故障探查线程实现,用于通过所述紧急故障探查线程监听远程客户端的连接请求;0027连接单元,基于紧急故障探查线程实现,用于在所述紧急故障探查线程监听到远程客户端的连接请求后,建立所述紧急故障探查线程与所述远程客户端之间的连接,将所述远程客户端的命令请求发送给所述命令模块;0028所述命令子模块,。

14、基于紧急故障探查线程实现,用于根据所述远程客户端的命令请求探查系统信息,并将探查到的系统信息发送给所述远程客户端。0029进一步地,上述模块还具有下面特点0030所述监听单元通过所述紧急故障探查线程监听远程客户端的连接请求时,是通过所述紧急故障探查线程创建网络监听套接字SOCKET,绑定监听地址和端口,然后开始监听所述远程客户端的连接请求。0031进一步地,上述模块还具有下面特点0032所述监听单元,还用于若判断所述紧急故障探查线程在预定时间内未监听到所述远程客户端的连接请求,则将所述紧急故障探查线程返回到休眠状态。说明书CN102314382ACN102314386A3/7页60033进一步。

15、地,上述模块还具有下面特点0034所述连接单元在建立所述紧急故障探查线程与所述远程客户端之间的连接之后还用于,对所述远程客户端进行验证。0035进一步地,上述模块还具有下面特点0036所述命令子模块根据所述远程客户端的命令请求探查系统信息时,是从PROC文件系统中读取系统信息,或从内核中读取系统信息,所述系统信息包括进程信息、内存信息和虚拟内存信息;或者,获取LINUX操作系统上的文件内容信息。0037综上,本发明提供一种紧急探查系统信息的方法及模块,通过扩展SYSRQ键功能,将实现直接植入内核,以在LINUX系统出现故障特别是系统挂起、用户输入无响应,但内核还在正常运行时提供不关机重启的状态。

16、下,提供故障LINUX系统的信息,例如,进程信息、内存信息、虚拟内存信息及文件内容查看功能等,以进行故障分析、定位及修复。附图说明0038图1为本发明实施例的紧急探查系统信息模块的示意图;0039图2是本发明实施例的主控子模块的示意图;0040图3为本发明实施例的紧急探查系统信息的方法的流程图;0041图4为本发明实施例的实现ESH线程状态机的示意图;0042图5为本发明实施例的直接从内核获取进程信息的示意图;0043图6为本发明实施例的直接从内核获取内存信息的示意图;0044图7为本发明实施例的直接从内核获取虚拟内存信息的示意图;0045图8为本发明实施例的直接从PROC文件系统获取进程信息。

17、的示意图;0046图9为本发明实施例的直接从PROC文件系统获取内存信息的示意图;0047图10为本发明实施例的直接从PROC文件系统获取虚拟内存信息的示意图。具体实施方式0048本发明的主要是设计一个扩展SYSRQ键功能,运行于内核,基于优先级应用于LINUX系统的用于紧急探查系统信息的内核支持模块,简称ESHEMERGENCYSHELL,紧急SHELL,本发明中也称为紧急探查系统信息模块。0049下面结合附图及实施例对本发明的技术方案进行更详细的说明。0050图1为本发明实施例的紧急探查系统信息模块的示意图,如图1所示,本实施例的紧急探查系统信息模块主要包含三个子模块0051主控子模块,主。

18、要用于实现ESH的线程状态机、对模块启动、连接建立、密码验证、命令执行等过程进行控制;0052命令子模块,主要用于实现ESH所支持的全部用户命令,根据主控子模块的分发的用户命令执行相应的命令,并将命令结果返回给客户端;0053网络子模块,主要用于向主控子模块和命令子模块提供网络服务支持,对所需的LINUX内核网络服务进行统一的接口封装。0054具体地,如图2所示,本实施例中的主控子模块可以包括初始化单元、触发单元、监听单元和连接单元,其中,说明书CN102314382ACN102314386A4/7页70055初始化单元,用于在LINUX操作系统初始化时,将紧急故障探查程序加载到内核,创建紧急。

19、故障探查线程,然后将该紧急故障探查线程置为休眠状态;0056触发单元,基于紧急故障探查线程实现,用于接收到预定功能键的按键消息后,触发监听单元;0057所述监听单元,基于紧急故障探查线程实现,用于通过所述紧急故障探查线程监听远程客户端的连接请求;0058连接单元,基于紧急故障探查线程实现,用于在所述紧急故障探查线程监听到远程客户端的连接请求后,建立所述紧急故障探查线程与所述远程客户端之间的连接,将所述远程客户端的命令请求发送给所述命令模块;0059所述命令子模块,基于紧急故障探查线程实现,用于根据所述远程客户端的命令请求探查系统信息,并将探查到的系统信息发送给所述远程客户端。0060这样,本发。

20、明实施例的紧急探查系统信息模块能够在故障发生时,不关机重启LINUX,即保证运行其上的业务的正常运行,就能完成在线收集系统当前运行信息、分析故障原因、实施在线修复措施。0061具体地,所述监听单元通过所述紧急故障探查线程监听远程客户端的连接请求时,是通过所述紧急故障探查线程创建网络监听套接字SOCKET,绑定监听地址和端口,然后开始监听所述远程客户端的连接请求。0062所述监听单元还可用于若判断所述紧急故障探查线程在预定时间内未监听到所述远程客户端的连接请求,则将所述紧急故障探查线程返回到休眠状态。0063进一步地,所述连接单元在建立所述紧急故障探查线程与所述远程客户端之间的连接之后还用于,对。

21、所述远程客户端进行验证,以保证在远程客户端在获得ESH的合法授权后,再接受远程客户端的命令,以保证操作的安全性。0064进一步地,所述命令子模块根据所述远程客户端的命令请求探查系统信息时,是从PROC文件系统中读取系统信息,或从内核中读取系统信息,所述系统信息包括进程信息、内存信息和虚拟内存信息;或者,获取LINUX操作系统上的文件内容信息。0065本发明实施例中,命令子模块既可以直接读取内核中的数据如图5、图6、图7,也可以直接读取/PROC文件系统中的数据如图8、图9、图10。执行命令时优先选择从/PROC文件系统中读取数据,但考虑到/PROC文件系统存在无法使用的可能,一旦出现这种情况,。

22、命令将自动切换到直接从内核读取数据。0066具体地,在LINUX出现故障特别是系统挂起、用户输入无响应,但内核还在正常运行时,本发明实施例能够提供故障LINUX的以下信息00671进程信息进程所属的用户、进程ID、进程占用的CPU使用率、进程占用的内存使用率、进程占用的虚拟内存大小、进程占用的内存大小、进程的当前运行状态、创建该进程的命令字符串等;00682内存信息物理内存总量、已分配内存大小、未被分配的内存大小、共享内存大小、系统分配但未被使用的缓存区大小、系统分配但未被使用的高速缓存大小等;00693虚拟内存运行和等待CPU时间片的进程数、在等待资源的进程数、切换到内存交换区的内存数量、当。

23、前空闲页面列表中内存数量、作为缓存区高速缓存的内存数量、作为页面高速缓存的内存数量、由内存进入内存交换区数量、由内存交换区进入内存数量、从说明书CN102314382ACN102314386A5/7页8块设备读入数据的总量、块设备写入数据的总量、某一时间间隔中观测到的每秒设备中断数、每秒产生的上下文切换次数、用户模式下所花费CPU时间的百分比、内核进程所花费的CPU时间的百分比、IO等待所占用的CPU时间的百分比、CPU处在空闲状态的时间百分比、运行虚拟机的时间内执行其他任务的时间百分比等。00704文件内容查看通过本发明实施例中的文件查看命令可以直接查看故障LINUX上的文件内容,以查看更详。

24、细的日志信息,如运行过程产生的日志。0071图3为本发明实施例的紧急探查系统信息的方法的流程图,如图3所示,本实施例的方法应用于LINUX操作系统,可以包括下面步骤0072S10、在LINUX操作系统初始化时,将紧急故障探查程序加载到内核,创建紧急故障探查线程,然后将该紧急故障探查线程置为休眠状态;0073具体地,在操作系统初始化时,首先将ESH加载到内核,以内核模块的方式运行于操作系统内,并完成ESH线程的创建。当创建ESH线程时,先将ESH线程置为休眠状态,并在系统正常运行期间一直保持休眠状态。0074S20、接收到预定功能键的按键消息后,触发所述紧急故障探查线程监听远程客户端的连接请求;。

25、0075具体地,在操作系统运行的过程中需要启用ESH线程时,通过使用SYSRQ组合键唤醒ESH线程,使之开始监听指定的网络端口例如,网络端口9132,并等待客户端程序的连接请求。0076具体地,ESH线程创建网络监听套接字SOCKET,绑定监听地址和端口,然后开始监听所述远程客户端的连接请求。0077进一步地,ESH线程若在预定时间内未监听到所述远程客户端的连接请求,则返回到休眠状态。0078S30、所述紧急故障探查线程监听到远程客户端的连接请求后,与所述远程客户端建立连接,根据所述远程客户端的命令请求探查系统信息,并将探查到的系统信息发送给所述远程客户端。0079具体地,管理员可以使用TEL。

26、NET客户端远程连接到ESH,以建立远程客户端与ESH的通信链路,然后输入ESH的授权用户名及密码。远程客户端在获得ESH的合法授权后,可以向ESH发送指定的命令请求,以获得系统的当前运行状态、故障的在线定位及修复等。0080本发明实施例的紧急探查系统信息的方法通过扩展SYSRQ键功能,将实现直接植入内核,以在LINUX出现故障特别是系统挂起、用户输入无响应,但内核还在正常运行时提供不关机重启LINUX状态下提供故障LINUX的进程信息、内存信息、虚拟内存信息及文件内容查看功能等,以进行故障分析、定位及修复。0081图4为本发明实施例的实现ESH线程状态机的示意图,如图4所示,本实施例的主控子。

27、模块实现的ESH线程状态机可以分为四种状态0082一是休眠SLEEP状态ESH线程被创建并进行相应的初始化设置之后处于该SLEEP状态;0083二是连接CONNECT状态处于SLEEP状态的ESH线程被SYSRQ组合键唤醒之后即处于该CONNECT状态,ESH线程将在该CONNECT状态中等待客户端的连接请求。如果连接失败或者在10分钟之内没有收到客户端的连接请求,ESH线程将重新返回到SLEEP状态;说明书CN102314382ACN102314386A6/7页90084三是验证PASSWD状态ESH线程和客户端之间的连接成功建立后即处于该PASSWD状态,ESH线程将在该PASSWD状态中。

28、等待用户输入密码并加以验证,若用户在预定次数例如3次之内未能输入正确的密码,或者用户在这个过程中超过30分钟没有任何操作,ESH线程将重新返回到SLEEP状态;0085四是命令COMMAND状态指用户通过验证后ESH线程所处的状态,ESH线程将在该COMMAND状态中以无限循环的方式等待用户输入命令,随后执行用户的命令并将结果返回给用户,然后等待用户输入下一条命令。但是用户一旦输入EXIT命令或用户在预定时间例如30分钟内没有任何操作,ESH线程将重新返回到SLEEP状态。0086如图4所示,ESH线程一旦进入CONNECT状态就开始启动建立网络连接的过程首先创建网络监听套接字SOCKET,绑。

29、定监听地址和端口;完成地址和端口的绑定后,就开始监听来自客户端的连接请求。0087同时本发明实施例在监听过程中引入了超时机制,例如,如果监听SOCKET在10分钟内没有任何输入数据,ESH线程将离开CONNECT状态,重新返回到SLEEP状态;如果在10分钟内收到了来自客户端的连接请求,ESH线程将执行建立连接的操作,得到已连接的SOCKET,以供后续数据交互使用,从而完成整个连接的建立过程,而ESH线程也将从CONNECT状态迁移到PASSWD状态。0088图5为本发明实施例的直接从内核获取进程信息的示意图,如图5所示,本实施例的命令子模块直接从内核中获取进程信息的步骤如下00891遍历内核。

30、中的任务链表;00902获取每个任务的TASK_STRUCT结构体;00913从每个任务的TASK_STRUCT结构体中获取与进程相关的信息;00924对获取的与进程相关的信息进行处理,并返回给用户。0093获取与进程相关的信息可以包括例如,进程的当前运行状态STAT、进程IDPID、进程占用的CPU使用率CPU、进程占用的内存使用率MEN、进程占用的虚拟内存大小VSZ、进程占用的内存大小RSS、进程所属的用户UESR、创建该进程的命令字符串COMMAND。0094图6为本发明实施例的直接从内核获取内存信息的示意图,如图6所示,本实施例的命令子模块直接从内核中获取内存信息的步骤如下00951初。

31、始化SYSINFO结构体;00962填充SYSINFO结构体;00973从SYSINFO结构体获取与内存相关的信息;00984对获取的与内存相关的信息进行处理,并返回给用户。0099获取与内存相关的信息可以包括物理内存总量TOTAL、已分配内存大小USED、未被分配的内存大小FREE、共享内存大小SHARED、系统分配但未被使用的缓存区大小BUFFERS、系统分配但未被使用的高速缓存大小CACHED等;0100图7为本发明实施例的直接从内核获取虚拟内存信息的示意图,如图7所示,本实施例的命令子模块直接从内核中获取虚拟内存信息的步骤如下01011从CPU的运行队列中获取与虚拟内存信息相关的结构体。

32、信息;01022从获取的结构体信息中获取与虚拟内存相关的原始数据;说明书CN102314382ACN102314386A7/7页1001033对获取的与虚拟内存相关的信息进行处理,并返回给用户。0104本实施例中获取与虚拟内存相关的原始数据可以包括运行和等待CPU时间片的进程数R、在等待资源的进程数B、切换到内存交换区的内存数量SWPD、当前空闲页面列表中内存数量FREE、作为缓存区高速缓存的内存数量BUFF、作为页面高速缓存的内存数量CACHE、由内存进入内存交换区数量SI、由内存交换区进入内存数量SO、从块设备读入数据的总量BI、块设备写入数据的总量BO、某一时间间隔中观测到的每秒设备中断。

33、数IN、每秒产生的上下文切换次数CS、用户模式下所花费CPU时间的百分比US、内核进程所花费的CPU时间的百分比SY、IO等待所占用的CPU时间的百分比ID、CPU处在空闲状态的时间百分比WA、运行虚拟机的时间内执行其他任务的时间百分比ST等。0105图8为本发明实施例的直接从PROC文件系统获取进程信息的示意图,如图8所示,USER及PID的值是从/PROC/PID/STATUS文件中获取;CPU及STAT的值是从/PROC/PID/STAT文件中获取;MEM、VSZ及RSS的值是从/PROC/PID/STATM文件获取;COMMAD的值是从/PROC/PID/CMDLINE中获取。0106。

34、图9为本发明实施例的直接从PROC文件系统获取内存信息的示意图,如图9所示,TOTAL、FREE、BUFFERS、CACHED的值均从/PROC/MEMINFO中获取,并且USED的值等于TOTAL的值减去FREE的值。0107图10为本发明实施例的直接从PROC文件系统获取虚拟内存信息的示意图,如图10所示,给出了命令子模块中直接从PROC中获取虚拟内存信息的关系图R及B的值是从/PROC/PID/STAT文件中获取;SI、SO、BI、BO、IN、CS、US、SY、ID、WA及ST的值是从/PROC/STAT文件中获取;SWPD、FREE、BUFF及CACHE的值是从/PROC/MEMINF。

35、O文件中获取。0108本领域普通技术人员可以理解上述方法中的全部或部分步骤可通过程序来指令相关硬件完成,所述程序可以存储于计算机可读存储介质中,如只读存储器、磁盘或光盘等。可选地,上述实施例的全部或部分步骤也可以使用一个或多个集成电路来实现。相应地,上述实施例中的各模块/单元可以采用硬件的形式实现,也可以采用软件功能模块的形式实现。本发明不限制于任何特定形式的硬件和软件的结合。0109以上仅为本发明的优选实施例,当然,本发明还可有其他多种实施例,在不背离本发明精神及其实质的情况下,熟悉本领域的技术人员当可根据本发明作出各种相应的改变和变形,但这些相应的改变和变形都应属于本发明所附的权利要求的保护范围。说明书CN102314382ACN102314386A1/6页11图1图2图3说明书附图CN102314382ACN102314386A2/6页12图4说明书附图CN102314382ACN102314386A3/6页13图5图6说明书附图CN102314382ACN102314386A4/6页14图7说明书附图CN102314382ACN102314386A5/6页15图8图9说明书附图CN102314382ACN102314386A6/6页16图10说明书附图CN102314382A。

展开阅读全文
相关资源
猜你喜欢
相关搜索

当前位置:首页 > 物理 > 计算;推算;计数


copyright@ 2017-2020 zhuanlichaxun.net网站版权所有
经营许可证编号:粤ICP备2021068784号-1