为什么/如何“正常运行时间”显示 CPU 负载 >1?

Ric*_*uez 17 uptime load-average

我的 PC 上安装了一个1 核 CPU。有时,uptime显示负载 >1。这怎么可能,这意味着什么?

编辑:值上升到 2.4

mic*_*has 23

负载不等于 CPU 使用率。它基本上是一个指标,有多少进程正在等待执行。

一些有用的链接:

  • 这是不正确的。平均负载是衡量有多少进程*准备*执行的指标。这包括正在等待的进程,但*也* *当前正在执行*的进程。因此,如果平均负载为 1,则意味着平均(在给定时间段内)一个 CPU 正在使用中;如果是两个,则意味着平均有两个 CPU 正在使用中。因此,单 CPU 系统的特定负载平均值与多核系统的相同负载平均值不同。 (4认同)

Tot*_*tor 12

uptime显示系统负载(不完全是 CPU 使用率),描述man uptime如下:

系统负载平均值是处于可运行或不可中断状态的平均进程数。处于可运行状态的进程要么正在使用 CPU,要么正在等待使用 CPU。处于不可中断状态的进程正在等待某些 I/O 访问,例如等待磁盘。取三个时间间隔的平均值。平均负载未针对系统中的 CPU 数量进行标准化,因此平均负载为 1 意味着单个 CPU 系统始终处于加载状态,而在 4 个 CPU 系统上则意味着它有 75% 的时间处于空闲状态。

只要负载小于您拥有的 CPU 内核数,就应该没问题。如果超过,则意味着您的系统无法“实时”处理其工作负载。因此,某些进程需要等待获取 CPU 时间(或 IO 访问)。创建了一条等待线。

如果您的负载为 2.7,则意味着平均而言(在最后 1、5 或 15 分钟内,取决于您查看的值),2.7 个进程正在尝试并行执行,但您只有 1 个核心,因此您的系统过载。你对它的要求太多了。

不过不要惊慌,它可能不是这样的问题:一旦工作完成,事情通常会恢复正常。


小智 7

正常运行时间显示/proc/loadavg负载的输出。

的联机帮助页man 5 proc

   /proc/loadavg
          The first three fields in this file are load average figures giving
          the  number  of jobs in the run queue (state R) or waiting for disk
          I/O (state D) averaged over 1, 5, and 15  minutes. 
Run Code Online (Sandbox Code Playgroud)

因此,即使您的 CPU 使用率为 0%,您也可以拥有高负载。在多处理器系统上,一个核心可以获得高达 100% 或 1 的负载。

另请参阅I/O 期间的高 CPU 负载