如何理解系统平均负载

2019-08-03  本文已影响0人  qinyuren

系统平均负载

简单来说,平均负载是指单位时间内,系统处于可运行状态和不可中断状态的平均进行数(ps命令看到的处于R状态Running或Runnable),也就是平均活跃进程数,它和CPU使用率没有直接关系。不可中断状态的进程是指那些正处于内核态关键流程中的进程,并且这些流程是不可打断的(ps命令看到的D状态Uninterruptible Sleep,也称Disk Sleep),比如最常见的是等待硬件设备的I/O响应。不可中断状态实际上是系统对进程和硬件设备的一种保护机制。

uptime命令最后三个数字,依次表示过去1分钟、5分钟、15分钟的平均负载。
如何理解uptime这些数字,假设机器的CPU个数为1,而此时平均负载是1。表示当前平均的活跃进程数是1,也就意味着CPU刚好被完全占用;如果CPU个数是2,则意味着CPU有50%的空闲。

可通过下面命令查看系统CPU个数:
grep 'model name' /proc/cpuinfo | wc -l

平均负载和CPU使用率

CPU使用率,是单位时间内CPU繁忙情况的统计,跟平均负载不一定完全对应;平均负载不仅包括了正在使用CPU的进程,还包括等待CPU和等待I/O的进程。

工具使用

工具包:stresssysstat
stress是一个linux压力测试工具,可以用于模拟进程异常导致平均负载升高的场景。
sysstat包含常用的linux性能工具,可用来监控和分析系统的性能。常用的主要有mpstat和pidstat两个命令。

常用命令:

模拟一个CPU使用率100%的场景:
stress --cpu 1 --timeout 30
模拟I/O压力,不停地执行sync:
stress -i 1 --timeout 30
模拟运行进程数超过CPU运行能力,出现等待CPU的进程:
stress -c 8 --timeout 30

查看CPU使用率的变化情况, -P ALL表示监控所有CPU,5 表示每隔5s打印一次
mpstat -P ALL 5

pidstat查看进程占用CPU(-u)、I/O(-d)、内存(-r)
可使用-p指定进程号
pidstat -u 5

上一篇 下一篇

猜你喜欢

热点阅读