zoukankan      html  css  js  c++  java
  • 性能测试之平均负载

    一、查看平均负载:执行 top 或者 uptime 命令,来了解系统的负载情况

    Load Average  依次则是过去 1 分钟、5 分钟、15 分钟的平均负载

    二、平均负载:是指单位时间内,系统处于可运行状态(处于 R 状态(Running 或 Runnable)的进程)和不可中断状态(D 状态(Uninterruptible Sleep,也称为也称为 Disk Sleep)的进程)的平均进程数,也就是平均活跃进程数,它和 CPU 使用率并没有直接关系

    三、平均负载为多少时合理

    1、首先查看服务器CPU 个数,我们可以通过top命令或者从文件/proc/cpuinfo 中读取

    2、判断平均负载和cpu个数,大于CPU个数则系统出现负载

    3、如果 1分钟,5分钟,15分钟 三个值基本相同,或相差不大,那就说明系统负载很平稳

    4、如果1分钟的值远小于15分钟的值,就说明系统最近1分钟的负载在减少,而过去15分钟负载很大

    5、如果1分钟的值远大于15分钟的值,就说明最近1分钟负载在增加,如果超过CPU的个数,就意味着发生负载,这时就要分析调查是哪里导致的问题,并要优化

    单位时间内cpu繁忙情况的统计

    情况1:CPU密集型进程,CPU使用率和平均负载基本一致

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

    情况3:大量等待CPU的进程调度,平均负载升高,CPU使用率也升高

    四、平均负载工具:iostat mpstat pidstat 查找平均负载升高的根源

    1、预先安装stress和sysstat包 例如yum install -y sysstat

    stress 是一个Linux系统压力测试工具,我们可以用于模拟平均负载升高的场景 

      stress --cpu 1 --timeout 600 压满一个cpu,执行10分钟

    sysstat 用来监控和分析系统的性能,常用两个命令mpstat和pidstat

      mpstat 是一个常用的多核cpu性能分析工具,用来查看CPU的性能指标,以及所有CPU的平均指标

      pidstat 是一个常用的进程性能分析工具,用来时时查看进程的CPU、内存、IO以及上下文切换等性能指标

    下载:stress

    wget -P /home/ http://people.seas.harvard.edu/~apw/stress/stress-1.0.4.tar.gz

    依次执行以下指令:
    cd /home

    tar -zxvf stress-1.0.4.tar.gz

    cd stress-1.0.4

    ./configure

    make

    make check

    make install

    make clean
    若报错configure: error: no acceptable C compiler found in $PATH

    需要安装 sudo yum install gcc-c++

    2、场景练习  

    CPU 密集型进程

    首先,我们在第一个终端运行 stress 命令,模拟一个CPU使用100%的场景

    stress --cpu 1 --timeout 600

    接着,在第二个终端运行 uptime 查看平均负载的变化情况:

    # -d 参数表示高亮显示变化的区域
    $ watch -d uptime

    ..., load average: 1.00, 0.75...

    最后,在第三个终端运行 mpstat 查看 CPU 使用率的变化情况:

    #mpstat -P ALL 表示监控所有 CPU,后面数字 5 表示间隔 5 秒后输出一组数据

    使用pidstat命令查看那个进程占用的cup

    I/O密集型进程

    首先还是运行 stress 命令,但这次模拟 I/O 压力

    stress -i 1 --timeout 600

    还是在第二个终端运行 uptime 查看平均负载的变化情况

    watch -d uptime
    ..., load average: 1.06, 0.58, 0.37

    然后,第三个终端运行 mpstat 查看 CPU 使用率变化

     使用pidstat命令查看那个进程占用的cup

  • 相关阅读:
    [机器学习实战]K-近邻算法
    [机器学习Lesson3] 梯度下降算法
    [机器学习Lesson 2]代价函数之线性回归算法
    [机器学习Lesson 1] 机器学习简介
    Flume
    Kafka基础入门
    打造MacOS版“XShell”
    你好,智哥(摘自微信公众号“野兔故事会”)
    打印小册子
    php--strlen()与mb_strlen的作用与区别
  • 原文地址:https://www.cnblogs.com/dwdw/p/10886722.html
Copyright © 2011-2022 走看看