代码改变世界

Load Average

2014-10-28 18:59  Rollen Holt  阅读(1249)  评论(0编辑  收藏  举报

在Linux系统下面,有很多的命令可以查看系统的负载情况:比如top,uptime,w,示例如下:

[wenchao.ren@l-cmsweb1.ops.cn1 ~]$ w
 18:39:10 up 761 days, 13:59,  1 user,  load average: 0.32, 0.45, 0.43
USER     TTY      FROM              LOGIN@   IDLE   JCPU   PCPU WHAT
wenchao. pts/1    192.168.22.28    17:55    0.00s  0.03s  0.02s sshd: wenchao.ren [priv]

[wenchao.ren@l-cmsweb1.ops.cn1 ~]$ uptime 
 18:39:16 up 761 days, 13:59,  1 user,  load average: 0.29, 0.45, 0.43

[wenchao.ren@l-cmsweb1.ops.cn1 ~]$ top
top - 18:39:19 up 761 days, 13:59,  1 user,  load average: 0.27, 0.44, 0.42
Tasks: 104 total,   1 running, 103 sleeping,   0 stopped,   0 zombie
Cpu(s):  0.1%us,  0.1%sy,  0.0%ni, 99.7%id,  0.0%wa,  0.0%hi,  0.0%si,  0.1%st
Mem:   4194304k total,  4156132k used,    38172k free,   388176k buffers
Swap:  8385920k total,       96k used,  8385824k free,  1608244k cached

我们可以看到无论上面3个命令中的哪个,输出中都包含有load average这一项,他是由3个数字组成。分别代表了:

分别表示系统在过去1分钟、5分钟、15分钟内运行进程队列中的平均进程数量

有关这个运行进程队列,没有等待IO,没有WAIT,没有KILL的进程通通都进这个队列。另外还有一个最直接的显示系统平均负载的命令:

[wenchao.ren@l-cmsweb1.ops.cn1 ~]$ cat /proc/loadavg
0.32 0.35 0.38 1/292 2683

下面对这个命令进行解释:

前3个数字表示平均进程数量,后面的1个分数,分母表示系统进程总数,分子表示正在运行的进程数;最后一个数字表示最近运行的进程ID.

对负载的理解

单核CPU - 单车道 - 数字在0.00-1.00之间正常

0.00-1.00 之间的数字表示情况非常良好,没有拥堵

1.00 表示还算正常,但有可能会恶化并造成拥堵。此时系统已经没有多余的资源了,管理员需要进行优化。

1.00-*** 表示情况不太好了,这种情况你必须进行检查了。

多核CPU - 多车道 - 数字/CPU核数 在0.00-1.00之间正常

多核CPU的话,满负荷状态的数字为 "1.00 * CPU核数",即双核CPU为2.00,四核CPU为4.00。

安全的系统平均负载

一般认为单核负载在0.7以下是安全的,超过0.7就需要进行优化了。

应该看哪一个数字,1分钟,5分钟还是15分钟?

一般认为看5分钟和15分钟的比较好,即后面2个数字。

怎样知道我的CPU是几核呢?

使用以下命令可以直接获得CPU核心数目

grep 'model name' /proc/cpuinfo | wc -l

或者使用:

grep -c 'model name' /proc/cpuinfo

结论

取得CPU核心数目N,观察后面2个数字,用数字/N,如果得到的值小于0.7即可无忧。

参考资料