zoukankan      html  css  js  c++  java
  • 理解Linux系统中的load average(图文版)转

     


    一、什么是load average?

    linux系统中的Load对当前CPU工作量的度量 (WikiPedia: the system load is a measure of the amount of work that a computer system is doing)。也有简单的说是进程队列的长度。

    Load Average 就是一段时间 (1 分钟、5分钟、15分钟) 内平均 Load 。

    我们可以通过系统命令"w"查看当前load average情况

    [root@CNC-BJ-5-3N1 ~]# w
    20:01:55 up 76 days, 8:20, 6 users, load average: 1.30, 1.48, 1.69

    上面内容显示系统负载为“1.30, 1.48, 1.69”,这3个值是什么意思呢?

    • 第一位1.30:表示最近1分钟平均负载
    • 第二位1.48:表示最近5分钟平均负载
    • 第三位1.69:表示最近15分钟平均负载

    PS. linux系统是5秒钟进行一次Load采样

    二、load average值的含义

    2.1 单核处理器

    假设我们的系统是单CPU单内核的,把它比喻成是一条单向马路,把CPU任务比作汽车。当车不多的时候,load <1;当车占满整个马路的时候 load=1;当马路都站满了,而且马路外还堆满了汽车的时候,load>1

     Load < 1

     Load = 1
     Load >1

    2.2 多核处理器

    我们经常会发现服务器Load > 1但是运行仍然不错,那是因为服务器是多核处理器(Multi-core)。

    假设我们服务器CPU是2核,那么将意味我们拥有2条马路,我们的Load = 2时,所有马路都跑满车辆。

    Load = 2时马路都跑满了

    #查看CPU core 
    grep 'model name' /proc/cpuinfo | wc -l
      

    3. 什么样的Load average值要提高警惕

    • 0.7 < load < 1: 此时是不错的状态,如果进来更多的汽车,你的马路仍然可以应付。
    • load = 1: 你的马路即将拥堵,而且没有更多的资源额外的任务,赶紧看看发生了什么吧。
    • load > 5: 非常严重拥堵,我们的马路非常繁忙,每辆车都无法很快的运行

    4. 三种Load值,应该看哪个?

    通常我们先看15分钟load,如果load很高,再看1分钟和5分钟负载,查看是否有下降趋势。

    1分钟负载值 > 1,那么我们不用担心,但是如果15分钟负载都超过1,我们要赶紧看看发生了什么事情。所以我们要根据实际情况查看这三个值。

    5. 通过Nagios配置Load监控告警

    见文:http://heipark.iteye.com/blog/1340190

    参考:

    Understanding Linux CPU Load - when should you be worried?

    http://blog.scoutapp.com/articles/2009/07/31/understanding-load-averages 

    Unix/Linux 的 Load 初级解释

    http://www.dbanotes.net/arch/unix_linux_load.html 

    Top命令中load average显示的是最近1分钟、5分钟和15分钟的系统平均负载。系统平均负载表示

    系统平均负载被定义为在特定时间间隔内运行队列中(在CPU上运行或者等待运行多少进程)的平均进程树。如果一个进程满足以下条件则其就会位于运行队列中:
        - 它没有在等待I/O操作的结果
        - 它没有主动进入等待状态(也就是没有调用’wait’)
        - 没有被停止(例如:等待终止)

    在Linux中,进程分为三种状态

    ,一种是阻塞的进程blocked process,

    一种是可运行的进程runnable process,

    另外就是正在运行的进程running process。

    当进程阻塞时,进程会等待I/O设备的数据或者系统调用。


    进程可运行状态时,它处在一个运行队列run queue中,与其他可运行进程争夺CPU时间。 系统的load是指正在运行running one和准备好运行runnable one的进程的总数。

    比如现在系统有2个正在运行的进程,3个可运行进程,那么系统的load就是5

    。load average就是一定时间内的load数量

  • 相关阅读:
    龙果支付系统
    Java并发多线程
    StringRedisTemplate常用操作
    统一支付平台转型
    IntValue()方法 和 ValueOf()方法
    Java中一些知识的归纳总结
    mybatis的一些特殊符号标识(大于,小于,等于,不等于)
    MySQL中大于等于小于等于的写法
    boost::bind应用示例
    VC除零异常(错误)捕获
  • 原文地址:https://www.cnblogs.com/zengkefu/p/5452762.html
Copyright © 2011-2022 走看看