简介
使用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个数
结论
- 当系统中不存在IO等待的情况下,load average等于CPU逻辑核心数时,说明已经满载,超过时代表任务需要排队
- 当系统中出现大量等待IO的情况下,load average失去意义,此时无法判断是CPU负载高还是IO设备出现瓶颈
网友评论