美文网首页
怎样理解平均负载?

怎样理解平均负载?

作者: ivan_cq | 来源:发表于2019-06-10 17:47 被阅读0次

    1、uptime的三个参数

    [root@server2 ~]# uptime
     10:50:28 up 1 day, 12:41,  5 users,  load average: 0.00, 0.01, 0.05
    

    分别是当前时间,系统运行时间,正在登录用户数
    最后三个数字依次是过去1分钟、5分钟、15分钟的平均负载(load average)


    2、平均负载的定义?
    平均负载指的是单位时间内,系统处于可运行状态和不可中断状态的平均进程数,也就是平均活跃进程数。

    可运行状态:ps  -aux 显示  进程状态 为R 的进程
    (表示:running或者runable)
    
    不可中断进程: 正处于内核态关键流程中的进程,并且这些进程是不可打断的,比如常见的(进程等待硬件设备I/O响应),也就是ps -aux中状态为D的进程(Disk sleep)
    

    平均负载,可以理解为平均活跃进程数,最理想的情况就是,每个cpu上刚好有一个进程,这样每个进程都得到了充分的利用

    比如在2个cpu的机器上,平均负载为2,那么cpu刚好完全被占用,在4个cpu的机器上意味着cpu有50%的空闲,在一个cpu的机器上,意味着有一半的进程竞争不到cpu。


    3、如何获取一台机器的cpu数?

    • top 命令 然后按1


    • 查看/proc/cpuinfo
    [root@server2 ~]# grep 'model name'  /proc/cpuinfo | wc -l
    2
    

    4、在实际的生产环境中,当平均负载高于cpu数量的70%的时候,就应该注意分析排查负载高的问题了。
    但是这个数字不是绝对的,还是应该把平均负载监控起来,然后根据更多的历史数据,判断负载的变化趋势。


    5、平均负载和cpu使用率

    平均负载的含义是单位时间内,处于可运行状态和不可打断状态的进程数,所以,它不仅包括了正在使用CPU的进程,还包括等待CPU和等待I/O的进程

    CPU使用率,是单位时间内CPU工作时间的统计。

    三种案例:

    • cpu密集型进程, 使用大量CPU会导致平均负载升高,此时两者一致
    • I/O密集型进程,等待I/O导致平均负载升高,但是cpu使用率不一定升高
    • 大量等待cpu调度的进程也会导致平均负载升高,,此时,CPU使用率也会升高

    6、使用性能分析工具,进行分析

    环境:centos7   2cpu   1g内存(free 查看内存  cat /proc/meminfo  )
    
    工具包: stress 、sysstat 、
    stress 是linux1系统压力测试工具,我们用来模拟平均负载升高的场景
    
    sysstat  用来监控和分析系统性能。
    这个包有两个命令:mpstat 、pidstat
    
    mpstat 常用的多核cpu性能分析工具,用来实时查看每个cpu的性能指标,以及所有cpu的平均指标
    pidstat 是常用的进程性能分析工具,用来实时查看进程的CPU、内存、I/O以及上下文切换等的性能指标。
    
    • 初始查看平均负载
    [root@server2 ~]# uptime
     11:28:25 up 1 day, 13:19,  5 users,  load average: 0.00, 0.03, 0.05
    
    • 场景一:模拟cpu密集型进程
    模拟一个cpu使用率百分之百的场景 在第二个终端内监控 uptime命令,会发现一分钟后平均负载会逐渐升高到一 监控所有cpu,每5秒输出一组数据 正好有一个cpu使用率为100%,但是它的iowait只有0,说明平均负载的升高只是由于cpu使用 5秒后输出一组数据,查看是哪个进程导致cpu使用率为100%的,很明显是stress
    • I/O密集型进程
    stress模拟io压力 发现平均负载一分钟后上升到1以上了 查看是cpu影响还是io影响,发现是io影响 查看是哪个进程影响的
    • 大量进程的场景
    模拟8个进程 发现平均负载急速上升 查看进程情况,8个进程争抢两个cpu

    总结:
    首先,平均负载,提供了一个快速查看系统性能的手段,反映了整体的负载情况。
    但是仅仅看平均负载,什么都得不到,无法发现系统的瓶颈
    所以在理解平均负载的时候,要注意:
    平均负载高可能是CPU密集型进程导致的
    平均负载高不一定代表cpu使用高,还可能是I/O繁忙
    平均负载高还可能是有大量进程在争抢cpu

    当发现负载高的时候,可以使用,mpstat、pidstat等工具来分析系统瓶颈的来源。

    相关文章

      网友评论

          本文标题:怎样理解平均负载?

          本文链接:https://www.haomeiwen.com/subject/yvttfctx.html