CN100549979C - 系统任务的cpu占用率检测方法及系统 - Google Patents
系统任务的cpu占用率检测方法及系统 Download PDFInfo
- Publication number
- CN100549979C CN100549979C CNB2007101947189A CN200710194718A CN100549979C CN 100549979 C CN100549979 C CN 100549979C CN B2007101947189 A CNB2007101947189 A CN B2007101947189A CN 200710194718 A CN200710194718 A CN 200710194718A CN 100549979 C CN100549979 C CN 100549979C
- Authority
- CN
- China
- Prior art keywords
- execution time
- system task
- length
- task
- time length
- Prior art date
- Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
- Expired - Fee Related
Links
Images
Abstract
本发明公开了一种系统任务的CPU占用率检测方法及系统。其中,该方法包括以下步骤:在特定时间长度内,记录每次执行系统任务的开始执行时间和结束执行时间,并记录系统任务的切换次数;利用开始执行时间和结束执行时间获取每次执行系统任务的执行时间长度,并对各次执行系统任务的执行时间长度进行累加,以获取系统任务的总执行时间长度;利用系统任务的切换次数和预定的执行时间长度误差获取系统任务的总执行时间长度校正值;以及利用系统任务的总执行时间长度、总执行时间长度校正值、以及特定时间长度,获取系统任务在特定时间长度内的CPU占用率。
Description
技术领域
本发明涉及软件开发领域,更具体地涉及一种系统任务的CPU占用率检测方法及系统。
背景技术
在嵌入式软件开发领域,无论是集中式设备还是分布式设备都运行多个任务,中央处理单元(Central Processing Unit,简称CPU)按照一定的任务调度规则来调用各个任务,因此通过对各个任务的CPU占用率的检测,可以知道某个任务某段时间的忙闲情况,从而可以通过调整自身的任务属性合理获得CPU,最终使系统达到较为理想的吞吐量。而且,当系统发生某些故障时,通过对各个任务的CPU占用率的检测也能达到查错的效果。
目前普遍使用的CPU占用率检测方法是启动一个空闲任务无限执行一个基本单元。在CPU占用率的检测过程中,会用到下述公式:CPU占用率=1000-((基本单元执行时间*空闲任务执行的循环次数)/(总循环次数*统计时间))*1000。从上述公式可以看出,检测CPU占用率是检测整个系统的CPU占用率,而不是检测某个任务的CPU占用率。如果设备有四个任务,记为A任务、B任务、C任务、和D任务。这时各个任务并不知道自己的CPU占用率情况,没法通过调整任务自身属性来达到理想的吞吐量;同时如果系统出现异常,CPU占用率会很高,单纯计算整个系统的CPU占用率并不能知道四个任务具体哪个的CPU占用率很高,从而影响排错。
嵌入式系统的基本时间单位为Tick,这意味着检测各个任务的CPU占用率只能精确到Tick。由于存在任务切换时间与任务执行时间之和小于一个Tick而无法统计的情况,所以算出的各个任务的CPU占用率不够精确。为了更精确地检测各个任务的CPU占用率,需要在硬件上提供更小的时间单位。
发明内容
鉴于以上所述的一个或多个问题,本发明提供了一种系统任务的CPU占用率检测方法及系统。
根据本发明实施例的系统任务的CPU占用率检测方法,包括以下步骤:在特定时间长度内,记录每次执行系统任务的开始执行时间和结束执行时间,并记录系统任务的切换次数;利用开始执行时间和结束执行时间获取每次执行系统任务的执行时间长度,并对各次执行系统任务的执行时间长度进行累加,以获取系统任务的总执行时间长度;利用系统任务的切换次数和预定的执行时间长度误差获取系统任务的总执行时间长度校正值;以及利用系统任务的总执行时间长度、总执行时间长度校正值、以及特定时间长度,获取系统任务在特定时间长度内的CPU占用率。
其中,根据CPU的处理速度,确定预定的执行时间长度误差。其中,预定的执行时间长度误差小于系统时间单位。具体地,预定的执行时间长度误差是小于系统时间长度单位的系统任务的执行时间长度,并且大于零且小于1。
其中,通过以下公式获取系统任务在特定时间长度内的CPU占用率:系统任务的CPU占用率=((系统任务在特定时间长度内的总执行时间长度+系统任务的切换次数*系统任务的总执行时间长度校正值)*10000)/特定时间长度。其中,系统任务的执行时间长度是系统任务的切换时间长度和实际执行时间长度之和。
根据本发明实施例的系统任务的CPU占用率检测系统包括:数据记录单元,用于在特定时间长度内,记录每次执行系统任务的开始执行时间和结束执行时间,并记录系统任务的切换次数;时间获取单元,用于利用开始执行时间和结束执行时间获取每次执行系统任务的执行时间长度,并对各次执行系统任务的执行时间长度进行累加,以获取系统任务的总执行时间长度;校正获取单元,用于利用系统任务的切换次数和预定的执行时间长度误差获取系统任务的总执行时间长度校正值;以及占用检测单元,用于利用系统任务的总执行时间长度、总执行时间长度校正值、以及特定时间长度,获取系统任务在特定时间长度内的CPU占用率。
其中,校正获取单元根据CPU的处理速度,确定预定的执行时间长度误差。其中,预定的执行时间长度误差小于系统时间单位。具体地,预定的执行时间长度误差是小于系统时间长度单位的系统任务的执行时间长度,且大于零且小于1。
其中,占用检测单元通过以下公式获取系统任务在特定时间长度内的CPU占用率:系统任务的CPU占用率=((系统任务在特定时间长度内的总执行时间长度+系统任务的切换次数*系统任务的总执行时间长度校正值)*10000)/特定时间长度。其中,系统任务的执行时间长度是系统任务的切换时间长度和实际执行时间长度之和。
综上所述,本发明通过记录任务开始执行时间、结束执行时间来算出各个任务的CPU占用率。同时,本发明引入了不足一个系统时间单位时记录其切换次数,从而使检测各个任务的CPU占用率更加精确。
附图说明
此处所说明的附图用来提供对本发明的进一步理解,构成本申请的一部分,本发明的示意性实施例及其说明用于解释本发明,并不构成对本发明的不当限定。在附图中:
图1是根据本发明的一个实施例的系统任务的CPU占用率检测方法的流程图;
图2是根据本发明的一个实施例的内核切换钩子函数流程图;
图3是根据本发明的另一个实施例的系统任务的CPU占用率检测方法的另一流程图;以及
图4是根据本发明实施例的系统任务的CPU占用率检测系统的框图。
具体实施方式
下面参考附图,详细说明本发明的具体实施方式。
参考图1,说明根据本发明的一个实施例的系统任务的CPU占用率检测方法。如图1所示,该方法包括以下步骤:S102,在特定时间长度内,记录每次执行系统任务的开始执行时间和结束执行时间,并记录系统任务的切换次数;S104,利用开始执行时间和结束执行时间获取每次执行系统任务的执行时间长度,并对各次执行系统任务的执行时间长度进行累加,以获取系统任务的总执行时间长度;S106,利用系统任务的切换次数和预定的执行时间长度误差获取系统任务的总执行时间长度校正值;以及S108,利用系统任务的总执行时间长度、总执行时间长度校正值、以及特定时间长度,获取系统任务在特定时间长度内的CPU占用率。其中,步骤S104和步骤S106之间的顺序可以互换。
其中,根据CPU的处理速度,确定预定的执行时间长度误差。其中,预定的执行时间长度误差小于系统时间单位。具体地,预定的执行时间长度误差是小于系统时间长度单位的系统任务的执行时间长度,并且大于零且小于1。
其中,通过以下公式获取系统任务在特定时间长度内的CPU占用率:系统任务的CPU占用率=((系统任务在特定时间长度内的总执行时间长度+系统任务的切换次数*系统任务的总执行时间长度校正值)*10000)/特定时间长度。其中,系统任务的执行时间长度是系统任务的切换时间长度和实际执行时间长度之和。
下面参考图2和图3,更详细地说明本发明的具体实施方式。
首先,系统启动初始化相关的结构变量。其中,结构变量主要包括任务开始执行Tick、任务结束执行Tick、某段时间内总的执行Tick、以及某段时间内的CPU占用率。
其次,利用内核任务切换钩子函数进行如下处理:记录旧任务结束执行时间;用旧任务结束执行Tick减去旧任务开始执行Tick,得到该任务的执行Tick;其中,如果该任务的执行时间(含有任务切换时间)不足一个Tick,则记录其切换次数;以及记录新任务结束执行时间。其中,在内核任务切换钩子函数中增加保护机制,采取的做法是:进钩子函数时关中断、出钩子函数时开中断,排除其它中断干扰。
再次,进行CPU处理速度检测,获得不足一个Tick时的切换时间和执行时间之和的合理估值。
最后,在定时任务时间到时,根据下述公式来检测各个任务的CPU占用率:X任务的CPU占用率=((X任务在某段时间内的总的执行Tick+任务切换次数*不足一个Tick时的切换时间和执行时间之和的合理估值)*10000)/某段时间。另外,通过将X任务的CPU占用率与历史峰值进行比较,获得X任务运行至今的CPU占用率的峰值。
参考图2,说明是根据本发明实施例的内核切换钩子函数的流程。如图2所示,该流程包括以下步骤:
S202,当任务发生切换时,在内核切换钩子函数里关闭中断,以防止其它中断和任务切换的影响。
S204,获得系统的当前Tick,记为旧任务结束执行Tick。
S206,用旧任务结束执行Tick减去旧任务开始执行Tick,得到该旧任务执行Tick。
S208,如果旧任务执行Tick大于该旧任务记录的历史峰值,则更新其历史峰值,供查错使用。
S210,对于任务切换时间与任务执行时间之和小于一个Tick的情况,记录其切换次数,否则执行步骤S212;
S212,累加该任务执行Tick,以便统计该任务在某段时间内的总执行Tick。
S214,记录新任务开始执行Tick,供下次任务切换时计算该任务执行Tick。
S216,退出内核切换钩子函时,开中断。
下面结合图3,说明根据本发明的另一个实施例的利用了图2所述流程的系统任务的CPU占用率检测方法。如图3所示,该方法包括以下步骤:
S302,引入一个时钟中断,定时计算各个任务的CPU占用率。
S304,按以下公式计算各个任务的CPU占用率:X任务的CPU占用率=((X任务在某段时间内的总的执行Tick+任务切换次*不足一个Tick时的切换时间和执行时间之和的合理估值)*10000)/某段时间,注意这里的合理估值的取值范围大于零并且小于1。
S306,X任务在某段时间内的总的执行Tick归零,以便统计下段时间该任务的总的执行Tick。
S308,X任务在某段时间内的总的切换次数归零,以便统计下段时间该任务的切换次数。
参考图4,说明根据本发明实施例的系统任务的CPU占用率检测系统。如图4所示,该系统包括:数据记录单元402,用于在特定时间长度内,记录每次执行系统任务的开始执行时间和结束执行时间,并记录系统任务的切换次数;时间获取单元404,用于利用开始执行时间和结束执行时间获取每次执行系统任务的执行时间长度,并对各次执行系统任务的执行时间长度进行累加,以获取系统任务的总执行时间长度;校正获取单元406,用于利用系统任务的切换次数和预定的执行时间长度误差获取系统任务的总执行时间长度校正值;以及占用检测单元408,用于利用系统任务的总执行时间长度、总执行时间长度校正值、以及特定时间长度,获取系统任务在特定时间长度内的CPU占用率。
其中,校正获取单元根据CPU的处理速度,确定预定的执行时间长度误差。其中,预定的执行时间长度误差小于系统时间单位。具体地,预定的执行时间长度误差是小于系统时间长度单位的系统任务的执行时间长度,且大于零且小于1。
其中,占用检测单元通过以下公式获取系统任务在特定时间长度内的CPU占用率:系统任务的CPU占用率=((系统任务在特定时间长度内的总执行时间长度+系统任务的切换次数*系统任务的总执行时间长度校正值)*10000)/特定时间长度。其中,系统任务的执行时间长度是系统任务的切换时间长度和实际执行时间长度之和。
本发明避免了增加CPU额外开销和硬件上的支持,通过记录任务切换次数,并在任务切换时间和任务执行时间不足一个Tick时给出估值来弥补现有技术中的误差,使各个任务的CPU占用率的精确程度达到了比较理想效果。
系统可以根据各个任务的CPU占用率调整任务属性来使系统达到最大的吞吐量。开发人员可以根据各个任务的CPU占用率快速定位系统故障。设备管理人员可以根据各个任务的CPU占用率获知业务执行情况。同时,在具体实践中,针对任务切换时间和任务执行时间不足一个Tick的情况,本发明通过记录任务切换次数代替采用更精确的时间单位来使各个任务的CPU占用率更加精确。其优点在于:一方面不关心硬件是否提供更精确的时间颗粒,减少了对硬件的依赖;另一方面不启动更小时间单位,避免了CPU的额外开销。
以上所述仅为本发明的实施例而已,并不用于限制本发明,对于本领域的技术人员来说,本发明可以有各种更改和变化。凡在本发明的精神和原则之内,所作的任何修改、等同替换、改进等,均应包含在本发明的权利要求范围之内。
Claims (4)
1.一种系统任务的CPU占用率检测方法,其特征在于,包括以下步骤:
在特定时间长度内,记录每次执行系统任务的开始执行时间和结束执行时间,并记录所述系统任务的切换次数;
利用所述开始执行时间和所述结束执行时间获取每次执行所述系统任务的执行时间长度,并对各次执行所述系统任务的执行时间长度进行累加,以获取所述系统任务的总执行时间长度;
利用所述系统任务的切换次数和预定的执行时间长度误差获取所述系统任务的总执行时间长度校正值,其中,所述预定的执行时间长度误差根据CPU的处理速度确定,所述预定的执行时间长度误差是小于系统时间长度单位的所述系统任务的执行时间长度,所述预定的执行时间长度误差大于零且小于1,所述预定的执行时间长度误差小于系统时间单位;以及
利用所述系统任务的所述总执行时间长度、所述总执行时间长度校正值、以及所述特定时间长度,获取所述系统任务在所述特定时间长度内的CPU占用率,具体包括:通过以下公式获取所述系统任务在所述特定时间长度内的CPU占用率:系统任务的CPU占用率=((系统任务在特定时间长度内的总执行时间长度+系统任务的切换次数*系统任务的总执行时间长度校正值)*10000)/特定时间长度。
2.根据权利要求1所述的方法,其特征在于,所述系统任务的执行时间长度是所述系统任务的切换时间长度和实际执行时间长度之和。
3.一种系统任务的CPU占用率检测系统,其特征在于,包括:
数据记录单元,用于在特定时间长度内,记录每次执行系统任务的开始执行时间和结束执行时间,并记录所述系统任务的切换次数;
时间获取单元,用于利用所述开始执行时间和所述结束执行时间获取每次执行所述系统任务的执行时间长度,并对各次执行所述系统任务的执行时间长度进行累加,以获取所述系统任务的总执行时间长度;
校正获取单元,用于利用所述系统任务的切换次数和预定的执行时间长度误差获取所述系统任务的总执行时间长度校正值,其中,所述预定的执行时间长度误差根据CPU的处理速度确定,所述预定的执行时间长度误差是小于系统时间长度单位的所述系统任务的执行时间长度,所述预定的执行时间长度误差大于零且小于1,所述预定的执行时间长度误差小于系统时间单位;以及
占用检测单元,用于利用所述系统任务的所述总执行时间长度、所述总执行时间长度校正值、以及所述特定时间长度,通过以下公式获取所述系统任务在所述特定时间长度内的CPU占用率:系统任务的CPU占用率=((系统任务在特定时间长度内的总执行时间长度+系统任务的切换次数*系统任务的总执行时间长度校正值)*10000)/特定时间长度。
4.根据权利要求3所述的系统,其特征在于,所述系统任务的执行时间长度是所述系统任务的切换时间长度和实际执行时间长度之和。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CNB2007101947189A CN100549979C (zh) | 2007-11-29 | 2007-11-29 | 系统任务的cpu占用率检测方法及系统 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CNB2007101947189A CN100549979C (zh) | 2007-11-29 | 2007-11-29 | 系统任务的cpu占用率检测方法及系统 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN101178688A CN101178688A (zh) | 2008-05-14 |
CN100549979C true CN100549979C (zh) | 2009-10-14 |
Family
ID=39404948
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CNB2007101947189A Expired - Fee Related CN100549979C (zh) | 2007-11-29 | 2007-11-29 | 系统任务的cpu占用率检测方法及系统 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN100549979C (zh) |
Families Citing this family (11)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN102117240B (zh) * | 2009-12-31 | 2016-01-20 | 腾讯科技(深圳)有限公司 | 一种获取进程阻塞信息的方法及装置 |
CN102110043A (zh) * | 2010-12-30 | 2011-06-29 | 上海顶竹通讯技术有限公司 | 一种cpu占用率的计算方法及装置 |
CN102646066B (zh) * | 2012-02-22 | 2013-12-18 | 腾讯科技(深圳)有限公司 | 一种开机时间的获取方法及装置 |
CN103345440B (zh) * | 2013-06-05 | 2017-05-03 | 深圳天珑无线科技有限公司 | 电子设备累计运行时间的统计方法及装置、电子设备 |
CN104572414A (zh) * | 2014-12-23 | 2015-04-29 | 深圳市邦彦信息技术有限公司 | 一种用于vxWorks的CPU占用率检测方法和系统 |
CN105868070A (zh) * | 2015-12-25 | 2016-08-17 | 乐视网信息技术(北京)股份有限公司 | 确定任务消耗资源的方法及装置 |
CN106897203A (zh) * | 2017-03-29 | 2017-06-27 | 北京经纬恒润科技有限公司 | 一种cpu负载率计算方法及装置 |
CN109933487B (zh) * | 2017-12-19 | 2024-05-07 | 潘明旭 | 智能机器人的监测方法和装置 |
CN109002377A (zh) * | 2018-07-26 | 2018-12-14 | 郑州云海信息技术有限公司 | 一种处理器检测方法、处理器检测装置以及计算机设备 |
CN111913805B (zh) * | 2020-07-31 | 2023-11-28 | 北京天融信网络安全技术有限公司 | 一种cpu利用率计算方法及装置 |
CN113419917A (zh) * | 2021-06-23 | 2021-09-21 | 蔚然(南京)动力科技有限公司 | 一种嵌入式操作系统任务和中断的cpu负载率计算方法 |
-
2007
- 2007-11-29 CN CNB2007101947189A patent/CN100549979C/zh not_active Expired - Fee Related
Also Published As
Publication number | Publication date |
---|---|
CN101178688A (zh) | 2008-05-14 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN100549979C (zh) | 系统任务的cpu占用率检测方法及系统 | |
US9594659B2 (en) | CPU utilization metering on systems that include multiple hardware threads per core | |
US8645718B2 (en) | Apparatus and method for sampling power consumption | |
CN100478909C (zh) | 用于功率测量和管理的方法和系统 | |
CN102681940B (zh) | 一种针对Linux操作系统内存管理子系统进行性能测试的方法 | |
CN106156115B (zh) | 一种资源调度方法及装置 | |
CA1175573A (en) | Method and apparatus for measurements of channel operation | |
EP2790106A2 (en) | Performance measurement unit, processor core including the same and process profiling method | |
US20050177327A1 (en) | Method and apparatus for profiling power performance of software applications | |
CN110262959A (zh) | 底层服务压力测试方法、装置、电子设备及存储介质 | |
Saltzer et al. | The instrumentation of Multics | |
CN101876933A (zh) | Cpu使用率分析系统及方法 | |
CN103164321A (zh) | 中央处理器占用率测量方法及装置 | |
CN100501694C (zh) | 处理器利用率的测量装置及方法 | |
CN103379000A (zh) | 一种并发测试方法及测试服务器 | |
CN109933504B (zh) | 一种硬盘延迟测试方法、装置、终端及存储介质 | |
CN109684167A (zh) | 应用程序cpu使用率的计算方法、装置、存储介质及终端 | |
CN114489801A (zh) | 高精度测量嵌入式系统中断时长的方法、系统及介质 | |
Gamblin et al. | Reconciling sampling and direct instrumentation for unintrusive call-path profiling of MPI programs | |
JP2007304765A (ja) | プロセッサシステム及びプロセッサシステムの性能測定方法 | |
CN101320416A (zh) | 一种检测软件处于调试状态的方法和系统 | |
CN108418730B (zh) | 网络流量测试方法、装置、设备以及计算机可读存储介质 | |
Larysch | Fine-grained estimation of memory bandwidth utilization | |
CN107423206A (zh) | 一种衡量系统管理中断时间的方法及装置 | |
Smejkal et al. | {E-Team}: Practical Energy Accounting for {Multi-Core} Systems |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
C06 | Publication | ||
PB01 | Publication | ||
C10 | Entry into substantive examination | ||
SE01 | Entry into force of request for substantive examination | ||
C14 | Grant of patent or utility model | ||
GR01 | Patent grant | ||
CF01 | Termination of patent right due to non-payment of annual fee | ||
CF01 | Termination of patent right due to non-payment of annual fee |
Granted publication date: 20091014 Termination date: 20171129 |