一种获取CPU利用率的方法、装置及系统.pdf

上传人:r7 文档编号:974818 上传时间:2018-03-22 格式:PDF 页数:20 大小:857.31KB
返回 下载 相关 举报
摘要
申请专利号:

CN200910077063.6

申请日:

2009.01.19

公开号:

CN101493789A

公开日:

2009.07.29

当前法律状态:

授权

有效性:

有权

法律详情:

授权|||实质审查的生效|||公开

IPC分类号:

G06F11/34

主分类号:

G06F11/34

申请人:

联想网御科技(北京)有限公司

发明人:

何志福

地址:

100086北京市海淀区中关村南大街6号中电信息大厦801-810室

优先权:

专利代理机构:

北京集佳知识产权代理有限公司

代理人:

逯长明

PDF下载: PDF下载
内容摘要

本发明实施例公开了一种获取CPU利用率的方法及装置,所述方法包括:在一阈值时间内,统计CPU的轮询指令总数和业务指令总数;依据所述轮询指令总数和业务指令总数计算得到所述CPU的利用率。根据本发明实施例,就使得本发明实施例对于CPU的配置要求较低,无需操作系统支持,并且,进一步的,可以通过读物指令计数寄存器上的指令来获取轮询指令数和业务指令数,同时不会产生额外的系统资源消耗,使得计算结果的偏差较小。

权利要求书

1、  一种获取CPU利用率的方法,其特征在于,包括:
在一阈值时间内,统计CPU的轮询指令总数和业务指令总数;
依据所述轮询指令总数和业务指令总数计算得到所述CPU的利用率。

2、
  根据权利要求1所述的方法,其特征在于,所述在一阈值时间内,统计CPU的轮询指令数,具体包括:
获取一阈值时间内每次轮询的单次轮询指令数和单次业务指令数;
分别累计所述单次轮询指令数和单次业务指令数,以获得所述轮询指令总数和业务指令总数。

3、
  根据权利要求2所述的方法,其特征在于,所述获取一阈值时间内每次轮询的单次轮询指令数和单次业务指令数,具体包括:
在每次轮询开始时,获取所述CPU的指令计数寄存器的第一计数值;
在触发单次业务处理时,获取所述CPU的指令计数寄存器的第二计数值;
在所述业务处理结束时,获取所述指令计数寄存器的第三计数值;
在该次轮询结束时,获取所述指令计数寄存器的第四计数值;
分别获取所述第四计数值和第一计数值的差,以及所述第三计数值和第二计数值的差,则所述差值分别为所述单次轮询指令数和单次业务指令数。

4、
  根据权利要求1所述的方法,其特征在于,所述CPU为多核CPU,则所述统计多核CPU的轮询指令总数和业务指令总数,具体包括:
获取所述多核CPU上各核相应的多个轮询指令总数和业务指令总数;
分别累计所述多个轮询指令总数和多个业务指令总数,以获得多核CPU的轮询指令数和业务指令数。

5、
  根据权利要求4所述的方法,其特征在于,在所述多核CPU的任一核上设置定时器,所述定时器的预置时间为所述一阈值时间。

6、
  根据权利要求1所述的方法,其特征在于,所述依据所述轮询指令数和业务指令数计算得到所述CPU的利用率之后,还包括:
将所述轮询指令总数和业务指令总数的值清零。

7、
  一种获取CPU利用率的装置,其特征在于,包括:
统计模块,用于在一阈值时间内,统计CPU的轮询指令总数和业务指令总数;
计算模块,用于依据所述轮询指令总数和业务指令总数计算得到所述CPU的利用率。

8、
  根据权利要求7所述的装置,其特征在于,所述统计模块具体包括:
第一获取子模块,用于获取一阈值时间内每次轮询的单次轮询指令数和单次业务指令数;
第一累计子模块,用于分别累计所述单次轮询指令数和单次业务指令数,以获得所述轮询指令总数和业务指令总数。

9、
  根据权利要求8所述的装置,其特征在于,所述第一获取子模块具体包括:
