zoukankan      html  css  js  c++  java
  • Linux系统中的load average(平均负载/运行队列)

    1、load average 的含义

    系统负载(System Load)是系统CPU繁忙程度的度量,即有多少进程在等待被CPU调度(进程等待队列的长度)

    linux系统中的Load对当前CPU工作量的度量。简单的说是进程队列的长度。Load Average 就是一段时间 (1 分钟、5分钟、15分钟) 内系统的平均 Load 。

    2、如何查看Load Average?

    top命令,w命令,uptime等命令都可以查看系统负载;

    上边0.18、0.19、0.70表示

    第一位0.18:表示最近1分钟平均负载
    第二位0.19:表示最近5分钟平均负载
    第三位0.70:表示最近15分钟平均负载

    注:linux系统是5秒钟进行一次Load采样

    这些工具中的平均负载是从 /proc/loadavg 文件中读取的,也可以直接使用 cat 命令查看:

    $ cat /proc/loadavg

    2.48 1.69 1.42 5/889 10570

    三、对负载的理解

    把CPU比喻成一条(单核)马路,进程任务比喻成马路上跑着的汽车,Load则表示马路的繁忙程度:

    Load小于1:表示完全不堵车,汽车在马路上跑得游刃有余:
    [ Load<1,单核]
    Load等于1:马路已经没有额外的资源跑更多的汽车了:
    [Load==1,单核]
    Load大于1:汽车都堵着等待进入马路:
    [Load>1,单核]
    如果有两个CPU,则表示有两条马路,此时即使Load大于1也不代表有汽车在等待:
    [Load==2,双核,没有等待]

    需要注意的是,load = 1 不代表CPU无法工作了,这只是表示满负荷运行,例如实际生活中的例子,车道占满了,但是车流还能有序前进。

    注:查看cpu 核数命令:

    grep 'model name' /proc/cpuinfo | wc -l

    四、什么样的Load值得警惕(单核)?

    Load < 0.7时:系统很闲,马路上没什么车,要考虑多部署一些服务
    0.7 < Load < 1时:系统状态不错,马路可以轻松应对
    Load == 1时:系统马上要处理不多来了,赶紧找一下原因
    Load > 5时:马路已经非常繁忙了,进入马路的每辆汽车都要无法很快的运行
     
    一般的进程需要消耗CPU、内存、磁盘I/O、网络I/O等资源,在这种情况下,平均负载就不是单独指的CPU使用情况。即内存、磁盘、网络等因素也可以影响系统的平均负载值。 
    在单核处理器中,平均负载值为1或者小于1的时候,系统处理进程会非常轻松,即负载很低。当达到3的时候,就会显得很忙,达到5或者8的时候就不能很好的处理进程了(其中5和8目前还是个争议的阈值,为了保守起见,建议选择低的)
     

    五. 三种Load值,应该看哪个

    通常我们先看15分钟load,如果load很高,再看1分钟和5分钟负载,查看是否有下降趋势。
    1分钟负载值 > 1,那么我们不用担心,但是如果15分钟负载都超过1,我们要赶紧看看发生了什么事情。所以我们要根据实际情况查看这三个值。

    六、理解系统平均负载和 CPU 核心数的关系

    考虑了 CPU 核心数的影响,才能解释系统负载。

    多处理器 Vs 多核处理器 

    • 多处理器 – 一个计算机系统中集成两个或多个物理 CPU 

    • 多核处理器 – 单个物理 CPU 有两个或多个单独的核并行工作(也叫处理单元)。双核意味着有两个处理单元,4 核有 4 个处理单元,以此类推。

    此外,Intel 引入了超线程技术用来提高并行计算能力。 

    通过超线程技术,在操作系统中,单个物理 CPU 表现的和两个逻辑 CPU 一样。(实际在硬件上只有一个 CPU)。 

    注意,单个 CPU 核同一时间只能执行一个任务,于是产生了多 CPU/处理器、多核 CPU,以及多线程技术。 

    多 CPU 时,多个程序可以同时执行。如今的 Intel CPU 使用了多核心和超线程技术。

    可以使用 nproc 或 lscpu 命令查看系统中的处理器单元数量。

    为了进一步理解系统负载,需要做一些假设。假设系统负载如下:

    23:16:49 up  10:49,  5 user,  load average: 1.00, 0.40, 3.35
    

     

    在单核系统中意味着:

    • CPU 被充分利用(100%);最近的 1 分钟有 1 个进程在运行。 

    • CPU 有 60% 处于空闲状态;在最近的 5 分钟没有进程等待 CPU 时间。 

    • CPU 平均过载了 235%;最近的 15 分钟平均有 2.35 个进程在等待 CPU 时间。

    在双核系统中意味着:

    • 有一个 CPU 处于完全空闲状态,另一个 CPU 被使用;最近的 1 分钟没有进程等待 CPU 时间。 

    • CPU 平均 160% 处于空闲状态;最近的 5 分钟没有进程等待 CPU 时间。 

    • CPU 平均过载了 135%;最近的 15 分钟有 1.35 个进程等待 CPU 时间。

    总而言之,如果你是系统管理员,你应该关注高的平均负载。平均负载高于 CPU 核心数意味着需要增加 CPU,反之则意味着 CPU 未被充分利用。纵观,作为测试人员,知道这些对你无论是工作还是面试都有很大的帮助;

     

    备注:一个系统监控过程中的运行队列情况

  • 相关阅读:
    Open source cryptocurrency exchange
    Salted Password Hashing
    95. Unique Binary Search Trees II
    714. Best Time to Buy and Sell Stock with Transaction Fee
    680. Valid Palindrome II
    Java compiler level does not match the version of the installed Java project facet.
    eclipse自动编译
    Exception in thread "main" java.lang.StackOverflowError(栈溢出)
    博客背景美化——动态雪花飘落
    java九九乘法表
  • 原文地址:https://www.cnblogs.com/littlecat15/p/9559136.html
Copyright © 2011-2022 走看看