Linux CPU性能监测
平均负载和 CPU 使用率
平均负载是指单位时间内的活跃进程数,也就是处于可运行状态®和不可中断状态(D)的进程数。不仅包括了正在使用 CPU 的进程,还包括等待 CPU 和等待 I/O 的进程。可以参考这篇笔记。
CPU使用率是指单位时间内CPU繁忙情况的统计,与平均负载并不是一个东西。
CPU使用率为100%时,是指换算成单个CPU的情况下使用率是100%,如果是多核的话,这并不是总的CPU使用率,所以此时即使100%也问题不大。实际上对于一个8核CPU其使用率最高是800%。一个进程内有多个线程的话,它的CPU使用率是这些线程的使用率总和,因此CPU使用率可能会超过100%。
大量进程执行CPU密集型操作:平均负载会升高,CPU使用率也会升高。
大量进程执行IO密集型操作:等待的进程也会引起平均负载比较高,但CPU使用率却比较低。
大量进程拥塞等待调度:平均负载很升高,CPU使用率也会比较高。
压测命令 stress
stress - tool to impose load on and stress test systems
`stress’ imposes certain types of compute stress on your system
Linux 系统压力测试工具,可模拟平均负载升高的场景。
常用参数:
-c, --cpu N—— spawn N workers spinning on sqrt(),可用于模拟CPU密集型进程-i, --io N—— spawn N workers spinning on sync(),可用于模拟I/O密集型进程-m, --vm N—— spawn N workers spinning on malloc()/free(),模拟频繁的堆内存申请与释放-t, --timeout N—— timeout after N seconds,运行时间(秒)
模拟负载场景
-
CPU密集型进程模拟
stress --cpu 1 --timeout 600 -
IO密集型进出程模拟
stress -i 1 --timeout 600 -
大量进程同时运行模拟
stress -c 4 -i 4 --timeout 600
例如: 执行stress -c 4 -i 4 --timeout 600后,在另一个终端执行uptime,过一会儿后可以看到平均负载明显上升,趋近于8,与8个进程同时运行一致:
$ uptime
12:18:54 up 14:28, 1 user, load average: 7.95, 5.10, 2.23
监测工具
主要包括top、mpstat、pidstat
top
top的使用方法非常简单,直接执行就可以看到CPU的使用率(%CPU)、平均负载(load average)、进程占用CPU和内存等资源的情况。
启动后按下大写的H可以查看各个进程中具体线程的情况。或者直接只查看指定进程中各线程的情况:

本文详细介绍了Linux系统中的平均负载和CPU使用率,通过stress工具模拟不同类型的负载场景,并推荐了top、mpstat和pidstat三个监测工具进行系统监控。在分析CPU密集型和IO密集型进程的影响时,强调了平均负载与CPU使用率的区别,并解释了自愿上下文切换和非自愿上下文切换的概念。
最低0.47元/天 解锁文章
1446

被折叠的 条评论
为什么被折叠?



