本文主要从常用的top命令入手,说明linux下的cpu 负载是怎么回事,以及帮助大家简单判断cpu负载高的原因。
top查看机器负载
我们在linux下使用top指令将会输出如下图所示页面:
这里的load average以及缩写的us、sy、ni、id、wa、hi、si、st都是些什么意思呢?这些值在一个什么样的区间比较合理呢?如果值超过了合理区间,应该怎么处理呢?这篇将来聊聊这些问题。
load average
load average代表CPU的平均负载值,上面示例中的load average: 0.00, 0.03, 0.00分别表示当前CPU在1分钟、5分钟和15分钟内的平均负载。
这些负载值是怎么来的呢?
这些数据来自于文件/proc/loadavg,内核会负责统计出这些数据。
top和uptime命令显示的内容就来自于这个文件,根据proc的帮助文件可知,这里的值就是单位时间内处于运行状态以及等待磁盘 I/O状态的平均job数量。
这里的运行状态和job都是内核的概念,这里进行说明:
1、对于内核而言,进程和线程都是job
2、job处于运行状态指job处于内核的运行队列中,正在或等待被CPU调度(用户空间的进程正在运行不代表需要被CPU调度,有可能在等待I/O,也有可能在sleep等等)
因为某一刻(瞬间)等待调度的进程多少并不能反映系统的整体压力,所以这里取了1,5和