CN100504808C - 一种测量多任务操作系统任务cpu占用率的方法 - Google Patents
一种测量多任务操作系统任务cpu占用率的方法 Download PDFInfo
- Publication number
- CN100504808C CN100504808C CNB2006101269631A CN200610126963A CN100504808C CN 100504808 C CN100504808 C CN 100504808C CN B2006101269631 A CNB2006101269631 A CN B2006101269631A CN 200610126963 A CN200610126963 A CN 200610126963A CN 100504808 C CN100504808 C CN 100504808C
- Authority
- CN
- China
- Prior art keywords
- task
- statistics
- duration
- interrupt handling
- handling program
- 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.)
- Active
Links
Images
Landscapes
- Debugging And Monitoring (AREA)
Abstract
本发明提出一种测量多任务操作系统任务CPU占用率的方法,包含如下步骤:(a)创建一个高优先级定时统计任务,对所有的统计量清零,设定统计间隔;(b)记录中断处理例程入口以及出口的时间点,二者差值为中断处理例程一次执行时长,对其进行累加;(c)任务切换时,分别记录切换入任务的任务开始时间点和切换出任务的任务结束时间点,同一任务的任务结束时间点和任务开始时间点之差,再减去该任务执行过程中所包含的中断处理例程执行时长,即为该任务的一次执行时长,对其进行累加;(d)统计间隔到时,将累加得到各任务的总执行时长和中断处理例程的总执行时长相加,得到该统计间隔内系统的总执行时长,从而计算各任务和中断的CPU占用率。
Description
技术领域
本发明涉及多任务操作系统,特别涉及一种测量多任务操作系统任务CPU占用率的方法。
背景技术
在计算机软件系统中,基本上都采用了某种形式的多任务操作系统,所有的应用和功能都是通过任务承载,并在多任务协作下完成的。由于系统应用日益复杂,多任务操作系统的任务数越来越多,任务的运行状态在多任务的协作中起着越来越重要的作用,而任务的CPU占用率是任务运行状态的一个很重要组成部分。如果可以实时精确测量系统中各个任务的CPU占用率,则可用于确定整个系统的设计是否是正常的,各个任务的设计是否是正确的、是否存在执行效率的问题。
在目前的操作系统中,对任务CPU占用率的测量方法有两类:
1.专利号CN02132247.3中描述的硬件测量方法。
该方法描述了一种用于测量实时系统中任务的CPU占用率的装置,包括:用于在标志位中注册待测任务的任务注册单元;用于在设置的标志位中选择具有高优先级的标志位的地址的任务选择模块;用于处理由任务选择模块输入的位地址并生成计数信号的计数信号发生单元;用于根据计数信号来计数任务执行时长的计数单元;以及用于在任务执行时设定标志位并根据由计数单元生成的计数值计算执行次数和任务的CPU占用率的CPU。该专利是使用硬件计数器来计时的,应该是实时精确的,但没有说明计时精度。这种方法存在的缺陷主要有:需要有专利的硬件装置,如果配置,则将提高成本。
2.软件方法,比如嵌入式操作系统VXWORKS提供的SPY工具。该工具在系统中使用了定时间隔的硬件辅助时钟中断,中断到达时即进行采样;额外增加一个高优先级的任务,用于上报采样后的统计数据。这个方法有两个缺陷:
该方法认为,当采样时间点到时,就认为当前运行的任务运行了一个采样间隔。一般来说,在一个采样间隔内,可发生多次任务切换,即多个任务都运行过,但采样的做法只会认为采样时的当前任务运行过。特别是如果采样时间点处于操作系统内核任务切换过程刚结束不久时,则当前任务运行到这个采样时间点的实际运行的时长是远小于一个采样间隔,而该方法也只能认为当前任务运行了一个采样间隔。在这种情况下,任务的CPU占用率值与其它情况下的值相差很大。该方法只有在一次采样间隔内基本不发生任务切换才是较准确的,而这仅仅是假设,实际运行的系统,特别是复杂的电信级系统,常常不是如此。
如果要更准确地检测,则必须减少采样间隔,即提高硬件辅助时钟率。但这样会使检测方法本身所占用的系统开销增大,影响系统的应用功能,造成矛盾。故该方法默认配置的硬件辅助时钟中断仅为10ms,如果是性能较强的CPU,可人为改为1ms。该方法的计时精度为毫秒级,精度不足。
该方法在不同的情况下,存在的误差是不同的,有时还存在很大的误差,并且计时精度不足。因而一般用于简单的调试,而不用于实际系统运行。
由上述可知,现有方法存在不少缺点有待改进。
发明内容
本发明的目的是提供一种实现多任务操作系统任务CPU占用率的实时精确测量的方法。
本发明提出一种测量多任务操作系统任务CPU占用率的方法,包含如下步骤:
(a)创建一个定时统计任务,其优先级高于待统计任务,对所有的统计量清零,设定一统计间隔,启动统计流程;
(b)记录待统计任务到中断处理例程的入口以及中断处理例程到待统计任务的出口的时间点,二者差值为中断处理例程一次执行时长,对其进行累加;
(c)发生待统计任务切换时,对切换入的待统计任务,记录此次调度的待统计任务开始时间点,对切换出的待统计任务,记录此次调度的待统计任务结束时间点,同一待统计任务的结束时间点和开始时间点之差,再减去该待统计任务执行过程中所包含的中断处理例程执行时长,即为该待统计任务的一次执行时长,对其进行累加;
(d)设定的统计间隔到时,将累加得到的各待统计任务的总执行时长和中断处理例程的总执行时长相加,得到该统计间隔内系统的总执行时长,则各待统计任务的CPU占用率=该待统计任务总执行时长/系统的总执行时长,中断的CPU占用率=中断处理例程总执行时长/系统的总执行时长。
在步骤(a)中,需要结合具体操作系统的任务切换过程挂接一个任务切换钩子函数,该任务切换钩子函数执行步骤(c)中流程。
所述步骤中时间点的记录是通过读取硬件计时器计时值得到的,所述统计间隔不得大于硬件计时器的最大计时长度。所述硬件计时器的精度等于或高于微秒级。
所述统计量为4字节长。
所述步骤(b)是在所有中断处理例程的共同入口的开始处读取硬件计时器值为Tib,结束处读取硬件计时器值为Tie,将其差值Tie-Tib即为中断处理例程的此次执行时长Di,在一次待统计任务执行过程中对Di进行累计Dits=Dits+Di,Dits即为在一次待统计任务执行过程中的中断处理例程执行时长。
Dits是在任务切换钩子函数中清零的,即其表示的是在一次待统计任务执行过程中的中断处理例程执行时长,而从上次的统计点到本次的调度结束点之间,中断处理例程的累计执行时长Dit=Dit+Dits。
所述步骤(d)中统计完成后,对所有统计量清零。
与现有技术相比,本发明采用的硬件计时器在目前的硬件配置上均具备,且为微秒级以上,不需要额外的硬件设备,具有成本节省,计时精度高的优点;另外,设定较短的统计间隔时,可以实时的对不同的任务和中断,进行精确的CPU占用率测量。由于本发明不是一种采样方法,而是在任务切换时,记录切换出任务的运行时长,记录切换入任务开始运行的时间点。因此可以准确地测量任务的运行时长。
附图说明
图1是本发明实施例用于测量多任务操作系统任务CPU占用率装置的结构方框图;
图2是本发明实施例系统任务运行示意图。
具体实施方式
下面结合附图和实施例对本发明作进一步详细的说明。
3G系统由多个嵌入式系统组成,这里以其中一个单板嵌入式系统为例说明,这个系统使用PPC755 CPU和VXWORKS操作系统。
图1是本发明实施例用于测量多任务操作系统任务CPU占用率的装置的结构方框图。包括硬件计时器101,PPC755 CPU和VXWORKS操作系统102,中断计数器103和PC显示设备104。
本实例中硬件计时器是PPC755 CPU BSP提供的纳秒级的硬件计时器,PPC755 CPU所有中断的共同入口是500号异常向量处理例程,所有的统计量都是4字节长的变量。
本发明提出的多任务操作系统任务CPU占用率的测量方法中,首先假定系统有X个任务,编号为1至X,m,n分别为其中的某一个任务编号。系统运行如图2所示。
其中,任务和中断所对应的横线表示占用CPU运行时长,由于在进入中断服务时并不产生任务切换,则任务的运行时长包含了中断的运行时长,每个横线都有开始和结束的时间点记录,具体详见下面的步骤。
本发明提出的方法其主要步骤如下:
第一步:使用VXWORKS的接口挂接一个任务切换钩子函数。创建一个优先级30的定时统计任务,统计间隔设为20s,该任务刚启动时,对所有的记录和统计量做清零操作,启动统计流程。
第二步:在所有中断处理例程的共同入口,即500号异常向量处理例程的开始处读取硬件计时器值为Tib,结束处读取硬件计时器值为Tie,其差值Tie-Tib即为中断处理例程的此次执行时长Di,这个时长也可能包含了中断处理例程嵌套了其它的中断处理例程的情况,本实施例只记录任务到中断处理例程的入口以及中断处理例程到任务的出口的时间点。这个时长不区分是哪个中断处理例程的执行时长。
在一次任务执行过程中,可能有多次的中断处理例程执行,Di表示中断处理例程的一次执行时长,则Dits=Dits+Di表示中断处理时长的累加。
第三步:在任务切换钩子函数中,有如下的处理步骤:
读出硬件计时器计时值Tc;
对切换入的任务m,记录其此次调度的开始时间点为Tmb,Tmb=Tc;
对切换出的任务n,记录此次调度的结束时间点为Tne,Tne=Tc,而任务n上一次切换入的开始时间点记录为Tnb。任务n从上次切换入到此次切换出是一次任务执行,其中包含了中断处理例程的执行时长,则任务执行时长为Dc=Tne-Tnb-Dits。从上次的统计点到本次的调度结束点之间,以任务n为例,其累计执行时长为Dnt=Dnt+Dc。
Dits是在任务切换钩子函数中清零的,则Dits表示在一次任务执行过程中的中断处理例程执行时长。而从上次的统计点到本次的调度结束点之间,中断处理例程的累计执行时长Dit=Dit+Dits。
第四步:在定时统计任务每次统计时,则从上一次统计到本次统计之间,以任务n为例,其执行时长就为Dnt,中断处理例程的执行时长为Dit。每次统计时累加所有的任务执行时长,再加上中断处理例程执行时长Dit,得到系统总的执行时长Dt,各任务(以任务n为例)千分比CPU占用率Cnt=Dnt*1000/Dt,中断千分比CPU占用率Cit=Dit*1000/Dt。
第五步:每次统计完成后,把系统总的执行时长Dt、各任务的执行时长Dnt、各任务千分比CPU占用率Cnt、中断处理例程的执行时长Dit、中分千分比CPU占用率Cit输出到后台上,同时把Dt、各任务Dnt、各任务Cnt、Dit、Cit清0。
Claims (8)
1、一种测量多任务操作系统任务CPU占用率的方法,其特征在于包含如下步骤:
(a)创建一个定时统计任务,其优先级高于待统计任务,对所有的统计量清零,设定一统计间隔,启动统计流程;
(b)记录待统计任务到中断处理例程的入口以及中断处理例程到待统计任务的出口的时间点,二者差值为中断处理例程一次执行时长,对其进行累加;
(c)发生待统计任务切换时,对切换入的待统计任务,记录此次调度的待统计任务开始时间点,对切换出的待统计任务,记录此次调度的待统计任务结束时间点,同一待统计任务的结束时间点和开始时间点之差,再减去该待统计任务执行过程中所包含的中断处理例程执行时长,即为该待统计任务的一次执行时长,对其进行累加;
(d)设定的统计间隔到时,将累加得到的各待统计任务的总执行时长和中断处理例程的总执行时长相加,得到该统计间隔内系统的总执行时长,则各待统计任务的CPU占用率=该待统计任务总执行时长/系统的总执行时长,中断的CPU占用率=中断处理例程总执行时长/系统的总执行时长。
2、如权利要求1所述的方法,其特征在于:在步骤(a)中,需要结合具体操作系统的任务切换过程挂接一个任务切换钩子函数,该任务切换钩子函数执行步骤(c)中流程。
3、如权利要求1或2所述的方法,其特征在于:所述步骤中时间点的记录是通过读取硬件计时器计时值得到的,所述统计间隔不得大于硬件计时器的最大计时长度。
4、如权利要求3所述的方法,其特征在于:所述硬件计时器的精度等于或高于微秒级。
5、如权利要求1所述的方法,其特征在于:所述统计量为4字节长。
6、如权利要求3所述的方法,其特征在于:所述步骤(b)是在所有中断处理例程的共同入口的开始处读取硬件计时器值为Tib,结束处读取硬件计时器值为Tie,将其差值Tie-Tib即为中断处理例程的此次执行时长Di,在一次待统计任务执行过程中对Di进行累计Dits=Dits+Di,Dits即为在一次待统计任务执行过程中的中断处理例程执行时长。
7、如权利要求6所述的方法,其特征在于:Dits是在任务切换钩子函数中清零的,即其表示的是在一次待统计任务执行过程中的中断处理例程执行时长,而从上次的统计点到本次的调度结束点之间,中断处理例程的累计执行时长Dit=Dit+Dits。
8、如权利要求1所述的方法,其特征在于:所述步骤(d)中每次统计完成后,对所有统计量清零。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CNB2006101269631A CN100504808C (zh) | 2006-09-11 | 2006-09-11 | 一种测量多任务操作系统任务cpu占用率的方法 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CNB2006101269631A CN100504808C (zh) | 2006-09-11 | 2006-09-11 | 一种测量多任务操作系统任务cpu占用率的方法 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN101145125A CN101145125A (zh) | 2008-03-19 |
CN100504808C true CN100504808C (zh) | 2009-06-24 |
Family
ID=39207662
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CNB2006101269631A Active CN100504808C (zh) | 2006-09-11 | 2006-09-11 | 一种测量多任务操作系统任务cpu占用率的方法 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN100504808C (zh) |
Families Citing this family (15)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
EP2313827B1 (en) | 2008-06-11 | 2019-07-24 | QUALCOMM Incorporated | Method and system for measuring task load |
CN102831046A (zh) * | 2011-06-16 | 2012-12-19 | 中兴通讯股份有限公司 | 通讯系统中一种软件性能采集的方法及装置 |
CN102968376B (zh) * | 2012-12-10 | 2015-01-21 | 北京神舟航天软件技术有限公司 | 基于执行路径全过程的系统窗口期滑动测试方法 |
CN103106111B (zh) * | 2013-01-30 | 2016-01-27 | 迈普通信技术股份有限公司 | 多任务操作系统中任务优先级反转的检测系统及方法 |
CN103164321A (zh) * | 2013-03-20 | 2013-06-19 | 华为技术有限公司 | 中央处理器占用率测量方法及装置 |
CN105337791A (zh) * | 2014-08-14 | 2016-02-17 | 腾讯科技(深圳)有限公司 | 数据监控方法及装置 |
CN104572414A (zh) * | 2014-12-23 | 2015-04-29 | 深圳市邦彦信息技术有限公司 | 一种用于vxWorks的CPU占用率检测方法和系统 |
CN106708709A (zh) * | 2015-07-30 | 2017-05-24 | 中兴通讯股份有限公司 | Cpu占用率检测方法及装置 |
CN110083495A (zh) * | 2018-01-26 | 2019-08-02 | 上海新岸线电子技术有限公司 | 一种基于mips分析线程占用cpu的方法 |
CN109002377A (zh) * | 2018-07-26 | 2018-12-14 | 郑州云海信息技术有限公司 | 一种处理器检测方法、处理器检测装置以及计算机设备 |
KR102085899B1 (ko) * | 2018-12-10 | 2020-03-06 | 현대오트론 주식회사 | 자동차 전자제어장치의 사용량 모니터링 방법 및 모니터링 유닛 |
CN111414295B (zh) * | 2020-03-09 | 2023-06-30 | 浙江大华技术股份有限公司 | 一种cpu占用率的统计方法、装置、设备及介质 |
CN111913805B (zh) * | 2020-07-31 | 2023-11-28 | 北京天融信网络安全技术有限公司 | 一种cpu利用率计算方法及装置 |
CN113282450A (zh) * | 2021-05-12 | 2021-08-20 | 上海微波技术研究所(中国电子科技集团公司第五十研究所) | 基于VxWorks系统的进程CPU负荷监控方法和系统 |
CN113419917B (zh) * | 2021-06-23 | 2024-06-11 | 蔚然(南京)动力科技有限公司 | 一种嵌入式操作系统任务和中断的cpu负载率计算方法 |
-
2006
- 2006-09-11 CN CNB2006101269631A patent/CN100504808C/zh active Active
Also Published As
Publication number | Publication date |
---|---|
CN101145125A (zh) | 2008-03-19 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN100504808C (zh) | 一种测量多任务操作系统任务cpu占用率的方法 | |
JP5299161B2 (ja) | 計算機装置および消費電力のサンプリング方法 | |
CN101625657B (zh) | 监控数据处理设备和概括监控数据 | |
CN101238383B (zh) | Gps处理装置 | |
US7788511B2 (en) | Method for measuring utilization of a power managed CPU | |
US20080104610A1 (en) | Hardware threads processor core utilization | |
CN101344865B (zh) | 一种cpu占用率测量方法及装置 | |
CN100501694C (zh) | 处理器利用率的测量装置及方法 | |
US5920689A (en) | System and method for low overhead, high precision performance measurements using state transitions | |
US8230270B2 (en) | Monitoring device | |
CN100549979C (zh) | 系统任务的cpu占用率检测方法及系统 | |
CN1523500A (zh) | 可以激活其他线程的可编程事件驱动的让步机制 | |
EP2239664A2 (en) | Context switch sampling | |
US9703669B2 (en) | Apparatus and method for distributed instruction trace in a processor system | |
EP2847683B1 (en) | Processor device with instruction trace capabilities | |
CN103164321A (zh) | 中央处理器占用率测量方法及装置 | |
CN103197971B (zh) | Windows操作系统Pentium Ⅳ架构下高精度低CPU占用率定时器的实现方法 | |
CN114489801A (zh) | 高精度测量嵌入式系统中断时长的方法、系统及介质 | |
CN101526831B (zh) | 用于在多个时钟域之间提升确定性的装置、方法和系统 | |
US9195524B1 (en) | Hardware support for performance analysis | |
CN105183930A (zh) | 设置和使用硬件定时器的方法以及装置 | |
US7881906B2 (en) | Method, system and computer program product for event-based sampling to monitor computer system performance | |
US20100269117A1 (en) | Method for Monitoring System Resources and Associated Electronic Device | |
Kwon et al. | KTAS: analysis of timer latency for embedded linux Kernel | |
CN104021059A (zh) | 一种事件顺序记录测试信号产生系统及其产生方法 |
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 |