CPU利用率高的原因是什么?

用户3198603

为简单起见,让我们考虑一下我有一个核心处理器。我有2个任务并行运行。我的理解是处理器将以循环方式运行任务,即一次运行一次。

现在,如果任何一项任务使用更多的周期,则利用率将更高。那是对的吗?如果是这样,那么当任何任务需要大量循环时,换句话说,循环在这里实际上意味着什么?

不是

简短的答案,因为人们已经撰写了有关该主题的本书

周期通常用术语“ CPU时间”表示。一个进程在CPU上分配了一定数量的“量子”。请记住,在CISC架构(如x86)中,单个“指令”可能会占用多个周期。

在最简单的循环调度程序中,会将50%的CPU时间分配给每个进程(如果有2个),因此,如果每个任务仅取决于CPU,则将花费两倍的时间。

但是,所有现代操作系统都具有更高级的调度算法,该算法将以下一个或多个参数考虑在内:

  • 优先事项
  • 状态(为I / O阻塞,可运行,已停止等)
  • 上一次该进程在CPU上运行

根据调度算法,将允许进程在CPU上运行,直到:

  • 它请求I / O并被它阻止
  • 优先级较高的进程需要CPU时间(抢占
  • 硬件中断被触发。
  • 该过程的数量用完了。

最终排队的组织方式取决于调度程序。此处描述Linux调度程序

在现实世界的计算机环境中,考虑周期并不是真正有用的。如上所述,一条指令在CISC架构上可能需要多个周期。CPU也将使用周期在进程之间进行切换(更改寄存器,更新MMU等)。这样的周期在描述CPU使用率时并不是一个非常好的指标。

CPU的有用输出主要取决于其处理处理请求的速度。当进程准备好进行处理时,它们将在运行队列中排队,直到它们可以由CPU处理为止。只要进程不必等待多于一个量子时间(〜200ms)即可运行,那么该系统的运行速度将与即将运行的速度一样快。在操作系统中,它显示为数字(浮点数(Linux:top/ uptime)或百分比(Windows Taskmanager)。

为了简短回答您在标题中提出的问题:利用率很高,因为运行队列在增加。您在Windows或Linux中看到的“利用率”只是运行队列长度随时间变化的平均值。

本文收集自互联网,转载请注明来源。

如有侵权,请联系 [email protected] 删除。

编辑于
0

我来说两句

0 条评论
登录 后参与评论

相关文章