一种检测实时操作系统CPU占用率的方法技术方案

技术编号:2860037 阅读:323 留言:0更新日期:2012-04-11 18:40
本发明专利技术的一种检测实时操作系统CPU占用率的方法,其包括以下步骤:在系统启动时初始化相关的变量;进行CPU处理速度检测,获得基准值;启动空闲任务开始运行无限循环,并记录循环次数;在定时任务时间到时,检查是否到了所述CPU占用率的计算点,没有则执行其他事务;到所述CPU占用率计算点时,根据下述公式进行测算:1000-((总循环执行时间*空闲任务执行循环次数)/(总循环次数*统计时间))*1000计算出所述CPU占用率。本发明专利技术方法不需要任何其他复杂的额外的操作,实现的代码非常简短,通用性强,并作为一个独立的单元,可随时加入系统或从系统中剥离,简单易懂、易用、灵活性高。

【技术实现步骤摘要】

本专利技术涉及一种采用任务调度机制的实时操作系统进行通讯软件开发的领域,尤其涉及一种基于实时操作系统的CPU占用率的检测方法。
技术介绍
在嵌入式软件开发过程中,当多个任务运行在一块目标板上时,各个任务需要根据一定的规则占用CPU运行,因此通过对CPU占用率的检测,可以检测出系统在某一时间段内的忙闲情况,从而调整任务自身的属性、减少任务间的相互影响,最终使系统达到较为理想的吞吐量值;而且当系统发生某些故障时,通过对CPU占用率的检测也能达到查错的目的。目前普遍使用的CPU占用率检测方法是与实时操作系统密切结合的统计任务执行次数法,此方法要对任务进行运行计数,而要对任务进行运行计数就需要实时操作系统内核提供任务切换时的钩子函数,由于实时操作系统的实现的多样性,如果它没有提供这样的切入内核的方法,就无法实现CPU占用率的统计。现有技术还有一种方法是利用实时操作系统自身提供的CPU占用率检测方法,如vxworks系统提供的spy功能。但实践中表明使用该功能会在系统中额外增加一个优先级非常高的任务,同时其在显示指定时间段内系统执行情况的信息量过多,而且比较复杂难懂,其中包含了中断和内核切换的时间数统计等数值。并且当统计的时间点正处于内核切换过程中时,所检测到的CPU占用率值与其它情况下的值相差很大,而应用者一般往往只需要知道应用本身的CPU占用率情况。因此现有技术存在上述缺陷,有待于进一步改进。
技术实现思路
本专利技术的目的在于提供一种检测实时操作系统CPU占用率的方法,针对目前广泛应用于嵌入式开发的各种实时操作系统环境,提出一种基于该环境的CPU占用率检测方法,该方法不影响实时操作系统自身的运行,其通过计算出具体CPU的处理速度就可以实现检测CPU的占用率。本专利技术的技术方案如下一种检测实时操作系统CPU占用率的方法,其包括以下步骤a)在系统启动时初始化相关的变量;b)进行CPU处理速度检测,获得基准值;c)启动空闲任务开始运行无限循环,并记录循环次数;d)在定时任务时间到时,检查是否到了所述CPU占用率的计算点,没有则执行其他事务;e)到所述CPU占用率计算点时,根据下述公式CPU占用率=1000-((总循环执行时间*空闲任务执行循环次数)/(总循环次数*统计时间))*1000计算出所述CPU占用率。所述的方法,其中,所述方法还包括所述系统在执行循环时增加保护机制,进行关中断;在循环次数到的判断前开中断,取消保护,以使系统时钟中断得以处理。所述的方法,其中,所述CPU占用率值可以通过与历史值的比较,获得系统运行至今的CPU占用率峰值。所述的方法,其中,所述系统还设置有一输出CPU占用率情况的时间,在该时间到时将所述CPU占用率信息值输出到对应显示设备上。所述的方法,其中,所述系统启动时初始化相关的变量包括总循环时间变量、空闲任务循环计数变量、统计时间变量、当前CPU占用率值变量和CPU占用率峰值变量。本专利技术所提供的一种检测实时操作系统CPU占用率的方法,由于使用者只需要在第一次时根据需要调整好总循环次数的值,并在系统的定时任务中添加计算处理就可以了,不需要任何其他复杂的额外的操作;而且本专利技术方法实现的代码非常简短,通用性强,适用于各种采用任务调度的实时操作系统;本专利技术方法作为一个独立的单元,可随时加入系统或从系统中剥离,其计算过程对整个系统性能的影响较小。本专利技术方法具有简单、灵活性高的优点。附图说明图1a为本专利技术方法的系统初始化时的检测原理示意图;图1b为本专利技术方法系统运行中的检测原理图;图2为本专利技术方法的主流程示意图;图3为本专利技术方法的CPU处理速度计算流程图;图4为本专利技术方法的空闲任务执行流程示意图;图5为本专利技术方法的CPU占用率计算流程示意图。具体实施例方式下面结合附图,通过具体实施例对本专利技术方法加以详细描述首先说明使用本专利技术方法检测CPU占用率的原理。在实时操作系统中,单位时间内的CPU处理能力是一定的,根据这点就可以在系统初始化的最初位置对CPU处理速度进行测定,并通过一个衡量值来表示之。如图1a所示的,计算当时CPU处理指定总循环次数的有限次数循环所使用的时间,即执行了指定总循环次数的有限次数循环,得到总循环执行时间T,该时间的衡量单位就是该实时操作系统的计时单位(时钟节拍),也即计时基准值。总循环次数/总循环执行时间就可以表示单位时间内CPU全部忙碌时的处理速度,且表明在总循环执行时间内,CPU最多处理总循环次数次循环。一般情况下,要求得到的总循环执行时间为一秒,并根据这个要求来设置总循环次数的值。对于不同CPU,由于其处理速度的不同,总循环次数的值应相应改变。CPU处理速度越快,该值就越大。实时操作系统中的空闲任务是在CPU相对较闲时被调度运行的。在该任务中可统计无限循环执行的次数。这样,在定时任务近似于总循环执行时间的CPU占用率统计时间,如图1b中的所示的时间T1,到时,空闲任务此时执行的循环次数的值就表明了该任务在统计时间段内的执行比例,如图1b所示。通过比例式(总循环次数*CPU空闲比例)/总循环执行时间=空闲任务执行循环次数/统计时间(式1)的计算,就可以得到在统计时间内CPU空闲的比例为CPU空闲比例=(总循环执行时间*空闲任务执行循环次数)/(总循环次数*统计时间)如果设统计时间内CPU运行状态为1,则CPU忙碌的比例即为CPU忙碌比例=1-CPU空闲比例最后就可以近似的计算出CPU占用率为CPU占用率=1000-((总循环执行时间*空闲任务执行循环次数)/(总循环次数*统计时间))*1000(式2)此公式中为了减小误差和基于通讯用CPU的特性(如有些CPU没有浮点运算功能)考虑,将得到的值放大了1000倍,即保留了计算结果值的4位有效位。通过上面的描述,可以看出为了使计算结果更精确,就必须使总循环执行时间的值尽量与统计时间的值接近。因此根据CPU的不同,需要在系统调试初期对总循环次数进行校正。本专利技术方法的主要流程图如图2所示,由于实时操作系统并发处理的特殊性,此流程图显示的是个不连续的处理过程。首先系统启动运行后,在初始化阶段,对计算CPU占用率要使用的总循环时间变量、空闲任务循环计数变量、统计时间变量、当前CPU占用率值变量和CPU占用率峰值变量等变量进行初始化;然后计算CPU处理速度,并保存总循环时间;启动空闲任务。之后,将控制权交给实时操作系统,由操作系统调度优先级较高的任务运行。当系统空闲时,会运行优先级最低的空闲任务,执行无限循环计数。当系统时钟定时到时,会运行定时任务,如果CPU占用率的统计时间到了,就进行CPU占用率的计算。以下说明主要步骤的流程图1、计算CPU处理速度此时需要注意的是系统可能由于受到外界的干扰,如中断等,造成计算的结果异常。此时必须在执行循环时增加保护机制,如关中断;在循环次数到的判断前开中断,取消保护,以使系统时钟中断得以处理。这样即可以保证前后两次记录系统时间的正确性,也可以保证整个循环计数的过程不受外界的干扰。如图3所示,为本专利技术方法的所述CPU处理过程,首先循环计数清零,开始循环计数,并记录当前系统时间;然后开始执行循环,每循环一次,所述循环计数加1,直至预定循环次数到;结束循环,并记录结束时的系统时间;将先后得到的系统时间相减本文档来自技高网...

【技术保护点】
一种检测实时操作系统CPU占用率的方法,其包括以下步骤:a)在系统启动时初始化相关的变量;b)进行CPU处理速度检测,获得基准值;c)启动空闲任务开始运行无限循环,并记录循环次数;d)在定时任务时间到时,检查 是否到了所述CPU占用率的计算点,没有则执行其他事务;e)到所述CPU占用率计算点时,根据下述公式:CPU占用率=1000-((总循环执行时间*空闲任务执行循环次数)/(总循环次数*统计时间))*1000,计算出所述CPU占 用率。

【技术特征摘要】

【专利技术属性】
技术研发人员:邱静陈爱民
申请(专利权)人:中兴通讯股份有限公司
类型:发明
国别省市:94[中国|深圳]

网友询问留言 已有0条评论
  • 还没有人留言评论。发表了对其他浏览者有用的留言会获得科技券。

1