浅谈平均负载
平均负载
平均负载(load average)是指单位时间内,系统处于可运行状态和不可中断状态的平均进程数,也就是平均活跃进程数(实际上是活跃进程数的指数衰减平均值),与 CPU 使用率并没有直接关系。
可运行状态的进程:是指正在使用 CPU 或者正在等待 CPU 的进程,也就是我们常用 ps 命令看到的,处于 R 状态(Running 或 Runnable)的进程。
不可中断状态的进程:则是正处于内核态关键流程中的进程,并且这些流程是不可打断的,比如最常见的是等待硬件设备的 I/O 响应,也就是我们在 ps 命令中看到的 D 状态(Uninterruptible Sleep,也称为 Disk Sleep)的进程。
查看平均负载(load average)的命令 top,uptime,w。
分别代表1分钟,5分钟,15分钟值。
平均负载的合理值
平均负载最理想的值应该是等于CPU个数,当超过70%时,就需要对负载问题进行解决。可以对平均负载进行监控,这样当需要解决的时候,就可以通过历史记录判断负载的变化趋势。
平均负载与CPU使用率
平均负载是指单位时间内,处于可运行状态和不可中断状态的进程数。所以,它不仅包括了正在使用 CPU 的进程,还包括等待 CPU 和等待 I/O 的进程。而 CPU 使用率,是单位时间内 CPU 繁忙情况的统计,跟平均负载并不一定完全对应。比如:CPU 密集型进程,使用大量 CPU 会导致平均负载升高,此时这两者是一致的;I/O 密集型进程,等待 I/O 也会导致平均负载升高,但 CPU 使用率不一定很高;大量等待 CPU 的进程调度也会导致平均负载升高,此时的 CPU 使用率也会比较高。
负载测试准备
stress 是一个 Linux 系统压力测试工具。
sysstat 包含了常用的 Linux 性能工具。
安装stress
1、准备包
下载地址:https://fossies.org/linux/privat/old/stress-1.0.4.tar.gz/
2、解压
将包放入指定的压测机器进行解压。
tar -zxvf stress-1.0.4.tar.gz
查看gcc安装情况
gcc -v
3、编译安装
cd stress-1.0.4
./configure
make
make install
4、验证
stress
安装sysstat
1、准备包
下载地址:http://sebastien.godard.pagesperso-orange.fr/download.html
2、解压
tar -zxvf sysstat-12.5.4.tar.gz
3、编译安装
cd sysstat-12.5.4
./configure
make && make install
4、验证
此时就可以使用mpstat、iostat、pidstat命令了
场景模拟
两种方法查找cpu个数:
注
:可以依照以下命令,来模拟相关场景。
1、CPU 密集型进程场景
#窗口1,模拟在sqrt()上生成4个工作单位,持续600秒后超时
stress --cpu 4 --timeout 600
#窗口2,高亮显示变化数值(差异值)
watch -d uptime
#窗口3,以5秒钟的间隔显示所有处理器的统计报告.
mpstat -P ALL 5
#窗口4,每隔5秒显示系统中每个活动任务的1个CPU统计报告。
pidstat -u 5 1
2、I/O 密集型进程场景
#窗口1,模拟在sync()上生成4个工作单位,持续600秒后超时
stress -i 4 --timeout 600
#窗口2
watch -d uptime
#窗口3
mpstat -P ALL 5
#窗口4
pidstat -u 5 1
3、大量进程的场景
#窗口1
stress -c 16 --timeout 600
#窗口2
watch -d uptime
#窗口3
mpstat -P ALL 5
#窗口4
pidstat -u 5 1