CPU 占用百分比是如何计算的?

CPU 占用百分比是如何计算的?

在我的 Ubuntu 12.04 中,使用 psensor,我看到 CPU 使用率的百分比数字已更新。我想知道这个百分比是如何计算的?具体来说,比率中的分子和分母是什么?

谢谢!

答案1

处理器使用率是通过“处理器不处于空闲状态的时间量”来计算的。我的意思是,这个计算是通过一个计数器进行的,该计数器记录了“空闲”运行进程的使用情况。当另一个进程从空闲进程“抢夺”处理器能力时,空闲处理器消费者寄存器会减少一个因子;由于时间线是固定不变的,因此(1-“空闲任务中的%时间”)是处理器上运行的所有进程使用的处理器负载量:

在此处输入图片描述

定义 CPU 利用率

为了我们的目的,我将 CPU 利用率 U 定义为不处于空闲任务的时间量,如公式 1 所示。

空闲任务是多任务系统中优先级绝对最低的任务。此任务有时也称为后台任务或后台循环,如清单 1 所示。此逻辑传统上具有 while(1) 类型的循环。换句话说,无限循环使 CPU 旋转,等待需要完成关键工作的指示。

清单 1:背景循环的简单示例

int main( void )
{
   SetupInterrupts();
   InitializeModules();
   EnableInterrupts();

   while(1)      /* endless loop - spin in the background */
   {
      CheckCRC();
      MonitorStack();
      ... do other non-time critical logic here.
   }
}

这种描述实际上过于简单,因为一些“实际”工作通常在后台任务中完成。但是,在空闲任务期间执行的逻辑必须没有硬实时要求,因为无法保证此逻辑何时完成。事实上,在过载系统中可以使用的一种技术是将一些对时间要求不太严格的逻辑从硬实时任务中移出并移入空闲任务。

相关内容