在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即可无忧。