我知道负载平衡是一种衡量CPU繁忙程度的方法。但是,我不明白平均负载0.00
可以如何存在。内核不总是运行吗?那不承担CPU负载吗?
我知道负载平衡是一种衡量CPU繁忙程度的方法。但是,我不明白平均负载0.00
可以如何存在。内核不总是运行吗?那不承担CPU负载吗?
Answers:
一段时间内的平均负载是该时间段内争夺CPU的平均进程数。如果什么也没做,“内核”就不会运行;更具体地说,如果没有什么可做的,则将CPU分配给一个特殊的“空闲”线程,该线程不被计数(并且该线程可能会执行类似将CPU置于等待中断的状态的操作)。
因此,例如,在5分钟内的平均负载为0.6,通常意味着在这5分钟内,某个进程(或内核)将CPU总共使用了3分钟,而在整个过程中总共使用了2分钟闲着。但是,正如@UKMonkey观察到的那样,这可能意味着在经过4分半钟的无所事事之后,有6个进程在最后30秒内争用了CPU ...
如果没有进程希望使用它来运行代码,则CPU处于空闲状态,因为所有进程都在等待输入或输出操作完成,或者正在睡眠,等待将来某个特定时间被唤醒。
@Panther的链接提供了有关负载平均的更深入的讨论。
负载平均是衡量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。
D
状态进程始终包含在Linux的平均负载中。是的,令人困惑。是的,除了加载平均值外,我们应该主要查看其他指标。
平均负载为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