关于linux load average的深入了解

来源:互联网 发布:医疗器械网络销售方法 编辑:程序博客网 时间:2024/05/17 03:34

    top是运维人员很常用的一个命令,但是关于里面load average这个数值的理解,一直以来都没搞清楚,偶尔碰见服务器上cpu使用率不高但load average数值却很高的情况。在网上找到一篇文章,深受启发,转载过来备查并对原作者表示感谢。

通俗来说,判断cpu是否处于“很疲惫”的状态,从两个维度来综合判定:

1、cpu使用率   2、load average

   cpu先解释两个概念:“占有时间”和“使用时间”

  • 占有时间:cpu给一个任务分配一个时间片,在这个时间片内,其他任务就无法在使用cpu

  • 使用时间:在时间片内处理这个任务实际消耗的时间。当分配时间片以后,是否使用完全取决于使用者使。举个通俗的例子,去打电话,电话管理员给每个人分配1分钟的时间,但是可能翻电话本花了20秒,所以实际使用时间是40秒。

   cpu使用率比较容易理解,即cpu在一段时间内被使用的情况,如果被占用时间很高,那么就需要考虑CPU是否已经处于超负荷运作,长期超负荷运作对于机器本身来说是一种损害,因此必须将CPU的利用率控制在一定的比例下,以保证机器的正常运作

    然后详细说load averageload average是在一段时间内CPU正在处理以及等待CPU处理的进程数之和的统计信息,也就是CPU使用队列的长度的统计信息,反映了对于cpu资源竞争的情况,load高,说明太多的任务申请cpu资源,而cpu一段时间内能分配的时间片数量是固定的,这种情况下就导致cpu必须马不停蹄毫不休息的持续工作,长期下去对cpu健康不利;并且此时cpu就出现了瓶颈问题,因为好多任务都要排长队等待cpu资源而得不到及时的处理。

接下来再说开篇的问题,cpu使用率不高,但是load average却很高的情况

理解占有时间和使用时间就可以知道,当分配时间片以后,是否使用完全取决于使用者,因此完全可能出现低利用率高Load Average的情况。由此来看,仅仅从CPU的使用率来判断CPU是否处于一种超负荷的工作状态还是不够的,必须结合Load Average来全局的看CPU的使用情况和申请情况。

    附上load average 数值的计算公式:

    load(t) = load(t-1) e^(-5/60) + n (1 - e^(-5/60)),迭代计算,其中n为run-queue length。


    参考文章:http://www.blogjava.net/cenwenchu/archive/2008/06/30/211712.html

   


0 0
原创粉丝点击