Linux load average
简介
使用top命令、uptime命令时,都会打印服务器的load average,代表Linux系统1分钟、5分钟、15分钟的负载情况,实际上,这些数据均来源于/proc/loadavg的前三个参数
什么是load average?
参考Linux官网说明http://man7.org/linux/man-pages/man5/proc.5.html
/proc/loadavg的前三个参数分别代表,最近1分钟、5分钟、15分钟处于状态R与状态D进程或线程平均值
状态R:Running or runnable (on run queue)
状态D:Uninterruptible sleep (usually IO)
即:处于运行中、在运行队列中、处于不可中断等待状态中的线程进程平均值
测试
环境说明:
1个物理CPU,6个核心,无超线程物理机进行测试,运行足够长时间
空载情况下
1进程死循环
2进程死循环
1进程等待IO,1进程死循环
10线程死循环
这里特别说明下:linux官网对/proc/loadavg第四个参数描述不正确,官网描述会小于CPU个数,而实际上等于任务数,超过CPU个数
结论
- Unix系统中Load average可以看到是CPU load average,而在Linux系统中更像是System load average,代表正在工作与等待工作(计算/IO)的平均任务数
- 当系统中不存在IO等待的情况下,load average等于CPU逻辑核心数时,说明已经满载,超过时代表任务需要排队
- 当系统中出现大量等待IO的情况下,load average失去意义,此时单从此指标无法判断是CPU负载高还是IO设备出现瓶颈
http://www.brendangregg.com/blog/2017-08-08/linux-load-averages.html

浙公网安备 33010602011771号