• CPU使用情况之平均负载


    需求场景:
           新入职公司,需要监控方案,于是先把zabbix里有关OS模块的监控项全部列出来,并一个一个去研究具体的代表的意思;发现其他的都很容易理解,只要有关CPU监控的就难以理解。于是花了一点时间学习一下,找到一篇比较好的博文,然后根据他写的跟我自己理解的总结成文。
           
           博文地址:http://blog.scoutapp.com/articles/2009/07/31/understanding-load-averages   (这个看着更有意思,自己翻译出来没有那个感觉)
     
    重点参数:
            load average: 0.01, 0.07, 0.07
     
    疑问:
    1)这个值代表的是什么意思
    2)这个值多大代表负载高
    3)这个值达到多少该告警
     
     
    一、查看此平均负载值可使用的方法
     
    1)top命令
    [root@rilo ~]# top
    top - 22:36:45 up 4 days, 11:47,  2 users,  load average: 0.00, 0.02, 0.05
    Tasks: 116 total,   1 running, 115 sleeping,   0 stopped,   0 zombie
    %Cpu(s):  0.7 us,  0.3 sy,  0.0 ni, 98.0 id,  1.0 wa,  0.0 hi,  0.0 si,  0.0 st
    KiB Mem :  1016168 total,    61676 free,   520512 used,   433980 buff/cache
    KiB Swap:        0 total,        0 free,        0 used.   333104 avail Mem 
    
      PID USER      PR  NI    VIRT    RES    SHR S %CPU %MEM     TIME+ COMMAND         
      260 root      20   0       0      0      0 S  0.3  0.0   0:16.01 jbd2/vda1-8     
     5709 root      20   0  157684   2144   1508 R  0.3  0.2   0:00.01 top             
     5752 mysql     20   0 1167784 295128   5756 S  0.3 29.0   5:10.60 mysqld     
     
    2)uptime命令
    [root@rilo ~]# uptime
     22:51:37 up 4 days, 12:02,  2 users,  load average: 0.04, 0.10, 0.07
    3)w命令
    [root@rilo ~]# w
     22:53:03 up 4 days, 12:03,  2 users,  load average: 0.01, 0.07, 0.07
    USER     TTY      FROM             LOGIN@   IDLE   JCPU   PCPU WHAT
    root     pts/0    202.104.136.232  Mon09   30:21m  0.24s  0.24s -bash
    root     pts/1    112.95.38.6      22:34    7.00s  0.00s  0.00s w

    二、这三个值分别所代表的意思

           load average: 0.04, 0.10, 0.07    这三个值分别对应系统在1分钟5分钟15分钟内的平均负载值;

           这个数值越低越好,数值高的话代表系统有问题或者机器负载高。但是门槛是什么呢,如何区分什么是好什么是坏的平均负载值呢?什么样的平均负载值需要我们关注,什么样的平均负载值需要我们及时去排查问题?

     
     
    三、相关背景(交通的类比)
     
    单核处理器的情况:
     
    一个单核CPU就如一条单向的公路,假设你是一个桥梁上的交通指挥员,有时候桥上很忙汽车都排成一列通过。然后你想让别人知道桥梁上的交通情况,一个比较好的衡量标准是有多少汽车在等待在特定的时间内。如果没有汽车在等待,过来的司机知道过来就可以通过。如果汽车有在等待,过来的司机就知道他们得排队才能通过。
     
    所以交通指挥员,使用一套数字标识系统:
    1)0.00 表示没有车在桥上,实际上,0.00到1.00之间表示没有汽车在排队等待,只要过来就可以通过
    2)1.00 表示桥梁上刚好满负荷,刚刚好
    3)超过1.00意味着需要等待,2.00意味着有两车道的汽车总数,一车道的汽车在桥上,一车道的汽车在等待。3.00意味着有三车道的汽车总数,一车道在桥上,两车道在等待。
     
    桥相当于CPU,汽车过桥就是使用CPU的过程,等待就是等待使用CPU的过程,Unix将其称为运行队列长度,进程数总和等于正在运行进程数与等待运行数总和。
     
    交通指挥员希望桥梁上永远不要出现等待,因此,你的CPU负载应该保持在1.00以下;如果偶尔桥上的峰值超过1.00,那么不需要担心,如果一直在1.00以上,就该担心了;
     
    因此,你认为最好的负载是1.00?
     
    不完全是,事实上,管理员会在0.7的地方标注一个阀值;
    排查阶段:在平均负载开始大于0.7的时候,是时候该排查是什么原因导致高负载了
    解决阶段:当负载高于1.0的时候,就可以找到问题并修复他了
    凌晨阶段:如果你的负载高于5.0.已经是一个很严重的问题了,那么不知道什么情况下机器就会有问题
     
     
    多核处理器的情况:
     
    当有一个四核处理器的时候,负载3.00也是健康的;在多处理器系统上,负载与可用的核数相关,百分之百用完的标志在单核处理器上是1.00,双核处理器上是2.00,四核处理器上是4.00。
     
    回到上面的桥梁上的例子,1.00意味着只有一条公路。在这一条公路上,意味着是满的。在一座两条公路的桥上,1.00以为者使用了百分之五十,仅仅只有一条路是满的。在单核处理器是,1.00是满负载,在双核处理器上,2.00是满负载
     
     
     
    四、多核与多处理器
     
    对于性能目标,一个具有双核的处理器与两个单核处理器是否是一样的?
     
    是的,这里面有很多关于缓存和处理器之间频率的关系,尽管有这些东西,为了调整CPU的负载值,核的总数才是最重要的,不管这些核是怎么分布在物理处理器上
     
    我们得出两个新的规则:
    1)核的个数=最大的负载数 :在多核系统上,你的负载不应该超过核的数量
    2)核心是核心,核在CPU上是如何分布的并不重要,两个四核处理器=四个双核处理器=八个单核处理器;他们都是8个核
     
  • 相关阅读:
    信号量进程同步,王明学learn
    信号量互斥,王明学learn
    信号通讯编程,王明学learn
    管道通信,王明学learn
    多进程程序设计,王明学learn
    进程控制理论,王明学learn
    分布式系统间的通信框架
    qrcode.js生成二维
    浅谈spring 声明式事物
    索引失效浅谈
  • 原文地址:https://www.cnblogs.com/lemon-le/p/9672139.html
Copyright © 2020-2023  润新知