平均负载:单位时间内,系统处于可运行状态或者不可中断状态的平均进程数
可运行状态是指正在等待cpu或者正在使用cpu的进程,也就是下图中处于R(Running或者Runnable)状态的线程
不可中断进程则是内核中正处于关键流程中的进程,并且这些流程是不可以被打断的,例如最常见的就是等待硬件设备的io响应,也就是下图中处于D状态的进程,不可中断主要是为了保证数据的一致性即磁盘数据与进程数据的一致性平均负载的理想状态是等于cpu个数
平均负载过高会有什么影响?
平均负载过高会导致进程响应变慢,从而影响服务的正常运行
平均负载为多少时,算作有问题呢?
理论值是高于cpu数的70%,实际需要依据情况判断
平均负载包含正在使用cpu的进程,等待cpu和等待io的进程
而cpu使用率是指cpu的繁忙程度
cpu密集型进程:使用大量cpu会导致平均负载升高
io密集型进程:等待io会导致平均负载升高,但cpu使用率不一定升高
工具:
stress:用来模拟进程平均负载升高的场景
mpstat:用来查看每个cpu的性能指标,以及所有cpu的平均指标
pidstat:用来实时查看进程的cpu、内存、i/o 以及 上下文切换等性能指标
等待io(iowait)的进程数升高会导致系统cpu使用率(sys)升高