linux会在用户态执行的程序,一种针对Linux系统RPM包统计CPU占用率的方法及系统与流程...

本发明提供了一种针对Linux系统RPM包统计CPU占用率的方法和系统,通过读取系统目录信息计算CPU总节拍数和进程CPU节拍数,确定进程CPU占用率,并定位到所属RPM包,实现对RPM包CPU占用率的有效监控和统计,保护设备稳定运行。
摘要由CSDN通过智能技术生成

c471995d9691b4f2c83be66c70396f28.gif

本发明涉及一种操作系统性能检测方法,属于软件测试领域,尤其涉及一种针对Linux系统RPM包统计CPU占用率的方法及系统。

背景技术:

在现有的操作系统中,对CPU性能的监控是保障计算机、服务器等设备稳定、正常运行的核心,其中对CPU任务占用率更是有效控制和合理CPU处理能力的关键。例如,在Windows操作系统中,提供了任务管理器这一工具,用户能够利用任务管理器查看到计算机当前运行的程序和进程的详细信息,并能够进行一些操作。在Linux操作系统中也有类似的工具,如top命令,能够查看当前系统中正在运行的进程的资源消耗情况。

Linux系统下软件包通常是以RPM文件的方式进行安装,一个软件包中可能会包含多个进程,常用的top命令能够查看到的,仅仅是每一个进程的资源消耗情况,无法查询到系统中正在运行的进程所属的RPM包的资源占用情况。当需要定位系统中安装的RPM包资源使用情况时,在现有的Linux系统下无法实现。因此,不利于对Linux系统下的CPU占用率进行监控和统计,容易出现系统瘫痪或崩溃的风险,从而不能有效的保护设备的正常和稳定运行。

如中国专利(授权公告号CN 102750221 B)公开了“一种针对Linux文件系统的性能测试方法”,该方法从三个维度来对Linux文件系统的性能进行评估,具体包括:微观读写带宽测试,通过模拟多个IO操作的应用场景对Linux 文件系统微观读写带宽进行测试;事务操作吞吐量测试,通过基于随机概率的事务交叉循环操作方式对Linux文件系统的文件操作吞吐量进行测试;宏观典型应用模拟测试,通过基于多线程的可扩展负载模型构建方式对典型应用场景进行模拟从而评估Linux文件系统的真实工作性能。该方法虽然能够提高测试覆盖率,但仍然没有解决针对RPM包CPU占用率的统计和监控问题。

技术实现要素:

本发明提供一种针对Linux系统RPM包统计CPU占用率的方法和系统,用以解决在Linux系统下,对安装的RPM包资源的CPU占用率无法有效统计和监控的问题,不能有效的保护设备的正常和稳定运行。

本发明通过以下技术方案予以实现:

一种针对Linux系统RPM包统计CPU占用率的方法,

在系统中运行RPM包文件,并查询所述RPM软件的所有进程信息;

计算步骤:读取Linux系统目录信息,获取从系统启动开始到当前时刻CPU 运行的总节数和所有进程自启动后分别使用的CPU节拍数,进而得到所有进程的CPU占用率;

定位步骤:定位每一进程,并分别将对应进程的CPU占用率累加到所属 RPM包的CPU使用率上,遍历完所有进程后得到所述RPM包的CPU占用率;

输出步骤:将获取的所述RPM包CPU占用率数据输出。

如上所述的一种针对Linux系统RPM包统计CPU占用率的方法,所述计算步骤,通过读取Linux系统中/proc/stat文件的内容,获取从系统启动开始到当前时刻CPU运行的总节数,包括用户态运行时间、内核态运行时间、IO等待时间、其他等待时间、软中断时间、硬中断时间,将这些节拍值相加后即是系统自启动以来CPU运行的总节拍数。

如上所述的一种针对Linux系统RPM包统计CPU占用率的方法,所述计算步骤,通过读取Linux系统中/proc/[pid]/stat文件中的内容,获取进程在用户态运行的时间节拍数、进程在内核态运行的时间节拍数、进程所有已死线程在用户态运行的节拍数、所有已死线程在内核态运行的节拍数,将这四个节拍数相加后就是进程自启动后使用的CPU节拍数。

如上所述的一种针对Linux系统RPM包统计CPU占用率的方法,所述计算步骤中,计算某一进程CPU使用率的方法是在一个时间点获取此时的CPU总节拍数totalcputime1和对应进程的CPU使用节拍数processcputime1,间隔一段时间,再获取一次CPU总节拍数totalcputime2和此时进程的CPU使用节拍数 processcputime2,利用公式:

percent=100*(processcputime2-processcputime1)/(totalcputime2-totalcputime1) 计算对应进程在这段时间的CPU使用率。

如上所述的一种针对Linux系统RPM包统计CPU占用率的方法,所述定位步骤,根据所述计算步骤进程信息列表中进程号pid,通过读取 /proc/[pid]/cmdline文件中的内容获取相应进程的完整运行路径,利用rpm-qf加进程完整运行路径来定位对应进程所属的RPM包。

如上所述的一种针对Linux系统RPM包统计CPU占用率的方法,所述输出步骤,将所述定位步骤中得到的RPM包CPU占用率数据,安装每个RPM软件包的名称和CPU占用率信息以固定的格式输出到终端。

一种针对Linux系统RPM包统计CPU占用率的系统,包括计算模块、定位模块和输出模块,所述计算模块用于将从系统启动开始到当前时刻CPU运行的总节数和所有进程自启动后分别使用的CPU节拍数,分别得到对应的所有进程的CPU占用率;所述定位模块用于在系统中根据每一进程的定位,将对应进程的CPU占用率累加到所属RPM包的CPU使用率上,得到所述RPM包的CPU 占用率;所述输出步骤用于将获取的所述RPM包CPU占用率数据输出到终端设备。

