【底层原理】Linux中load average意义

在Linux系统中,执行top命令或者uptime命令会出现一项load average的统计值,要理解load average统计值的含义,首先须要理解进程的几种状态。服务器

进程状态

学过操做系统的同窗都应该知道一个进程它是有生命周期的,而在这个生命周期中,进程可能处于不一样的状态中。ide

下面这张图刻画了进程生命周期中不一样状态以及各状态之间相互转画的条件。
【底层原理】Linux中load average意义布局

TASK_RUNNING:进程处于运行(已得到cpu)或者准备运行(万事俱备,只欠东风,其它条件都得到只是没有分配cpu);性能

TASK_INTERRUPTIBLE:可中断睡眠状态,可被中断或者信号唤醒;学习

TASK_UNINTERRUPTIBLE:不可中断睡眠状态,不可被中断或者信号唤醒;操作系统

TASK_STOPPED:进程暂停,进程收到SIGSTOP、SIGTSTP等信号会进入此状态;
ASK_TRACED:进程执行被调试器中止;
EXIT_ZOMBIE:进程处于僵尸状态,进程已经中止可是其父进程没有调用wait或waitpid回收其状态的进程会处于此状态;
EXIT_DEAD:进程的最终状态,进程已经中止其父进程也调用wait或waitpid回收其状态的进程。调试

认识load average

有了上面的认识,如今来理解load average就会容易多了,在Linux执行top(或者uptime)命令就会出现这项性能指标。
【底层原理】Linux中load average意义
上图中load average后面三个数分别表明不一样时间段的系统平均负载(一分钟、五 分钟、以及十五分钟),如上所示,dev这台机器1/5/15分钟的平均负载分别是0.48/0.57/0.78.对象

在Linux下,系统平均负载指的是运行队列平均长度,也就是等待cpu的平均进程数。影响load average大小的直接因素是系统中活动的进程数目,也就是处于TASK_RUNNING和TASK_UNINTERRUPTIBLE状态的进程。这一点从Linux源码中能够反映出来:
【底层原理】Linux中load average意义
在利用load average进行系统性能评估的时候,是如何进行评估判断的,下面是一个能够供参考的准则(假设机器是单核),具体根据本身项目业务看状况而定。
Load < 0.7:系统很闲,能够考虑多部署一些服务;这个在本身项目中设置的阈值是0.6;
0.7 < Load < 1:系统状态不错;
Load == 1:系统立刻要处理不过来了,赶忙找一下缘由;
Load > 5:系统已经很是繁忙了;这个在本身项目中设置的阈值是4;blog

推荐阅读:

人人均可以作深度学习应用:入门篇(下)
深刻理解系统中log机制(下)
【C++札记】了解 typename 的双重意义
【C++札记】C++对象模型以内存布局(2)
【C++札记】C++对象模型以内存布局(1)生命周期

专一服务器后台技术栈知识总结分享

欢迎关注交流共同进步

【底层原理】Linux中load average意义

码农有道 coding

码农有道,为您提供通俗易懂的技术文章,让技术变的更简单!

相关文章
相关标签/搜索