Linux下cpu使用率load average的简单理解
load average一般可以通过top或者uptime观察到,格式如下:
load average: 0.10, 0.05, 0.58
load average后面有由逗号分割的3列数字,分别代表了最近1分钟,5分钟,15分钟CPU的平均负载情况。
我们任取一列,如第一列,即表示在刚刚过去的1分钟内:
如果是单核CPU的话,1.00就表示CPU已经满负荷了,
如果是多核CPU的话,load average达到CPU的核数即说明该CPU已经满负荷了,
如果是多颗物理CPU,则当load average达到所有物理CPU的总核数时,说明系统CPU满负荷了。
简而言之,CPU的核数即为我们根据load average衡量CPU负载的依据。
刚刚我们看的是最近1分钟的负载,load average还显示了最近5分钟和15分钟的负载,那么一般情况下我们应该看哪个呢?
其实,1分钟,5分钟,15分钟体现的是刚刚过去15分钟系统负载的一种趋势,
如果1分钟负载高于5分钟和15分钟的负载,说明负载是最近1分钟发生的,尚未反映到5分钟和15分钟的负载上,
如果在随后的15分钟内系统一直维持最近1分钟的负载,那么5分钟和15分钟的负载也将逐近提高到1分钟的水平;
如果随后的负载没有继续维持最近1分钟的负载,而是降低到原来水平,那么5分钟和15分钟的负载会有微小波动然后维持现有水平。
如果1分钟负载低,而5分钟和15分钟的负载高,说明最近15分钟内系统负载高,但是CPU的使用情况在最近的1分钟降了下来。
由此看来,1分钟的数据更能反映CPU负载的实时情况,而15分钟的数据则说明系统稳定在某一情况,更有指示价值。
现在我们知道了当load average等于CPU的核数时,表示CPU在满负荷运行;
而且如果我们要监视一个系统的负载情况的话最好是取15分钟的load average值,
那么当CPU负载达到哪个值时,就该引起我们注意了呢?按照参考文章给的经验值是CPU核数减去0.3,
即如果CPU总核数为4,当load average上15分钟的数值达到3.7时,我们就该好好进系统看看了。
那么当CPU负载达到哪个值时,就该引起我们注意了呢?按照参考文章给的经验值是CPU核数乘以0.7,
即如果CPU总核数为4,当load average上15分钟的数值达到2.8时,我们就该好好进系统看看了。
REF:
Understanding Linux CPU Load - when should you be worried?
(本文的核数亦指采用超线程技术HT虚拟出来的核心,即在top命令下按1得出几个cpu即为几核)
(本文的核数即命令cat /proc/cpuinfo | grep "core id" | uniq | wc -l所得出来的数值, 不包含超线程技术HT虚拟出来的核心,因为超线程虚拟出来的核心性能不及真实核心的30%, 参考http://en.wikipedia.org/wiki/Hyper-threading#Performance_claims,实际情况还需看每个线程/核的具体负载情况)
load average一般可以通过top或者uptime观察到,格式如下:
load average: 0.10, 0.05, 0.58
load average后面有由逗号分割的3列数字,分别代表了最近1分钟,5分钟,15分钟CPU的平均负载情况。
我们任取一列,如第一列,即表示在刚刚过去的1分钟内:
如果是单核CPU的话,1.00就表示CPU已经满负荷了,
如果是多核CPU的话,load average达到CPU的核数即说明该CPU已经满负荷了,
如果是多颗物理CPU,则当load average达到所有物理CPU的总核数时,说明系统CPU满负荷了。
简而言之,CPU的核数即为我们根据load average衡量CPU负载的依据。
刚刚我们看的是最近1分钟的负载,load average还显示了最近5分钟和15分钟的负载,那么一般情况下我们应该看哪个呢?
其实,1分钟,5分钟,15分钟体现的是刚刚过去15分钟系统负载的一种趋势,
如果1分钟负载高于5分钟和15分钟的负载,说明负载是最近1分钟发生的,尚未反映到5分钟和15分钟的负载上,
如果在随后的15分钟内系统一直维持最近1分钟的负载,那么5分钟和15分钟的负载也将逐近提高到1分钟的水平;
如果随后的负载没有继续维持最近1分钟的负载,而是降低到原来水平,那么5分钟和15分钟的负载会有微小波动然后维持现有水平。
如果1分钟负载低,而5分钟和15分钟的负载高,说明最近15分钟内系统负载高,但是CPU的使用情况在最近的1分钟降了下来。
由此看来,1分钟的数据更能反映CPU负载的实时情况,而15分钟的数据则说明系统稳定在某一情况,更有指示价值。
现在我们知道了当load average等于CPU的核数时,表示CPU在满负荷运行;
而且如果我们要监视一个系统的负载情况的话最好是取15分钟的load average值,
即如果CPU总核数为4,当load average上15分钟的数值达到3.7时,我们就该好好进系统看看了。
那么当CPU负载达到哪个值时,就该引起我们注意了呢?按照参考文章给的经验值是CPU核数乘以0.7,
即如果CPU总核数为4,当load average上15分钟的数值达到2.8时,我们就该好好进系统看看了。
REF:
Understanding Linux CPU Load - when should you be worried?
http://blog.scoutapp.com/articles/2009/07/31/understanding-load-averages
大多数情况还需要结合vmstat来对top进行补充:
rh442 - Linux下性能监控命令vmstat的简单理解
http://blog.csdn.net/t0nsha/article/details/9005176