• 平均负载和CPU利用率


    一、什么是平均负载
      正确定义:单位时间内,系统中处于可运行状态和不可中断状态的平均进程数。
      错误定义:单位时间内的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会高亮显示变化的区域
      stress: 压测命令,--cpu cpu压测选项,-i io压测选项,-c 进程数压测选项,--timeout 执行时间
      mpstat: 多核cpu性能分析工具,-P ALL监视所有cpu
      pidstat: 进程性能分析工具,-u 显示cpu利用率

    三、平均负载与cpu使用率的区别
      CPU使用率:单位时间内cpu繁忙情况的统计
      情况1:CPU密集型进程,CPU使用率和平均负载基本一致

      模拟CPU使用100%场景:

      stress --cpu 1 --timeout 600

      

       watch -d uptime查看平均负载变化:

      

       

      

       

       mpstat -P ALL 5查看CPU使用变化:

      

       

      情况2:IO密集型进程,平均负载升高,CPU使用率不一定升高

      模拟高IO场景:

      stress -i 1 --timeout 600

      watch -d uptime查看平均负载变化:

       

      

      

      mpstat -P ALL 5查看CPU使用变化:

      

      

      可以看出除了CPU使用率升高,iowait 也升高了
      情况3:大量等待CPU的进程调度,平均负载升高,CPU使用率也升高

      模拟多进程场景:

      stress -c 8 --timeout 600

      uptime查看平均负载变化:

      

       

      pidstat 或 top 来看一下进程的情况:

       


      平均负载过高时,如何调优
      工具:stress、sysstat,yum即可安装
      1. CPU密集型进程case:
      mpstat -P ALL 5: -P ALL表示监控所有CPU,5表示每5秒刷新一次数据,观察是否有某个cpu的%usr会很高,但iowait应很低
      pidstat -u 5 1:每5秒输出一组数据,观察哪个进程%cpu很高,但是%wait很低,极有可能就是这个进程导致cpu飚高
      2. IO密集型进程case:
      mpstat -P ALL 5: 观察是否有某个cpu的%iowait很高,同时%usr也较高
      pidstat -u 5 1:观察哪个进程%wait较高,同时%CPU也较高
      3. 大量进程case:
      pidstat -u 5 1:观察那些%wait较高的进程是否有很多

      ---描述来源极客时间

  • 相关阅读:
    爬虫学习---美丽汤
    爬虫学习--使用百度api---天气
    爬虫学习----案例
    爬虫学习---模拟提交
    爬虫学习---糗事百科
    爬虫学习----pattern
    Android:控件AutoCompleteTextView 客户端保存搜索历史自动提示
    Android:res之selector背景选择器
    安卓--selector简单使用
    【Android基础】android shape详解(二)
  • 原文地址:https://www.cnblogs.com/yinguojin/p/14093013.html
Copyright © 2020-2023  润新知