转载地址:http://test.taobao.com/view_blog.htm?spm=0.0.0.0.c4WR7A&id=2507
第一次做性能测试,按照操作文档磕磕碰碰的完成了,并且拿到了结果,看到一堆的指标和数据,还是傻眼了,不知道各个指标是什么意思了。
咨询了大牛和度娘,消化理解了一下,不知道是不是正确的。
CPU使用率:
一段时间内CPU的使用状况,从这个指标可以看出某一段时间内CPU资源被占用的情况。
LoadAverage:
某一段时间内,CPU正在处理以及等待CPU处理的进程数的之和。LoadAverage是从另一个角度来体现CPU的使用状态的。
CPU使用率和Load Average的关系:
拿去医院体检做一个例子:
用户:待检查的同学
CPU:检查的科室(B超、眼科。。。。)
1、 Load 高,CPU使用率低 :
眼科一共有3个医生,检查有次序,必须前一个医生检查结束了才能到下一个医生处理
由于第一个医生的检查耗时比较长,导致后面很多同学排队,但是接下去2个医生都处于空闲状态。
Load:等待的同学,由于等待的同学较多,所以Load的值较高
CPU使用率:只有一个医生处于工作状态,所以CPU的使用率为33.33%
2、 Load低,CPU使用率高:
假设B超科室有和眼科同样多的医生,但是每个医生之间的工作是独立的。
来一个新同学的时间,大约是检查完一个同学的时间。
Load:等待的同学,基本<=1
CPU使用率:每个医生都处于忙碌状态,CPU使用率接近100%
由上面可以看到,不能单纯从一个方面来看性能的优劣。同样,性能调优也可以从多方面入手。
linux系统中的Load对当前CPU工作量的度量 (WikiPedia: the system load is a measure of the amount of work that a computer system is doing)。也有简单的说是进程队列的长度。
Load Average 就是一段时间 (1 分钟、5分钟、15分钟) 内平均 Load 。
我们可以通过系统命令"w"查看当前load average情况
20:01:55 up 76 days, 8:20, 6 users, load average: 1.30, 1.48, 1.69
上面内容显示系统负载为“1.30, 1.48, 1.69”,这3个值是什么意思呢?
- 第一位1.30:表示最近1分钟平均负载
- 第二位1.48:表示最近5分钟平均负载
- 第三位1.69:表示最近15分钟平均负载
PS. linux系统是5秒钟进行一次Load采样
二、load average值的含义
2.1 单核处理器
假设我们的系统是单CPU单内核的,把它比喻成是一条单向马路,把CPU任务比作汽车。当车不多的时候,load <1;当车占满整个马路的时候 load=1;当马路都站满了,而且马路外还堆满了汽车的时候,load>1
Load < 1
Load = 1
Load >1
2.2 多核处理器
我们经常会发现服务器Load > 1但是运行仍然不错,那是因为服务器是多核处理器(Multi-core)。
假设我们服务器CPU是2核,那么将意味我们拥有2条马路,我们的Load = 2时,所有马路都跑满车辆。
Load = 2时马路都跑满了
grep 'model name' /proc/cpuinfo | wc -l
3. 什么样的Load average值要提高警惕
- 0.7 < load < 1: 此时是不错的状态,如果进来更多的汽车,你的马路仍然可以应付。
- load = 1: 你的马路即将拥堵,而且没有更多的资源额外的任务,赶紧看看发生了什么吧。
- load > 5: 非常严重拥堵,我们的马路非常繁忙,每辆车都无法很快的运行
4. 三种Load值,应该看哪个?
通常我们先看15分钟load,如果load很高,再看1分钟和5分钟负载,查看是否有下降趋势。
1分钟负载值 > 1,那么我们不用担心,但是如果15分钟负载都超过1,我们要赶紧看看发生了什么事情。所以我们要根据实际情况查看这三个值。
5. 通过Nagios配置Load监控告警
见文:http://heipark.iteye.com/blog/1340190