原创:linux_负载分析之LoadAverage
平均负载是指单位时间内,系统处于可运行状态和不可中断状态的平均进程数。和 CPU 使用率并没有直接的关系
一般的进程需要消耗 CPU、内存、磁盘I/O、网络I/O等资源,在这种情况下,平均负载就不是单独指的CPU使用情况。即内存、磁盘、网络等因素也可以影响系统的平均负载值。不过影响最大的是 CPU 使用率、CPU 等待和磁盘I/O。
他不仅包扩了正在使用CPU的进程,还包括等待 CPU 和等待磁盘I/O的进程。
查看load average
# cat /proc/loadavg
# top
# uptime
# w
top为例:
image
这里的 load average 的三个值分别指系统在最后 1/5/15 分钟 的平均负载值。
如何理解load average
将CPU负载理解为车道的负载,对单车道而言:
如果路面上的车不多,没有占满车道,那么load < 1;
如果占满了车道,load = 1;
如果车道外面还有车在等待,load > 1;
需要注意的是,load = 1 不代表CPU无法工作了,这只是表示满负荷运行,例如实际生活中的例子,车道占满了,但是车流还能有序前进。
简单来说就是:“排队中的”除”正在处理中的”
案例分析
使用如下工具:
stress:Linux 系统压力测试工具,这里我们用作异常进程模拟平均负载升高的场景。
sysstat:Linux 性能工具,用来监控和分析系统的性能,以下案例中会用到这个包的 2 个命令 mpstat 和 pidstat。
mpstat:常用的多核 CPU 性能分析工具,用来实时查看每个 CPU 的性能指标,以及所有 CPU 的平均指标。
pidstat:常用的进程性能分析工具,用来实时查看进程的 CPU、内存、I/O 以及上下文切换等性能指标
场景1:CPU密集型进程,单个进程
终端一运行 st