loadavg 是特定时间间隔内运行队列中平均的进程数,这个数字是由内核统计计算得来。
简单讲:平均负载就是指单位时间内,系统处于可运行状态和不可中断状态的平均进程数,也就是平均活跃进程数,该进程数直接影响 load average 值大小的,它和CPU使用率并没有直接关系。
什么叫可运行状态的进程?
可运行状态的进程:指的是正在使用CPU或者正在等待CPU的进程,也就是我们常用ps命令看到的,处于R状态(Running 或 Runnable)的进程
什么叫不可中断状态的进程?
不可中断状态的进程:
指的是正处于内核态关键流程中的进程,并且这些流程是不可打断的。
例如:等待硬件设备的I/O响应,也就是我们在ps命令中看到的D状态(Uninterruptible Sleep,也叫做Disk Sleep)的进程
什么叫平均活跃进程数
平均活跃进程数:
直观的理解就是单位时间内的活跃进程数,但实际上是活跃进程数的指数衰减平均值。这个指数衰减平均值的详细含义不用计较,这只是系统的一种更快速的计算方式,你把它直接当成活跃进程数的平均值也没问题。
平均活跃进程数:处于TASK_RUNNING和TASK_UNINTERRUPTIBLE状态的进程。
# 进程的状态有以下7种。
TASK_RUNNING
进程处于运行(它是系统的当前进程)或者准备运行状态(它在等待系统将CPU分配给它)
TASK_INTERRUPTIBLE
等待某个条件:中断、信号或能唤醒进程的资源
TASK_UNINTERRUPTIBLE
处于睡眠状态,信号无法唤醒它。
TASK_STOPPED
进程停止,当进程收到SIGSTOP、SIGTSTP、SIGTTIN或SIGTTOU信号时就会进入次状态
TASK_TRACED
进程执行被调试器停止(调试程序使用ptrace()系统调用来监控程序)
EXIT_ZOMBIE
进程执行停止,但父进程还没调用wait4()或waitpid()来获取该进程返回信息。
EXIT_DEAD
进程的最终状态,父进程调用wait4()或waitpid()来获取该进程返回信息,内核即将移除该进程。