cpu使用率计算方法

发布时间:2020-05-06 00:28:27

cpu使用率计算方法



  cpu使用率计算方法一  使用cpu的处理能力基准计算实时cpu占用率

  具体描述:

  (1) 在rtos系统启动前, 使用tick中断测试cpu的处理能力基准 cpuperformancebase;

  (2) 在系统进入运行后, 使用空闲任务执行与测试cpu处理能力基准完全相同的算法, 得到rtcpuperformance.

  (3) 周期地计算cpu占用率, 并清除rtcpuperformance的值, 一般每秒钟计算一次:

  realtime cpu load = 1 - (rtcpuperformance/cpuperformancebase) * 100%

  优点:

  (1) 实现简单

  (2) 所得到的cpu占用率非常准确, 误差只取决于cpuperformancebase的测试结果和整除时的余数, 通常误差小于1%

  (3) 不占用硬件资源

  缺点:

  (1) cpu必须一直全速运行, 不能修改cpu主频, 也不能使cpu进入掉电保护模式

  (2) 不能得到系统中每个任务对cpu占用率的贡献

  (3) 必须有一个空闲任务才能计算

  评价:

  这个算法只适用于工控, 电信等对不需要使cpu进入掉电保护模式的领域.

  在tick中断中对rtos中的任务进行采样

  具体描述:

  (1) 系统进入运行后, 每次tick中断发生时, 采样一下当前正在执行的任务, 如果cpu处于halt态, 累加halttimes

  (2) 周期性地计算cpu占用率, 一般每秒钟计算一次, 并清除halttimes:(tickintfrequance表示tick中断的发生频率)

  realtime cpu load = halttimes / tickintfrequance

  某个任务对cpu占用率的贡献 = 一个周期内该任务被采样到的次数 / tickintfrequance * 100%

  优点:

  (1) 实现简单

  (2) 支持cpu掉电模式

  (3) 可以大致得到每个任务对cpu占用率的贡献

  缺点:

  (1) 误差取决于tick的频率和os中每个任务的运行时长, 因此误差非常大

  评价:

  这个算法适用于对cpu占用率精度要求不高的消息电子产品.

  精确计算每个任务对cpu占用率的贡献

  具体描述:

  (1) 除tick中断外,另开一个比tick中断频率快若干倍的周期中断(就叫auxtimer中断吧), 这个中断只对一个计数器执行一次累加.

  (2) 在os每次执行任务切换时读取该计数器的值(auxtimer), 并保存到tcb中, 比如, 从任务task1切换到任务task2, 算法如下:

  task1, 换出动作:

  task1的结束运行时间 = auxtimer的当前值

  task1的总运行时间 = task1的总运行时间 + task1的结束运行时间 - task1的开始运行时间

  task2, 换入动作:

  task2的开始运行时间 = auxtimer的当前值

  (以上算法中没有考虑数字回绕, 在工程实现时应当考虑, 发生回绕后任务的结束运行时间小于任务的开始运行时间.

  (3) 周期性地计算cpu占用率, 一般每秒钟计算一次, 并清除每个任务的总运行时间, 下面的公式中, 一个周期内的总时间等于auxtimer周期除以tick周期得到的倍数:

  某个任务对cpu占用率的贡献 = 一个周期内该任务的总运行时间 / 一个周期内的总时间

  realtime cpu load = 所有任务的cpu占用率之和

  对这个方法进行简单改进, 就可以实现对cpu占用率进行实时测量, 看官自己动动脑筋吧.

  优点:

  (1) 误差取决于auxtimer中断的频率, 可以非常精确地得到每个任务对cpu占用率的贡献

  缺点:

  (1) 复杂, 加大了任务切换时的开销

  (2) 和前两种算法相比, 这个算法要多占用一个硬件资源

  cpu使用率计算方法二  需要两个进程,一个为idle进程;一个为统计进程。

  idle进程在系统空闲时执行,每执行一次为一个计数器count加一。统计进程每秒执行一次负责计算cpu使用率,并把count清零。

  首先要求出没有其它进程时count一秒中内由零开始的累加值max,这通常在系统初始化时完成。有其它进程时idle进程执行的次数减少,count的累加值也小于max。

  统计进程计算cpu使用率时采用以下公式:

  usage=(1-count/max)*100。

  再来介绍下cpu使用率:

  cpu使用率其实就是运行的程序占用的cpu资源,表示机器在某个时间点的运行程序的情况。

  使用率越高,说明机器在这个时间上运行了很多程序,反之较少。使用率的高低与cpu强弱有直接关系。现代分时多任务操作系统对 cpu 都是分时间片使用的。

 

看了“cpu使用率如何计算 ”文章的

cpu使用率计算方法

相关推荐