系统平均负载
-
load average
平均负载:单位时间内,系统处于可运行状态和不可中断状态的平均进程数,也就是平均活跃进程数。
-
可运行状态:正在使用cpu或等待cpu的进程,即ps命令下状态为R(Running或Runnable)的进程。
-
不可中断状态:正在处于内核关键流程中的进程,这些流程是不可打断的,如等待硬件设备的I/O响应,即ps命令下状态为D(Uninterruptible Sleep,也成为Disk Sleep)的进程。
-
当load average大于cpu的个数时,表明系统已经出现了过载。当load average高于cpu数量70%的时候,需要排查负载高的问题了,负载过高会导致进程响应变慢。
-
load升高的几种情况
-
cpu密集型进程,使用大量的cpu会导致load升高。
-
i/o密集型进程,等待i/o会导致load升高。
-
工具
-
stress:linux系统压力测试工具
-
sysstat:linux性能分析工具,包含mpstat和pidstat等
-
mpstat:多核cpu性能分析工具,可以实时查看每个cpu的性能指标
-
pidstat:进程性能分析工具,实时查看进程的cpu、内存、i/o及上下文等性能指标
命令:
-
stress --cpu 1 --timeout 600 模拟cpu使用率100%的场景(--timeout表示执行时间)
-
stress -i 1 --timeout 600 模拟io 100%的场景
-
stress -c 8 --timeout 600 模拟8个进程
-
mpstat -P ALL 5 1 显示所有cpu的使用情况,5秒输出一组数据(-P ALL表示监视所有进程)
-
pidstat -u 5 1 查看每个 进程 的使用情况,5秒输出一组数据 (-u 表示cpu利用率)