如上所述的一种针对Linux系统RPM包统计CPU占用率的系统,所述计算模块中设有第一寄存器、第二寄存器和计算单元,所述第一寄存器用于保存间隔时间获取的前后CPU总节拍数totalcputime1和totalcputime2,第二寄存器用于保存与CPU总节拍数totalcputime1和totalcputime2对应的进程CPU使用节拍数processcputime1和processcputime2,所述计算单元用于将获取的对应的进程CPU使用节拍数processcputime1和processcputime2的差值、CPU总节拍数 totalcputime1和totalcputime2差值进行处理,获得对应进程在这段时间的CPU 使用率。

与现有技术相比,本发明的优点是:

本发明的主要创新点在于基于目前系统提供的信息,自动计算进程的CPU 占用率并确定进程所属的RPM包,进而对CPU占用率实现有效的监控和统计,避免系统瘫痪或崩溃的风险,保护设备的正常和稳定运行。

附图说明

为了更清楚地说明本发明实施例或现有技术中的技术方案,下面将对实施例或现有技术描述中所需要使用的附图作一简单地介绍。

图1是本发明方法的流程图;

图2是图1中所述计算步骤的流程图;

图3是图1中所述定位步骤的流程图;

图4是本发明系统的流程图。

具体实施方式

为使本发明实施例的目的、技术方案和优点更加清楚,下面将结合本发明实施例中的附图,对本发明实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例是本发明一部分实施例,而不是全部的实施例。

如图1、图2、图3所示,本实施例一种针对Linux系统RPM包统计CPU 占用率的方法,在系统中运行RPM包文件,并查询所述RPM软件的所有进程信息;计算步骤:读取Linux系统目录信息,获取从系统启动开始到当前时刻 CPU运行的总节数和所有进程自启动后分别使用的CPU节拍数,进而得到所有进程的CPU占用率;定位步骤:定位每一进程,并分别将对应进程的CPU占用率累加到所属RPM包的CPU使用率上,遍历完所有进程后得到所述RPM包的 CPU占用率;输出步骤:将获取的所述RPM包CPU占用率数据输出。

如图2所示,本实施例的所述计算步骤,用于对进程的CPU占用率进行计算。通过读取/proc/stat文件可以获取从系统启动开始到当前时刻的CPU总体使用情况。/proc/stat文件中第一行记录了系统启动以来CPU在各种状态下运行时间,主要包括用户态运行时间、内核态运行时间、IO等待时间、其他等待时间、软中断时间、硬中断时间等等,时间单位是节拍,将这些节拍值相加后即是系统自启动以来CPU运行的总节拍数。为了计算进程的CPU占用率,还需要统计进程自启动以来占用的CPU节拍数。需要读取/proc/[pid]/stat文件中的内容,此文件中的14到17字段包含了进程在用户态运行的时间节拍数、进程在内核态运行的时间节拍数、进程所有已死线程在用户态运行的节拍数、所有已死线程在内核态运行的节拍数,将这四个节拍数相加后就是进程自启动后使用的CPU 节拍数。

计算某个进程CPU使用率的方法是在一个时间点获取此时的CPU总节拍数totalcputime1和此进程的CPU使用节拍数processcputime1,间隔一段时间,再获取一次CPU总节拍数totalcputime2和此时进程的CPU使用节拍数 processcputime2,此进程在这段时间的CPU使用率即为:

percent=100*(processcputime2-processcputime1)/(totalcputime2-totalcputime1)

如图3所示,本实施例中所述定位步骤,用于将计算步骤输出的进程定位到相应的RPM包,进而获取RPM包的CPU占用率。通过获取计算模块进程信息列表中进程号pid,读取/proc/[pid]/cmdline文件中的内容获取相应进程的完整运行路径,利用rpm-qf加进程完整运行路径来定位进程所属的RPM包,将由计算模块获得的此进程的CPU使用率累加到所属RPM包的CPU使用率上,遍历完计算模块的所有输出进程后即可得到RPM包的CPU占用率。

最后,在输出步骤中,将定位步骤中传输来的RPM包的CPU占用率数据等,按照每个RPM包的名称和CPU占用率信息按照固定的格式输出或显示到终端。

如图1所示,本发明还提供了一种针对Linux系统RPM包统计CPU占用率的系统,包括计算模块、定位模块和输出模块,所述计算模块用于将从系统启动开始到当前时刻CPU运行的总节数和所有进程自启动后分别使用的CPU节拍数,分别得到对应的所有进程的CPU占用率;所述定位模块用于在系统中根据每一进程的定位,将对应进程的CPU占用率累加到所属RPM包的CPU使用率上,得到所述RPM包的CPU占用率;所述输出步骤用于将获取的所述RPM 包CPU占用率数据输出到终端设备。

进一步的,本系统在计算模块中设有第一寄存器、第二寄存器和计算单元,所述第一寄存器用于保存间隔时间获取的前后CPU总节拍数totalcputime1和 totalcputime2,第二寄存器用于保存与CPU总节拍数totalcputime1和totalcputime2对应的进程CPU使用节拍数processcputime1和processcputime2,所述计算单元用于将获取的对应的进程CPU使用节拍数processcputime1和 processcputime2的差值、CPU总节拍数totalcputime1和totalcputime2差值进行处理,获得对应进程在这段时间的CPU使用率。

本发明的主要创新点在于基于目前系统提供的信息,自动计算进程的CPU 占用率并确定进程所属的RPM包,进而对CPU占用率实现有效的监控和统计,避免系统瘫痪或崩溃的风险,保护设备的正常和稳定运行。

本发明未详尽描述的技术内容均为公知技术。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值