zoukankan      html  css  js  c++  java
  • 一天一个 Linux 命令(41):mpstat 命令

    一、简介

    Linux下的mpstat(英文全称:Multiprocessor Statistics)命令是是实时系统监控工具,可以显示随着时间变化的CPU数据,方便找出CPU使用率与时间的关系。这个命令包含在工具集sysstat中,使用之前需要安装sysstat。

    这些信息存放在/proc/stat文件中。在多CPUs系统里,其不但能查看所有CPU的平均状况信息,而且能够查看特定CPU的信息。mpstat最大的特点是:可以查看多核心cpu中每个计算核心的统计数据;而类似工具vmstat只能查看系统整体cpu情况。

    如果系统没有安装,可以通过sudo yum install sysstat来安装。

    二、格式说明

    mpstat [ options ] [ <interval> [ <count> ] ]
    mpstat [参数]
    
    Usage: mpstat [ options ] [ <interval> [ <count> ] ]
    Options are:
    [ -A ] [ -u ] [ -V ] [ -I { SUM | CPU | SCPU | ALL } ]
    [ -P { <cpu> [,...] | ON | ALL } ]
    

    三、选项说明

    -A  等同于-u -I ALL -P ALL
    -I  可以指定SUM CPU SCPU ALL四个参数,SUM表示每个处理器的中断总数,CPU表示每个核的每秒中断数量, SCPU表示每个核每秒的软中断数量,内核版本在2.6.31之后才支持。
    -P  统计的CPU编号,一般用ALL
    -u  输出列的信息
    -V  查看工具版本号
    
    delay  采样间隔
    count  采样次数
    

    四、命令功能

    显示随着时间变化的CPU数据,方便找出CPU使用率与时间的关系

    五、常见用法

    5.1 执行监控第一个CPU

    # mpstat -P 1
    
    Linux 3.10.0-1127.19.1.el7.x86_64 (service-01)  11/15/2021      _x86_64_        (4 CPU)
    
    03:00:24 PM  CPU    %usr   %nice    %sys %iowait    %irq   %soft  %steal  %guest  %gnice   %idle
    03:00:24 PM    1    0.29    0.00    0.28    0.03    0.00    0.00    0.00    0.00    0.00   99.41
    
    CPU	    处理器ID
    %user   在internal时间段里,用户态的CPU时间(%),不包含nice值为负进程  (usr/total)*100
    %nice   在internal时间段里,nice值为负进程的CPU时间(%)   (nice/total)*100
    %sys    在internal时间段里,内核时间(%)       (system/total)*100
    %iowait 在internal时间段里,硬盘IO等待时间(%) (iowait/total)*100
    %irq    在internal时间段里,硬中断时间(%)     (irq/total)*100
    %soft   在internal时间段里,软中断时间(%)     (softirq/total)*100
    %steal	显示虚拟机管理器在服务另一个虚拟处理器时虚拟CPU处在非自愿等待下花费时间的百分比	steal/total*100
    %guest	显示运行虚拟处理器时CPU花费时间的百分比	guest/total*100
    %gnice  gnice/total*100
    %idle   在internal时间段里,CPU除去等待磁盘IO操作外的因为任何原因而空闲的时间闲置时间(%) (idle/total)*100
    
    CPU总的工作时间计算方式:
    total_cur = user + system + nice + idle + iowait + irq + softirq
    total_pre = pre_user + pre_system + pre_nice + pre_idle + pre_iowait + pre_irq + pre_softirq
    user = user_cur – user_pre
    total = total_cur - total_pre
    

    5.2 执行监控全部CPU

    # mpstat -P ALL
    
    Linux 3.10.0-1127.19.1.el7.x86_64 (service-01)  11/15/2021      _x86_64_        (4 CPU)
    
    03:00:49 PM  CPU    %usr   %nice    %sys %iowait    %irq   %soft  %steal  %guest  %gnice   %idle
    03:00:49 PM  all    0.28    0.00    0.28    0.03    0.00    0.00    0.00    0.00    0.00   99.40
    03:00:49 PM    0    0.29    0.00    0.28    0.08    0.00    0.00    0.00    0.00    0.00   99.35
    03:00:49 PM    1    0.29    0.00    0.28    0.03    0.00    0.00    0.00    0.00    0.00   99.41
    03:00:49 PM    2    0.29    0.00    0.28    0.01    0.00    0.00    0.00    0.00    0.00   99.42
    03:00:49 PM    3    0.27    0.00    0.27    0.01    0.00    0.00    0.00    0.00    0.00   99.44
    

    5.3 每隔1个时间单位统计5次

    # mpstat 1 5
    
    Linux 3.10.0-1127.19.1.el7.x86_64 (service-01)  11/15/2021      _x86_64_        (4 CPU)
    
    03:01:26 PM  CPU    %usr   %nice    %sys %iowait    %irq   %soft  %steal  %guest  %gnice   %idle
    03:01:27 PM  all    0.25    0.00    0.50    0.00    0.00    0.00    0.00    0.00    0.00   99.25
    03:01:28 PM  all    0.00    0.00    0.25    0.00    0.00    0.00    0.00    0.00    0.00   99.75
    03:01:29 PM  all    0.50    0.00    0.50    0.00    0.00    0.00    0.00    0.00    0.00   99.00
    03:01:30 PM  all    0.25    0.00    0.50    0.50    0.00    0.00    0.00    0.00    0.00   98.75
    03:01:31 PM  all    0.25    0.00    0.25    0.00    0.00    0.00    0.00    0.00    0.00   99.50
    Average:     all    0.25    0.00    0.40    0.10    0.00    0.00    0.00    0.00    0.00   99.25
    

    5.4 查看软中断统计信息

    #每间隔1秒统计一次,总共统计2次
    # mpstat -I SCPU 1 2
    
    Linux 3.10.0-1127.19.1.el7.x86_64 (service-01)  11/15/2021      _x86_64_        (4 CPU)
    
    03:14:43 PM  CPU       HI/s    TIMER/s   NET_TX/s   NET_RX/s    BLOCK/s BLOCK_IOPOLL/s  TASKLET/s    SCHED/s  HRTIMER/s      RCU/s
    03:14:44 PM    0       0.00      71.00       0.00      20.00       1.00       0.00       0.00      30.00       0.00      41.00
    03:14:44 PM    1       0.00      64.00       0.00      12.00       0.00       0.00       0.00      13.00       0.00      42.00
    03:14:44 PM    2       0.00      71.00       0.00       2.00       0.00       0.00       0.00      16.00       0.00      53.00
    03:14:44 PM    3       0.00     115.00       0.00       0.00       0.00       0.00       0.00      25.00       0.00      66.00
    03:14:45 PM    0       0.00      55.00       0.00       6.00       5.00       0.00       0.00      26.00       0.00      35.00
    03:14:45 PM    1       0.00      14.00       0.00       2.00       0.00       0.00       0.00       3.00       0.00       9.00
    03:14:45 PM    2       0.00      36.00       0.00       2.00       0.00       0.00       0.00      10.00       0.00      21.00
    03:14:45 PM    3       0.00      81.00       0.00       0.00       0.00       0.00       0.00      18.00       0.00      45.00
    Average:       0       0.00      63.00       0.00      13.00       3.00       0.00       0.00      28.00       0.00      38.00
    Average:       1       0.00      39.00       0.00       7.00       0.00       0.00       0.00       8.00       0.00      25.50
    Average:       2       0.00      53.50       0.00       2.00       0.00       0.00       0.00      13.00       0.00      37.00
    Average:       3       0.00      98.00       0.00       0.00       0.00       0.00       0.00      21.50       0.00      55.50
    

    六、拓展-vmstat和mpstat差别

    1.vmstat和mpstat 命令的差别:mpstat 可以显示每个处理器的统计,而 vmstat 显示所有处理器的统计。因此,编写糟糕的应用程序(不使用多线程体系结构)可能会运行在一个多处理器机器上,而不使用所有处理器。从而导致一个 CPU 过载,而其他 CPU 却很空闲。通过 mpstat 可以轻松诊断这些类型的问题。

    2.vmstat中所有关于CPU的总结都适合mpstat。当 %idle 数字较低时,一般说明出现了 CPU 不足的问题。当 %iowait 数字较高时,一般当前负载下 I/O 子系统出现了某些问题。

     

  • 相关阅读:
    @Value映射到静态属性
    使用RestTemplateBuilder来实例化RestTemplate对象
    数组转String
    Springboot中mybatis配置
    pagehelper配置 多数据源自动切换数据库方言 mysql/sqlserver/oracle等数据库
    SpringBoot调用mybatis-config.xml的方法
    单元测试中模拟mvc测试对象MockMvc
    获取请求体中图片的二进制流直接解析成图片
    zk保证定时任务集群部署时单个节点执行
    Spring框架:BeanFactory容器
  • 原文地址:https://www.cnblogs.com/joshua317/p/15568690.html
Copyright © 2011-2022 走看看