第二获取子模块,用于在每次轮询开始时,获取所述CPU的指令计数寄存器的第一计数值;
第三获取子模块,用于在触发单次业务处理时,获取所述CPU的指令计数寄存器的第二计数值;
第四获取子模块,用于在所述业务处理结束时,获取所述指令计数寄存器的第三计数值;
第五获取子模块,用于在该次轮询结束时,获取所述指令计数寄存器的第四计数值;
第六获取子模块,用于分别获取所述第四计数值和第一计数值的差,以及所述第三计数值和第二计数值的差,则所述差值分别为所述单次轮询指令数和单次业务指令数。

10、
  根据权利要求7所述的装置,其特征在于,所述统计模块具体包括:
第七获取子模块,用于获取所述多核CPU上各核相应的多个轮询指令总数和业务指令总数;
第二累计子模块,用于分别累计所述多个轮询指令总数和多个业务指令总数,以获得多核CPU的轮询指令数和业务指令数。

11、
  根据权利要求10所述的装置,其特征在于,还包括:
设置模块,用于在所述多核CPU的任一核上设置定时器,所述定时器的预置时间为所述一阈值时间。

12、
  根据权利要求7所述的装置,其特征在于,还包括:
初始化模块,用于将所述轮询指令总数和业务指令总数的值清零。

说明书

