怎样才能有0.00的平均负载?


12

我知道负载平衡是一种衡量CPU繁忙程度的方法。但是,我不明白平均负载0.00可以如何存在。内核不总是运行吗?那不承担CPU负载吗?


6
请注意,在大多数情况下,您看到的0.00实际上是0.0001左右
PlasmaHH

1
在过去,这是运行队列的平均长度。换句话说,准备好要执行多少个进程(而不等待I / O等)。如果没有,则为0.00。这些天来,根据我的经验,只有当您不运行图形桌面而是仅运行无GUI服务器时,才有可能。
托尔比约恩Ravn的安徒生

仅出于完整性考虑,我认为这是一段时间以来发生内核错误的BSD之一,该内核错误将内核空闲线程计入平均负载,而当系统完全不执行操作时,平均负载为1.00。很快就解决了。
CVn

Answers:


16

一段时间内的平均负载是该时间段内争夺CPU的平均进程数。如果什么也没做,“内核”就不会运行;更具体地说,如果没有什么可做的,则将CPU分配给一个特殊的“空闲”线程,该线程不被计数(并且该线程可能会执行类似将CPU置于等待中断的状态的操作)。

因此,例如,在5分钟内的平均负载为0.6,通常意味着在这5分钟内,某个进程(或内核)将CPU总共使用了3分钟,而在整个过程中总共使用了2分钟闲着。但是,正如@UKMonkey观察到的那样,这可能意味着在经过4分半钟的无所事事之后,有6个进程在最后30秒内争用了CPU ...

如果没有进程希望使用它来运行代码,则CPU处于空闲状态,因为所有进程都在等待输入或输出操作完成,或者正在睡眠,等待将来某个特定时间被唤醒。

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


1
5分钟的平均0.6负载也可能意味着它在4分半钟内什么也不做-然后在最近30秒内,有大量进程在等待CPU时间...这并不表示它有多少工作要做。 CPU已经完成-但是有多少进程在等待使用它。
UKMonkey

@UKMonkey:完全正确...平均值是平均值,可以许多方式获得相同的平均值。编辑答案以解释中等平均值并不意味着峰值也很合理。
AlexP

13

负载平均是衡量CPU内核要一次使用的进程数的过载程度。

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

  • 0.0

    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。因此,如果一个进程是多线程的,则可以使用所有4个内核的100%。

重要的提示

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

最佳平均负载是多少

这实际上取决于您正在执行的操作以及您是否更喜欢响应能力,还是要让CPU尽可能地努力工作。

对于需要做得更多的事情,平均负载应等于或略高于核心数。远大于此的值表示,如果将任务分散在更多计算机/服务器上,则可以更快地完成更多工作。

对于需要尽可能快地响应(快速反应)的事物,平均负载应有一个舒适的余量,小于核数的一半(例如一半或三分之一),这允许在出现任何减速之前进行一些间歇性变化。

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


令我惊讶的是,有时平均负载serverfault.com/a/524818/27813中包含线程“正在等待I / O” ,似乎……
rogerdpack

@rodgerpack是的,D状态进程始终包含在Linux的平均负载中。是的,令人困惑。是的,除了加载平均值外,我们应该主要查看其他指标。
kubanczyk

2

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

这并不意味着您的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

By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.