CN101727379B - Cpu利用率检测方法和装置 - Google Patents
Cpu利用率检测方法和装置 Download PDFInfo
- Publication number
- CN101727379B CN101727379B CN2010100340503A CN201010034050A CN101727379B CN 101727379 B CN101727379 B CN 101727379B CN 2010100340503 A CN2010100340503 A CN 2010100340503A CN 201010034050 A CN201010034050 A CN 201010034050A CN 101727379 B CN101727379 B CN 101727379B
- Authority
- CN
- China
- Prior art keywords
- time
- cpu
- discrete
- time part
- sliding
- 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
Landscapes
- Debugging And Monitoring (AREA)
Abstract
本发明提供了一种CPU利用率检测方法和装置。涉及嵌入式系统;解决了CPU利用率检测不准确的问题。该方法包括:在检测到触发条件时,确定离散时间部分和滑动时间部分;分别获取离散时间部分和滑动时间部分的CPU占用时间;根据所述离散时间部分和滑动时间部分的CPU占用时间,计算获得当前CPU利用率。本发明提供的技术方案适用于嵌入式系统。
Description
技术领域
本发明涉及嵌入式系统,尤其涉及一种CPU利用率检测方法和装置。
背景技术
目前嵌入式系统中运行的任务越来越多,系统处理的数据量也越来越大,对系统性能的要求就越来越高,实时监控系统运行状况就显得非常重要。CPU利用率的变化正可以反映出系统当前运行状况及各任务运行状况,是实现系统监控的一个重要标准。CPU利用率能说明CPU的工作状况,利用率越高说明CPU处于高速运转(繁忙)状态,这时候发热量大,利用率超过90%的话,时间长了很容易死机,如果散热不好的话,还会导致CPU烧毁,导致整个系统报废。为了避免以上情况的发生,如何实时的监控各任务及系统的运行状况而及时的采取措施就成为一个很重要的问题,要想真实地反映当前CPU占用情况,就需要保证CPU利用率的准确性。
现有技术中一般采用离散时间窗口的方法确定CPU利用率,即任务切换时对时间直接累加、保存时间窗口内的时间总数进行计算;另外一种方法是采用滑动时间窗口。
在使用上述离散时间窗口及滑动时间窗口方法检测CPU利用率时,存在如下问题:
通过离散时间窗口方法检测时,仅在发生任务切换时检测预置的时间窗内的CPU利用率,而在CPU执行任务的过程中,CPU的利用率可能随时产生变化,仅在任务切换时进行检测不能如实的反应当前的系统运行状况,导致检测结果不准确。
而使用滑动时间窗口方法检测CPU利用率时,在时间窗滑动时触发检测,但只检测发生窗口滑动的时间之前的时间点,当前时间点内的CPU占用时间不在检测范围内,检测结果不准确,不能实时反映CPU利用情况。
发明内容
本发明提供了一种CPU利用率检测方法和装置,解决了CPU利用率检测不准确的问题。
一种CPU利用率检测方法,包括:
在检测到触发条件时,确定离散时间部分和滑动时间部分,当前时间窗口的前N-1个离散间隔即为离散时间部分,当前离散间隔中流逝的时间即为滑动时间部分,N为所述时间窗内的离散间隔数量;
分别获取离散时间部分和滑动时间部分的CPU占用时间,具体的,根据表达式O=(Pt-Pt-1)*106/S+Q*106/Freq分别计算离散时间部分和滑动时间部分的CPU占用时间,其中,O为CPU占用时间,P为计算范围内的tick数,S为系统设定的频率,Q为1个tick内的CPU周期数,Freq为CPU主频;
根据所述离散时间部分和滑动时间部分的CPU占用时间,计算获得当前CPU利用率,具体的,根据表达式计算获得当前CPU利用率,其中,PT为CPU利用率,Ot为滑动时间部分中的CPU占用时间,为离散时间部分的CPU占用时间,t为滑动时间部分,为离散时间部分。
进一步的,所述触发条件具体为外部指令,所述确定离散时间部分和滑动时间部分包括:
获取监测时间窗中除当前离散间隔外全部其他离散间隔作为离散时间部分;
获取当前离散间隔内的流逝时间作为滑动时间部分。
进一步的,所述触发条件具体为发生任务切换,该方法还包括:
在检测到发生任务切换时,记录切换时间。
进一步的,所述确定离散时间部分和滑动时间部分包括:
将本次切换时间与上一次切换时间之间的时长作为离散时间部分;
将新任务执行的时间作为滑动时间部分。
本发明还提供了一种CPU利用率检测装置,包括:
时间确认模块,用于在检测到触发条件时,确定离散时间部分和滑动时间部分,当前时间窗口的前N-1个离散间隔即为离散时间部分,当前离散间隔中流逝的时间即为滑动时间部分,N为所述时间窗内的离散间隔数量;
CPU占用时间获取模块,用于分别获取离散时间部分和滑动时间部分的CPU占用时间,具体的,根据表达式O=(Pt-Pt-1)*106/S+Q*106/Freq分别计算离散时间部分和滑动时间部分的CPU占用时间,其中,0为CPU占用时间,P为计算范围内的tick数,S为系统设定的频率,Q为1个tick内的CPU周期数,Freq为CPU主频;
计算模块,用于根据所述离散时间部分和滑动时间部分的CPU占用时间,计算获得当前CPU利用率,具体的,根据表达式计算获得当前CPU利用率,其中,PT为CPU利用率,Ot为滑动时间部分中的CPU占用时间,为离散时间部分的CPU占用时间,t为滑动时间部分,为离散时间部分。
进一步的,上述CPU利用率检测装置还包括:
触发模块,用于检测计算CPU利用率的触发条件,在检测到触发条件时发起CPU利用率计算。
进一步的,上述CPU利用率检测装置,还包括:
切换记录模块,用于在检测到发生任务切换时,记录切换时间。
本发明的实施例提供了一种CPU利用率检测方法和装置,在发生需要检测CPU利用率的触发条件时启动检测,通过获取离散时间部分、滑动时间部分和这两部分中的CPU占用时间,计算当前的CPU利用率,确保了在需要检测CPU利用率时的实时检测,提高了CPU利用率检测的准确性。
附图说明
图1为本发明的实施例所使用的时间窗结构示意图;
图2为本发明的实施例一提供的一种CPU利用率检测方法的流程图;
图3为本发明的实施例一中时间窗移动情景示意图;
图4为本发明的实施例二提供的一种CPU利用率检测方法的流程图;
图5为本发明的实施例提供的一种CPU利用率检测装置的结构示意图;
图6为本发明的又一实施例提供的一种CPU利用率检测装置的结构示意图。
具体实施方式
本发明的实施例提供了一种CPU利用率检测方法,通过确定准确的CPU利用率以克服现有既存在的系统CPU利用率周期性起伏,易出现偏差,不能真实反应当前时刻运行状况,处理数据量庞大,给系统监控人员提供的数据不及时不准确等问题。
首先对本发明的实施例一进行介绍。
本发明实施例中,CPU利用率检测的触发条件具体为外部指令,本发明实施例所使用的时间窗结构如图1所示,在时间轴上每隔一个离散间隔就有一个离散时间点,从中选择N+1个连续的离散时间点(即N个离散间隔)组成时间窗,在当前时刻离开时间窗的末尾时,时间窗向后滑动一个离散间隔。时间窗的长度为监测周期T,离散间隔为监测时间单位Ti,离散间隔根据实际监测情况确定,如果更进一步保证监测结果的准确性,可以缩短离散间隔,比如监测周期为5秒,则可以离散为5个长度为1秒的离散间隔。
使用本发明实施例提供的CPU利用率检测方法完成检测的过程如图2所示,包括:
步骤201、设定系统运行时的CPU利用率告警上限值和下限值;
本步骤中,设置CPU利用率告警上限值和下限值,两值之间的区域即为CPU利用率正常的范围,如果CPU利用率超出这个范围则提示告警。
步骤202、在检测到触发条件时,确定离散时间部分和滑动时间部分;
本步骤中,首先在检测到外部指令时,启动一个较高优先级(要求任务优先级高于除了系统任务以外所有的任务的优先级)的监控任务,监控任务用于更新CPU占用时间。
如图3所示,当新的Ti到来时,时间窗口T后移,当前时间窗口的前N-1个离散间隔即为离散时间部分,当前离散间隔中流逝的时间t即为滑动时间部分。
步骤203、分别获取离散时间和滑动时间部分中的CPU占用时间;
本步骤中,存储离散时间部分的CPU占用时间,并记录当前Ti内CPU占用时间和当前Ti内流逝的时间t。
如果CPU占用时间不到1个tick,则根据1个tick内的CPU周期数Q和CPU主频Freq得出CPU占用时间O(单位us);否则,再加上CPU所占用的tick数,得到的就是总的CPU占用时间,具体按照表达式一进行计算,其中,O为CPU占用时间(可以是一个离散间隔内的,也可以是离散时间部分或滑动时间部分的CPU占用时间),P为tick数(CPU占用时间计算范围的起点和终点对应的tick数,Pt为终点对应的tick数,Pt-1为起点对应的tick数,Pt-Pt-1为计算范围内的tick数据),S为系统设定的频率,Q为1个tick内的CPU周期数(例如:1个tick为10个CPU周期,现在所经历的时间只有5个CPU周期而不到一个tick,那么这时的Q值为5),Freq为CPU主频。
O=(Pt-Pt-1)*106/S+Q*106/Freq 表达式一
可以分别计算各个离散间隔内的CPU占用时间,再把各个离散间隔内CPU占用时间进行累加得到离散时间部分的CPU占用时间。
步骤204、计算当前的CPU利用率;
本步骤中,根据前面存储的N-1个Ti内的CPU占用时间与当前Ti内的CPU占用时间得出当前时间窗T内的CPU占用时间,进而计算CPU利用率。
本步骤中,首先获取CPU占用时间Tc(前面N-1个时间离散间隔内CPU占用时间之和再加上当前离散间隔Ti内CPU占用时间Ot),另一个数值是总的时间TL,包括离散时间部分和滑动时间部分,这两个数值分别是在离散间隔内采用滑动时间窗口的方式统计的,保证了时间点的准确性和实时性。按照表达式二计算得到CPU利用率。
可选的,还可以根据CPU利用率来获取系统运行状况,提示CPU利用率与系统运行状况之间的关系描述,当监控到CPU利用率超过上限值或下限值时提示告警,携带CPU利用率最高的几个任务名及当前CPU利用率等信息。
需要说明的是,监控任务还可以由时间窗滑动这一事件触发,也可以设置一个监控任务的启动周期,如监控任务按照周期Tp(Tp<=Ti)定时更新当前T周期内最近N个Ti内的CPU占用时间。
在发生任务切换时,也需要检测CPU利用率,本发明的实施例二就针对这种情况,提出了一种CPU利用率检测方法,其具体过程如图4所示,包括:
步骤401、设定系统运行时的CPU利用率告警上限值和下限值;
本步骤中,设置CPU利用率告警上限值和下限值,两值之间的区域即为CPU利用率正常的范围,如果CPU利用率超出这个范围则提示告警。
步骤402、在检测到触发条件时,确定离散时间部分和滑动时间部分;
如果发生了任务切换,则通过任务切换统计CPU占用时间,进而计算CPU利用率,首先需要确定离散时间部分和滑动时间部分。
将发生切换前执行的任务称为OldTask,发生切换后执行的任务称为NewTask。在开始检测CPU利用率时NewTask占用的时间即为滑动时间部分,OldTask占用的时间即为离散时间部分。
OldTask占用时间为记录的本次切换发生时间与上一次切换发生时间之间的时长。
步骤403、分别确定离散时间部分和滑动时间部分中的CPU占用时间;
根据表达式一获取OldTask和NewTask的CPU占用时间。
获取滑动时间部分中的CPU占用时间,具体为统计NewTask执行时间内的CPU占用时间。
步骤404、根据所述离散时间部分和滑动时间部分的CPU占用时间,计算获得当前CPU利用率;
本步骤中,首先获取CPU占用时间Tc(OldTask时间内CPU占用时间之和再加上NewTask时间内CPU占用时间Ot),另一个数值是总的时间TL(OldTask的时间加上NewTask的时间),这两个数值分别是在离散时间点内采用滑动时间窗口的方式统计的,保证了时间点的准确性和实时性。然后,根据表达式二,计算当前CPU利用率。
可选的,还可以根据CPU利用率来获取系统运行状况,提示CPU利用率与系统运行状况之间的关系描述,当监控到CPU利用率超过上限值或下限值时提示告警,携带CPU利用率最高的几个任务名及当前CPU利用率等信息。
本发明的实施例还提供了一种CPU利用率检测装置,该装置的结构如图5所示,包括:
时间确认模块501,用于在检测到触发条件时,确定离散时间部分和滑动时间部分;
CPU占用时间获取模块502,用于分别获取离散时间部分和滑动时间部分的CPU占用时间;
计算模块503,用于根据所述离散时间部分和滑动时间部分的CPU占用时间,计算获得当前CPU利用率。
进一步的,上述CPU利用率检测装置如图6所示,还包括:
触发模块504,用于检测计算CPU利用率的触发条件,在检测到触发条件时发起CPU利用率计算。
切换记录模块505,用于在检测到发生任务切换时,记录切换时间。
上述CPI利用率检测装置,可以与本发明的实施例提供的一种CPU利用率检测方法相结合,在发生需要检测CPU利用率的触发条件时启动检测,通过获取离散时间部分、滑动时间部分和这两部分中的CPU占用时间,计算当前的CPU利用率,确保了在需要检测CPU利用率时的实时检测,提高了CPU利用率检测的准确性。
本领域普通技术人员可以理解实现上述实施例方法携带的全部或部分步骤是可以通过程序来指令相关的硬件完成,所述的程序可以存储于一种计算机可读存储介质中,该程序在执行时,包括方法实施例的步骤之一或其组合。
另外,在本发明各个实施例中的各功能单元可以采用硬件的形式实现,也可以采用软件功能模块的形式实现。所述集成的模块如果以软件功能模块的形式实现并作为独立的产品销售或使用时,也可以存储在一个计算机可读取存储介质中。
上述提到的存储介质可以是只读存储器,磁盘或光盘等。
以上所述,仅为本发明的具体实施方式,但本发明的保护范围并不局限于此,任何熟悉本技术领域的技术人员在本发明揭露的技术范围内,可轻易想到变化或替换,都应涵盖在本发明的保护范围之内。因此,本发明的保护范围应以权利要求所述的保护范围为准。
Claims (7)
1.一种CPU利用率检测方法,其特征在于,包括:
在检测到触发条件时,确定离散时间部分和滑动时间部分,当前时间窗口的前N-1个离散间隔即为离散时间部分,当前离散间隔中流逝的时间即为滑动时间部分,N为所述时间窗内的离散间隔数量;
分别获取离散时间部分和滑动时间部分的CPU占用时间,具体的,根据表达式O=(Pt-Pt-1)*106/S+Q*106/Freq分别计算离散时间部分和滑动时间部分的CPU占用时间,其中,O为CPU占用时间,P为计算范围内的tick数,S为系统设定的频率,Q为1个tick内的CPU周期数,Freq为CPU主频;
2.根据权利要求1所述的CPU利用率检测方法,其特征在于,所述触发条件具体为外部指令,所述获取离散时间部分和滑动时间部分包括:
获取监测时间窗中除当前离散间隔外全部其他离散间隔作为离散时间部分;
获取当前离散间隔内的流逝时间作为滑动时间部分。
3.根据权利要求1所述的CPU利用率检测方法,其特征在于,所述触发条件具体为发生任务切换,该方法还包括:
在检测到发生任务切换时,记录切换时间。
4.根据权利要求3所述的CPU利用率检测方法,其特征在于,所述确定离散时间部分和滑动时间部分包括:
将本次切换时间与上一次切换时间之间的时长作为离散时间部分;
将新任务执行的时间作为滑动时间部分。
5.一种CPU利用率检测装置,其特征在于,包括:
时间确认模块,用于在检测到触发条件时,确定离散时间部分和滑动时间部分,当前时间窗口的前N-1个离散间隔即为离散时间部分,当前离散间隔中流逝的时间即为滑动时间部分,N为所述时间窗内的离散间隔数量;
CPU占用时间获取模块,用于分别获取离散时间部分和滑动时间部分的CPU占用时间,具体的,根据表达式O=(Pt-Pt-1)*106/S+Q*106/Freq分别计算离散时间部分和滑动时间部分的CPU占用时间,其中,O为CPU占用时间,P为计算范围内的tick数,S为系统设定的频率,Q为1个tick内的CPU周期数,Freq为CPU主频;
6.根据权利要求5所述的CPU利用率检测装置,其特征在于,还包括:
触发模块,用于检测计算CPU利用率的触发条件,在检测到触发条件时发起CPU利用率计算。
7.根据权利要求5所述的CPU利用率检测装置,其特征在于,还包括:
切换记录模块,用于在检测到发生任务切换时,记录切换时间。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN2010100340503A CN101727379B (zh) | 2010-01-12 | 2010-01-12 | Cpu利用率检测方法和装置 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN2010100340503A CN101727379B (zh) | 2010-01-12 | 2010-01-12 | Cpu利用率检测方法和装置 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN101727379A CN101727379A (zh) | 2010-06-09 |
CN101727379B true CN101727379B (zh) | 2011-11-23 |
Family
ID=42448298
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN2010100340503A Expired - Fee Related CN101727379B (zh) | 2010-01-12 | 2010-01-12 | Cpu利用率检测方法和装置 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN101727379B (zh) |
Families Citing this family (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US9830242B2 (en) * | 2015-01-14 | 2017-11-28 | Mediatek Inc. | Loading calculation method and loading calculation system for processor in electronic device |
CN107870848B (zh) * | 2016-09-23 | 2020-08-28 | 腾讯科技(深圳)有限公司 | Cpu性能冲突的检测方法、装置和系统 |
-
2010
- 2010-01-12 CN CN2010100340503A patent/CN101727379B/zh not_active Expired - Fee Related
Also Published As
Publication number | Publication date |
---|---|
CN101727379A (zh) | 2010-06-09 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
US9247502B2 (en) | Method and apparatus for power management on mobile devices and associated mobile devices | |
US7840825B2 (en) | Method for autonomous dynamic voltage and frequency scaling of microprocessors | |
CN103218173B (zh) | 存储控制方法及装置 | |
US20090102514A1 (en) | Duty cycle detecting circuit for pulse width modulation | |
WO2015007247A1 (zh) | 耗电异常的应用程序获取方法、装置和移动终端 | |
CN106959386B (zh) | 一种漏电流检测方法及移动终端 | |
CN104932963B (zh) | 管理终端的方法及装置 | |
US20120084028A1 (en) | Framework and Methodology for a Real-Time Fine-Grained Power Profiling with Integrated Modeling | |
CN103064445B (zh) | 表面温度控制方法及手持电子设备 | |
CN104203095A (zh) | 睡眠状态管理装置、睡眠状态管理方法和睡眠状态管理程序 | |
CN103543819A (zh) | 功耗控制方法和终端 | |
CN103186439A (zh) | 服务器测试系统及服务器稳定性测试方法 | |
CN102369514B (zh) | 一种建立检查点的方法和系统 | |
US20200381202A1 (en) | System and method for energy monitoring | |
US10082598B2 (en) | Sensor power management | |
CN101727379B (zh) | Cpu利用率检测方法和装置 | |
US20140327467A1 (en) | Energy tracking system | |
CN109581437A (zh) | 一种可穿戴设备及其定位方法、装置 | |
CN105516510A (zh) | 移动终端唤醒方法及装置 | |
CN108107401B (zh) | 一种基于智能表的开盖检测方法及智能表 | |
CN103106784A (zh) | 一种水利多参数采集变送装置及方法 | |
CN204302672U (zh) | 一种智能手表 | |
Jevtic et al. | Lucid dreaming: Reliable analog event detection for energy-constrained applications | |
CN113711060B (zh) | 具有变化采样频率的自适应功率测量结果累加器 | |
CN107341090A (zh) | 一种基于LabVIEW的实时监控系统 |
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: 20111123 Termination date: 20220112 |