平均负载怎么会是 0.00 呢?

平均负载怎么会是 0.00 呢?

我知道负载平衡是衡量 CPU 繁忙程度的一种方式。但是,我不明白平均负载是如何0.00存在的。内核不是一直在运行吗?这难道不是占用了 CPU 负载的一部分吗?

答案1

一段时间内的平均负载是该时间段内竞争 CPU 的进程的平均数量。如果没有事情要做,“内核”就不会运行;更具体地说,如果没有事情要做,CPU 就会分配给一个不计算在内(并且可能会执行诸如将 CPU 置于等待中断的状态)的特殊“空闲”线程。

因此,例如,5 分钟内的平均负载为 0.6 通常意味着在这 5 分钟内,CPU 总共被某些进程(或内核)使用了 3 分钟,而总共闲置了 2 分钟。但是,正如 @UKMonkey 所观察到的,这可能意味着在 4 分半钟内什么都不做之后,6 个进程在最后 30 秒内争夺 CPU……

如果没有进程想要使用 CPU 来运行代码,则 CPU 处于空闲状态,因为所有进程要么在等待输入或输出操作完成,要么处于休眠状态等待在未来的某个时间被唤醒。

@Panther 的链接提供了有关平均负载的更深入的讨论。

答案2

平均负载是根据同时想要使用 CPU 核心的进程数量来衡量 CPU 核心过载程度的指标。

以下假设单核(单线程)CPU:

  • 0.0

    CPU 根本没有执行任何操作。如果某个进程开始使用 CPU,那么它将是唯一一个使用该 CPU 的进程。

    CPU 空闲并不意味着没有进程在运行。例如,后台服务和内核仍在运行,并且仍在占用内存。它们只是没有使用任何 CPU,因为它们没有执行任何操作。

  • 1.0

    CPU 使用率达到最大值,但进程之间对 CPU 的使用没有任何争用。也就是说,只有一个进程在运行,因此它能够为自己争取 100% 的 CPU 时间。或者,多个进程在运行,但没有一个进程占用 100% 的 CPU,它们的 CPU 使用率总和为 100%。即使它们独享 CPU,它们的运行速度仍然与它们一样快。

  • 大于 1.0

    CPU 的使用率达到最大值,并且有多个进程想要同时使用它,因此它们的运行速度实际上比在空闲 CPU 上能够运行的速度要慢。例如,平均负载为 3.0 表示进程的运行速度是其希望运行速度的三分之一。平均负载为 50.0 表示由于所有其他进程都在运行,进程的运行速度是其希望运行速度的 1/50。也就是说,高于 1.0 的数字表示可用的 CPU 被越来越多的进程占用。

拥有多核 CPU 不会改变数字的含义,但可以改变它们的解释。例如,如果您有一个 4 核 CPU,那么 1.0 的负载仍然相当于一个进程在一个核心上使用 100% 的 CPU,但还有其他三个核心。因此,在 4 核 CPU 上,最大效率点是 4.0,而不是 1.0 - 并且所有东西都以 1/3 效率运行的点是 12.0,而不是 3.0。为了增加复杂性,单个进程可能有多个线程,每个线程都声称拥有自己的 CPU。因此,如果单个进程是多线程的,它可以 100% 使用所有 4 个核心。

重要的提示

CPU 使用率只是可能限制进程性能的资源之一。I/O 是另一个资源,并且不计入 CPU 负载。使用一定数量 CPU 的进程不一定能在负载较轻的机器上使用更多 CPU,因为它们可能会遇到其他瓶颈。

最佳平均负载是多少

这实际上取决于您正在做什么以及您是否喜欢响应能力,或者是否希望 CPU 尽可能努力地工作。

对于需要尽可能多地完成的任务,平均负载应等于或略高于核心数。任何远高于此值的值都表明,如果您将任务分散到更多计算机/服务器上,则可以更快地完成更多任务。

对于需要尽可能响应(快速反应)的事物,平均负载应该比核心数量小一个合适的范围,例如一半或三分之一,这样可以在出现任何减速之前出现一些间歇性变化。

对于虚拟化客户机(例如 KVM),平均负载越低越好,因为您实际上与同一主机上的其他客户机共享 CPU。

答案3

平均负载为 0.00 基本上意味着您的系统处于空闲状态,并且在测量的时间内您的 CPU 没有延迟、压力或瓶颈。

这并不意味着您的 CPU 处于不活动状态,它只是意味着如果某个进程需要 CPU 时间,则无需等待。

从您发布的少量内容来看,很难说出更多,因为这取决于您如何测量负载(系统,每个用户?)以及测量时间。

有关详细信息和有趣的阅读材料,请参阅

https://www.tecmint.com/understand-linux-load-averages-and-monitor-performance/

http://blog.scoutapp.com/articles/2009/07/31/understanding-load-averages

http://www.brendangregg.com/blog/2017-08-08/linux-load-averages.html

相关内容