概念
-
平均负载是指单位时间内,系统处于可运行状态和不可中断状态(等待CPU或者等待I/O)的平均进程数,也就是平均活跃进程数,它和CPU使用率并没有直接关系,直观上理解就是单位时间内的活跃进程数,但它实际上是活跃进程数的指数衰减平均值。下面解释一下可运行状态和不可中断状态。
- 可运行状态的进程,是指正在使用CPU或者正在等待CPU的进程,也就是PS命令中看到的R状态的进程。
- 不可中断状态的进程则是正处于内核态关键流程中的进程,并且不可被打断,比如等待硬件设备的I/O响应,也就是PS命令中看到的D状态进程。
-
来一个直观的数据理解,比如平均负载为2时,意味着:
- 在只有2个CPU的系统上,代表所有的CPU都刚好被完全用完。
- 在4个CPU的系统上,意味着CPU有50%的空闲。
- 在只有1个CPU的系统中,意味着有一半的进程竞争不大CPU。
相关工具
- 下面展示一下排查CPU负载时常用工具:
1 | # 查看哪颗CPU占用高,-P ALL 表示监控所有CPU,后面数字 5 表示间隔 5 秒后输出一组数据 |
总结
- 平均负载只是表现了系统整体的负载情况,但是只看平均负载本身,并不能明确是哪里出现了问题,所以还需要关注以下因素:
- 平均负载高可能是CPU密集型进程导致。
- 平均负载高并不一定代表CPU利用率高,可能是I/O比较繁忙。
- 可以是呀mpstat、pidstat工具进一步分析。
赞赏一下