一种获取CPU利用率的方法、装置及系统
技术领域
本发明涉及移动通信领域,尤其涉及一种获取CPU利用率的方法、装置及系统。
背景技术
操作系统(Operating System,OS)是一管理计算机系统的全部资源,包括硬件资源、软件资源及数据资源、控制程序运行等资源的程序,使计算机系统所有资源最大限度地发挥作用。中央处理单元(Central Process Unit,CPU)的缩写,是计算机系统的核心,负责处理、运算计算机内部的所有数据。CPU利用率是指一段时间内CPU实际处理数据的时间占实际运行时间的百分比,即是CPU的使用效率。CPU利用率是反映CPU工作状态及处理效率的技术经济指标。在一些CPU的应用场合中,有些CPU上需要运行操作系统,以获取更强、更多的功能,例如,通用PC,网络服务器,智能手机等。因为有了操作系统的支持,只需通过开发上层软件来优化,增加和扩充CPU的功能。
现有技术中,有一种利用进程获取CPU利用率的方法,该方法的实现主要基于系统空闲(idle)进程,所述系统idle进程是在CPU空闲的时候,发出一个idle命令,使CPU暂时停止工作,则该方法的实现过程具体为:在操作系统里创建一个idle进程,当操作系统处于空闲状态时,CPU就运行该idle进程,然后统计idle进程运行的时间片,依据所述时间片的具体信息就可以获取到CPU的空闲率,进而可以获取CPU的利用率。
从上述过程可以看出,传统的CPU利用计算方法是基于系统idle进程的,即是以idle进程为基础进行计算,通过统计idle的时间利用片从而得出CPU的利用率,因此现有技术的应用场景需要操作系统的支持,即是只能应用于在CPU上已经运行操作系统的场景中,且该操作系统支持支持线程或者进程;但是对于实际中一些没有操作系统(或者说是不需要操作系统)的CPU来讲,因不存在系统idle进程,现有技术也就无法计算出该CPU的利用率,使得现有技术中获取CPU利用率的方法的应用场景受到极大的限制。
发明内容
本发明实施例提供一种获取CPU利用率的方法及装置,以解决现有技术中的方法不能应用于没有操作系统支持的应用场景的问题。
为解决上述技术问题,本发明实施例提供了一种获取CPU利用率的方法,包括:
在一阈值时间内,统计CPU的轮询指令总数和业务指令总数;
依据所述轮询指令总数和业务指令总数计算得到所述CPU的利用率。
优选的,所述在一阈值时间内,统计CPU的轮询指令数,具体包括:
获取一阈值时间内每次轮询的单次轮询指令数和单次业务指令数;
分别累计所述单次轮询指令数和单次业务指令数,以获得所述轮询指令总数和业务指令总数。
优选的,所述获取一阈值时间内每次轮询的单次轮询指令数和单次业务指令数,具体包括:
在每次轮询开始时,获取所述CPU的指令计数寄存器的第一计数值;
在触发单次业务处理时,获取所述CPU的指令计数寄存器的第二计数值;
在所述业务处理结束时,获取所述指令计数寄存器的第三计数值;
在该次轮询结束时,获取所述指令计数寄存器的第四计数值;
分别获取所述第四计数值和第一计数值的差,以及所述第三计数值和第二计数值的差,则所述差值分别为所述单次轮询指令数和单次业务指令数。
优选的,所述CPU为多核CPU,则所述统计多核CPU的轮询指令总数和业务指令总数,具体包括:
获取所述多核CPU上各核相应的多个轮询指令总数和业务指令总数;
分别累计所述多个轮询指令总数和多个业务指令总数,以获得多核CPU的轮询指令数和业务指令数。
优选的,在所述多核CPU的任一核上设置定时器,所述定时器的预置时间为所述一阈值时间。
优选的,所述依据所述轮询指令数和业务指令数计算得到所述CPU的利用率之后,还包括:
将所述轮询指令总数和业务指令总数的值清零。
本发明实施例还提供了一种获取CPU利用率的装置,包括:
统计模块,用于在一阈值时间内,统计CPU的轮询指令总数和业务指令总数;
计算模块,用于依据所述轮询指令总数和业务指令总数计算得到所述CPU的利用率。
优选的,所述统计模块具体包括:
第一获取子模块,用于获取一阈值时间内每次轮询的单次轮询指令数和单次业务指令数;
第一累计子模块,用于分别累计所述单次轮询指令数和单次业务指令数,以获得所述轮询指令总数和业务指令总数。
优选的,所述第一获取子模块具体包括:
第二获取子模块,用于在每次轮询开始时,获取所述CPU的指令计数寄存器的第一计数值;
第三获取子模块,用于在触发单次业务处理时,获取所述CPU的指令计数寄存器的第二计数值;
第四获取子模块,用于在所述业务处理结束时,获取所述指令计数寄存器的第三计数值;
第五获取子模块,用于在该次轮询结束时,获取所述指令计数寄存器的第四计数值;
第六获取子模块,用于分别获取所述第四计数值和第一计数值的差,以及所述第三计数值和第二计数值的差,则所述差值分别为所述单次轮询指令数和单次业务指令数。
优选的,所述统计模块具体包括:
第七获取子模块,用于获取所述多核CPU上各核相应的多个轮询指令总数和业务指令总数;
第二累计子模块,用于分别累计所述多个轮询指令总数和多个业务指令总数,以获得多核CPU的轮询指令数和业务指令数。
优选的,还包括:
设置模块,用于在所述多核CPU的任一核上设置定时器,所述定时器的预置时间为所述一阈值时间。
优选的,还包括:
初始化模块,用于将所述轮询指令总数和业务指令总数的值清零。
与现有技术相比,本发明实施例具有以下优点:
在本发明实施例中,首先通过在一阈值时间内,统计CPU的轮询指令总数和业务指令总数;可以依据所述轮询指令总数和业务指令总数计算得到所述CPU的利用率。运用本发明的方法,就使得本发明实施例对于CPU的配置要求较低,无需操作系统支持,并且,进一步的,可以通过读取CPU内部的指令计数寄存器上的指来获取轮询指令数和业务指令数,同时不会产生额外的系统资源消耗,使得计算结果的偏差较小。
附图说明
为了更清楚地说明本发明实施例或现有技术中的技术方案,下面将对实施例或现有技术描述中所需要使用的附图作简单地介绍,显而易见地,下面描述中的附图仅仅是本发明的一些实施例,对于本领域普通技术人员来讲,在不付出创造性劳动性的前提下,还可以根据这些附图获得其他的附图。
图1是本发明的获取CPU利用率的方法实施例一的流程图;
图2是本发明的获取CPU利用率的方法实施例二的流程图;
图3是本发明的获取CPU利用率的方法实施例三的流程图;
图4是本发明的获取CPU利用率的方法实施例三中,多核CPU设置定时器的连接示意图;
图5是本发明的获取CPU利用率的装置实施例一的结构示意图;
图6是本发明的获取CPU利用率的装置实施例二的结构示意图;
图7是本发明的获取CPU利用率的装置实施例三的结构示意图。
具体实施方式
下面将结合本发明实施例中的附图,对本发明实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例仅仅是本发明一部分实施例,而不是全部的实施例。基于本发明中的实施例,本领域普通技术人员在没有做出创造性劳动前提下所获得的所有其他实施例,都属于本发明保护的范围。
为使本发明实施例的上述目的、特征和优点能够更加明显易懂,下面结合附图和具体实施方式对本发明实施例作进一步详细的说明。
参考图1,在本发明实施例一中,实现本发明实施例一所提供的方法可以包括以下步骤:
步骤101:在一阈值时间内,统计CPU的轮询指令总数和业务指令总数;
在实际应用中,本发明实施例可以应用于CPU上并没有操作系统运行的应用场景,这种没有操作系统的CPU的运行方式可以认为是多个循环,每次循环执行一段代码,这种方式可以称为轮询;在获取CPU的利用率时,首先需要设置一阈值时间,则本实施例可以计算所述一阈值时间内,CPU的轮询指令总数和业务指令总数;
具体的,所述轮询指令总数和业务指令总数可以通过以下方式获取:
子步骤A1:获取一阈值时间内每次轮询的单次轮询指令数和单次业务指令数;
子步骤A2:分别累计所述单次轮询指令数和单次业务指令数,以获得所述轮询指令总数和业务指令总数;
所述单次轮询指令数之和即为所述轮询指令总数,所述单次业务指令总数之和即为业务指令总数;
步骤102:依据所述轮询指令总数和业务指令总数计算得到所述CPU的利用率。
将所述步骤101中获取到的业务指令总数,除以所述轮询指令数,就可以得到所述一阈值时间内的CPU利用率。
在本发明实施例一中,可以看出,当CPU没有操作系统运行时,可以根据轮询指令数,和CPU实际执行的业务指令数,计算得到CPU的利用率,本实施例在实际中基于CPU的指令计数寄存器来实现,就使得本发明实施例对于CPU的配置要求较低,无需操作系统支持,并且,进一步的,可以通过读物指令计数寄存器上的指来获取轮询指令数和业务指令数,同时不会产生额外的系统资源消耗,使得计算结果的偏差较小。
参考图2,在本发明实施例二中,实现本发明实施例二所提供的方法可以包括以下步骤:
步骤201:在一阈值时间内,在每次轮询开始时,获取所述CPU的指令计数寄存器的第一计数值;
在实际中,所述一阈值时间可以由用户自主设置;在该阈值时间内的每次轮询开始时,读取CPU硬件架构中的指令技术寄存器上的数值,记为第一计数值;
步骤202:在触发单次业务处理时,获取所述指令计数寄存器的第二计数值;
当该次轮询内触发了业务处理时,例如,在报文处理设备中有报文需要处理,则在业务处理的开始时,读取所述指令计数寄存器的上的数值,记为第二计数值;
步骤203:在所述业务处理结束时,获取所述指令计数寄存器的第三计数值;
在业务处理结束时,读取所述指令计数寄存器的上的数值,记为第三计数值;
步骤204:在该次轮询结束时,获取所述指令计数寄存器的第四计数值;
在该次轮询结束时,读取所述指令计数寄存器的上的数值,记为第四计数值;
步骤205:分别获取所述第四计数值和第一计数值的差,以及所述第三计数值和第二计数值的差,则所述差值分别为所述单次轮询指令数和单次业务指令数;
获取所述第四计数值和第一计数值的差,将所述差值记为单次轮询指令数,并获取第三计数值和第二计数值的差,将所述差值记为单次业务指令数;
步骤206:分别累计所述单次轮询指令数和单次业务指令数,以获得所述轮询指令总数和业务指令总数;
在所述一阈值时间内,可以包括多次轮询,则累计每次轮询时间内的单次轮询指令数和单次业务指令数,可以分别获得所述轮询指令总数和业务指令总数;
步骤207:依据所述轮询指令总数和业务指令总数计算得到所述CPU的利用率。
其中,在计算得到所述CPU的利用率之后,还可以将所述轮询指令总数和业务指令总数清零。
在本发明实施例二中,可以看出,当CPU没有操作系统运行时,可以根据轮询指令总数,和CPU实际执行的业务指令总数,计算得到CPU的利用率,本实施例在实际中基于CPU的指令计数寄存器来实现,通过读取所述指令计数寄存器的值可以获得轮询指令总数和业务指令总数,就使得本发明实施例对于CPU的配置要求较低,无需操作系统支持,并且,进一步的,可以通过读物指令计数寄存器上的指来获取轮询指令数和业务指令数,同时不会产生额外的系统资源消耗,使得计算结果的偏差较小。
参考图3,在本发明实施例三中,实现本发明实施例三所提供的方法可以包括以下步骤:
步骤301:在所述多核CPU的任一核上设置定时器,所述定时器的预置时间为所述一阈值时间;
在本实施例中,所述CPU为多核CPU,所述一阈值时间可以通过设置定时器来实现,其中,可以在多核CPU的任一核上设置,所述定时器的预置时间具体为所述一阈值时间;
参考图4,为多核CPU中设置定时器时的示意图;
步骤302:在所述一阈值时间内,获取所述多核CPU上各核相应的多个轮询指令总数和业务指令总数;
在所述一阈值时间内,获取到多核CPU的每个核上相应的多个轮询指令总数和业务指令总数;
步骤303:分别累计所述多个轮询指令总数和多个业务指令总数,以获得多核CPU的轮询指令总数和业务指令总数;
将多个轮询指令总数进行累计,所述累计之和为多核CPU的轮询指令总数,并将多个业务指令总数进行累计,所述累计之和为多核CPU的业务指令总数;
步骤304:依据所述多核CPU的轮询指令总数和业务指令总数计算得到所述CPU的利用率;
步骤305:将所述轮询指令总数和业务指令总数的值清零。
在本实施例中,还可以在计算获取多核CPU的利用率之后,将所述累计之和,即是所述轮询指令总数和业务指令总数的值清零,以便于下一次可以继续统计某段时间内的CPU利用率。运用本实施例所述的方法,可以统计出在没有运行操作系统时,多核CPU的利用率,并且依据轮询指令总数和业务指令总数计算得到的利用率,相对准确度较高。
对于前述的各方法实施例,为了简单描述,故将其都表述为一系列的动作组合,但是本领域技术人员应该知悉,本发明并不受所描述的动作顺序的限制,因为依据本发明,某些步骤可以采用其他顺序或者同时进行。其次,本领域技术人员也应该知悉,说明书中所描述的实施例均属于优选实施例,所涉及的动作和模块并不一定是本发明所必须的。
与上述本发明实施例所提供的方法相对应,参见图5,本发明还提供了一种获取CPU利用率的装置实施例一,所述装置具体可以包括:
统计模块501,用于在一阈值时间内,统计CPU的轮询指令总数和业务指令总数;
具体的,所述统计模块501可以包括以下子模块:
第一获取子模块,用于获取一阈值时间内每次轮询的单次轮询指令数和单次业务指令数;
第一累计子模块,用于分别累计所述单次轮询指令数和单次业务指令数,以获得所述轮询指令总数和业务指令总数;
计算模块502,用于依据所述轮询指令总数和业务指令总数计算得到所述CPU的利用率。
在本实施例中,所述装置可以细分为两个模块,其中,所述统计模块401具体可以统计出CPU的轮询指令总数和业务指令总数,并由计算模块402依据所述轮询指令总数和业务指令总数计算得到所述CPU的利用率。本发明实施例所述的装置,可以应用于CPU上并没有运行操作系统的应用场景。
与本发明方法实施例二相对应,参考图6所示,示出了本发明装置实施例二的结构示意图,如图所示,该装置可以包括:
第二获取子模块601,用于在每次轮询开始时,获取所述CPU的指令计数寄存器的第一计数值;
第三获取子模块602,用于在触发单次业务处理时,获取所述CPU的指令计数寄存器的第二计数值;
第四获取子模块603,用于在所述业务处理结束时,获取所述指令计数寄存器的第三计数值;
第五获取子模块604,用于在该次轮询结束时,获取所述指令计数寄存器的第四计数值;
第六获取子模块605,用于分别获取所述第四计数值和第一计数值的差,以及所述第三计数值和第二计数值的差,则所述差值分别为所述单次轮询指令数和单次业务指令数;
第一累计子模块606,用于分别累计所述单次轮询指令数和单次业务指令数,以获得所述轮询指令总数和业务指令总数。
计算模块607,用于依据所述轮询指令总数和业务指令总数计算得到所述CPU的利用率。
当CPU没有操作系统运行时,可以根据轮询指令总数,和CPU实际执行的业务指令总数,由所述计算模块607计算得到CPU的利用率,本实施例在实际中基于CPU的指令计数寄存器来实现,通过读取所述指令计数寄存器的值可以获得轮询指令总数和业务指令总数,就使得本发明实施例对于CPU的配置要求较低,无需操作系统支持,并且,进一步的,可以通过读物指令计数寄存器上的指来获取轮询指令数和业务指令数,同时不会产生额外的系统资源消耗,使得计算结果的偏差较小。
与上述本发明方法实施例三相对应,本发明实施例还提供了一种获取CPU利用率的装置实施例三,参考图7所示,所述装置可以包括:
设置模块701,用于在所述多核CPU的任一核上设置定时器,所述定时器的预置时间为所述一阈值时间。
第七获取子模块702,用于在所述一阈值时间内,获取所述多核CPU上各核相应的多个轮询指令总数和业务指令总数;
第二累计子模块703,用于分别累计所述多个轮询指令总数和多个业务指令总数,以获得多核CPU的轮询指令数和业务指令数;
计算模块704,用于依据所述轮询指令总数和业务指令总数计算得到所述CPU的利用率;
初始化模块705,用于将所述轮询指令总数和业务指令总数的值清零。
本发明可以在由计算机执行的计算机可执行指令的一般上下文中描述,例如程序模块。一般地,程序模块包括执行特定任务或实现特定抽象数据类型的例程、程序、对象、组件、数据结构等等。也可以在分布式计算环境中实践本发明,在这些分布式计算环境中,由通过通信网络而被连接的远程处理设备来执行任务。在分布式计算环境中,程序模块可以位于包括存储设备在内的本地和远程计算机存储介质中。
需要说明的是,因为前述获取CPU利用率的方法介绍的十分详尽,所以所述获取CPU利用率的装置实施例未详尽之处,可以参见前述对获取CPU利用率的方法实施例的描述,在此不再对装置作详细描述。
还需要说明的是,在本文中,诸如第一和第二等之类的关系术语仅仅用来将一个实体或者操作与另一个实体或操作区分开来,而不一定要求或者暗示这些实体或操作之间存在任何这种实际的关系或者顺序。而且,术语“包括”、“包含”或者其任何其他变体意在涵盖非排他性的包含,从而使得包括一系列要素的过程、方法、物品或者设备不仅包括那些要素,而且还包括没有明确列出的其他要素,或者是还包括为这种过程、方法、物品或者设备所固有的要素。在没有更多限制的情况下,由语句“包括一个......”限定的要素,并不排除在包括所述要素的过程、方法、物品或者设备中还存在另外的相同要素。
以上对本发明实施例所提供的一种获取CPU利用率的方法及装置进行了详细介绍,本文中应用了具体个例对本发明的原理及实施方式进行了阐述,以上实施例的说明只是用于帮助理解本发明实施例的方法及其思想;同时,对于本领域的一般技术人员,依据本发明实施例的思想,在具体实施方式及应用范围上均会有改变之处,综上所述,本说明书内容不应理解为对本发明的限制。

一种获取CPU利用率的方法、装置及系统.pdf_第1页
第1页 / 共20页
一种获取CPU利用率的方法、装置及系统.pdf_第2页
第2页 / 共20页
一种获取CPU利用率的方法、装置及系统.pdf_第3页
第3页 / 共20页
点击查看更多>>
资源描述

《一种获取CPU利用率的方法、装置及系统.pdf》由会员分享,可在线阅读,更多相关《一种获取CPU利用率的方法、装置及系统.pdf(20页珍藏版)》请在专利查询网上搜索。

本发明实施例公开了一种获取CPU利用率的方法及装置,所述方法包括:在一阈值时间内,统计CPU的轮询指令总数和业务指令总数;依据所述轮询指令总数和业务指令总数计算得到所述CPU的利用率。根据本发明实施例,就使得本发明实施例对于CPU的配置要求较低,无需操作系统支持,并且,进一步的,可以通过读物指令计数寄存器上的指令来获取轮询指令数和业务指令数,同时不会产生额外的系统资源消耗,使得计算结果的偏差较小。。

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

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


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