CPU-平均负载篇幅
1.平均负载
1.1 定义:单位时间内系统处于可运行状态和不可中断状态的平均进程数,可理解成平均的活跃进程数。
可运行状态:正在使用CPU或着正在等待CPU的进程,PS中处于R(running或runnable)的进程
不可中断状态:正处在内核态关键流程的进程,并且是不可打断的,PS中处于D(Disk Sleep)的进程。他是对进程和硬件设备的一种保护机制。
例子:平均负载为2的意义:
在2C的机器,意味着刚好所有的CPU都被占用;2/2c =1
在4C的机器,意味着CPU有50%的空闲; 2/4c < 1
在1C的机器,意味着CPU有一半进程竞争不到CPU;2/1c > 1
1.2 平均负载为多少是合理值?
1.2.1
首先得知道机器CPU的核数:
grep 'model name' /proc/cpuinfo | wc -l
1.2.2
Top\uptime 看到的 load average: 45.58, 40.77, 38.55(最近1min,5min,15min的平均负载情况)
关注load average的趋势:
如果趋势递增:最近1分钟服务器的任务在变轻
如果趋势递减:最近1分钟服务器的任务在变重
如果趋势不明显:最近1分钟服务器的处理情况都差不多,关注此时负载数值
举例:看到的 load average: 1.78, 0.55, 7.98
在单核的机器上,最近1分钟,系统有78%的超载;最近15分钟,系统有698%的超载;从整体趋势来看,系统的负载在降低。
1.2.3
当平均负载高于CPU的70%的时候,应该排查负载高的问题了。
1.3 平均负载与CPU使用率的区别
平均负载:进程数比值,包括正在使用CPU的进程、等待CPU和IO的进程;
CPU使用率:单位时间CPU繁忙情况的统计;
CPU密集型,使用大量CPU会导致平均负载增高,此时平均负载和cpu使用率是一致的;
IO密集型,等待IO会导致平均负载升高,但CPU使用率不一定高;
大量的CPU的进程调度,会导致平均负载升高,但是CPU使用率不一定高。
1.4 iostat、mpstat、pidstat