zoukankan      html  css  js  c++  java
  • 02讲基础篇:到底应该怎么理解“平均负载”

    小结:

    平均负载提供了一个快速查看系统整体性能的手段,反映了整体的负载情况。但只看平均负载本身,我们并不能直接发现,到底是哪里出现了瓶颈。所以,在理解平均负载时,也要注意:

    • 平均负载高有可能是 CPU 密集型进程导致的;

    • 平均负载高并不一定代表 CPU 使用率高,还有可能是 I/O 更繁忙了;

    • 当发现负载高的时候,你可以使用 mpstat、pidstat 等工具,辅助分析负载的来源。

    学习笔记:
    一、什么是平均负载
    正确定义:单位时间内,系统中处于可运行状态和不可中断状态的平均进程数。
    错误定义:单位时间内的cpu使用率。
    可运行状态的进程:正在使用cpu或者正在等待cpu的进程,即ps aux命令下STAT处于R状态的进程
    不可中断状态的进程:处于内核态关键流程中的进程,且不可被打断,如等待硬件设备IO响应,ps命令D状态的进程
    理想状态:每个cpu上都有一个活跃进程,即平均负载数等于cpu数
    过载经验值:平均负载高于cpu数量70%的时候

    二、相关命令
    cpu核数: lscpu、 grep 'model name' /proc/cpuinfo | wc -l
    显示平均负载:uptime、top,显示的顺序是最近1分钟、5分钟、15分钟,从此可以看出平均负载的趋势
    watch -d uptime: -d会高亮显示变化的区域
    strees: 压测命令,--cpu cpu压测选项,-i io压测选项,-c 进程数压测选项,--timeout 执行时间
    mpstat: 多核cpu性能分析工具,-P ALL监视所有cpu
    pidstat: 进程性能分析工具,-u 显示cpu利用率

    三、平均负载与cpu使用率的区别
    CPU使用率:单位时间内cpu繁忙情况的统计
    情况1:CPU密集型进程,CPU使用率和平均负载基本一致
    情况2:IO密集型进程,平均负载升高,CPU使用率不一定升高
    情况3:大量等待CPU的进程调度,平均负载升高,CPU使用率也升高

    四、平均负载过高时,如何调优
    工具:stress、sysstat,yum即可安装
    1. CPU密集型进程case:

    watch -d uptime:先看平均负载,动态显示负载

    mpstat -P ALL 5: -P ALL表示监控所有CPU,5表示每5秒刷新一次数据,观察是否有某个cpu的%usr会很高,但iowait应很低

    pidstat -u 5 1:每5秒输出一组数据,观察哪个进程%cpu很高,但是%wait很低,极有可能就是这个进程导致cpu飚高
    2. IO密集型进程case:

    watch -d uptime:先看平均负载,动态显示负载
    mpstat -P ALL 5: 观察是否有某个cpu的%iowait很高,同时%usr也较高
    pidstat -u 5 1:观察哪个进程%wait较高,同时%CPU也较高
    3. 大量进程case:

    watch -d uptime:先看平均负载,动态显示负载
    pidstat -u 5 1:观察那些%wait较高的进程是否有很多

  • 相关阅读:
    初步使用redis
    redis配置文件介绍
    windows64位 redis安装 步骤
    敏感词过滤算法
    SpringBoot使用拦截器无效
    linux常用命令
    automation(一)
    JAVA的接口多态
    JAVA的多态(强制转换)
    JAVA的多态
  • 原文地址:https://www.cnblogs.com/xiaobao2/p/11592270.html
Copyright © 2011-2022 走看看