1、mpstat概述

mpstat (multiprocessor state) 可以查看所有cpu的平均负载,也可以查看指定cpu的负载。所以mpstat其实就是主要查看CPU负载的一个工具。是一款常用的多核CPU性能分析工具,用来实时查询每个CPU的性能指标,以及所有CPU的平均指标。

2、mpstat安装

它是Linux性能工具集sysstat中的一个工具,所以我们要装上sysstat,安装方法随不同的系统略有不同,sysstat是一个软件包,包含监测系统性能及效率的一组工具,这些工具对于我们收集系统性能数据,比如:CPU 使用率、硬盘和网络吞吐数据,这些数据的收集和分析,有利于我们判断系统是否正常运行

yum install sysstat -y

3、语法

命令语法格式:

mpstat [-P {cpu|ALL}] [interval [count]]
  • -P: 指定要监控哪个CPU,范围是[0 ~ n-1], ALL表示监控所有CPU都监控
  • internal: 相邻两次采样的间隔时间
  • count: 采样次数。

4、显示参数描述

显示参数 描述

  • CPU 显示的是某个CPU 还是全部CPU all=全部
  • %usr 表示用户所有使用的CPU百分比
  • %nice 表示使用 nice 值的 CPU 的百分比。
  • %sys 表示内核进程使用的 CPU 百分比。
  • %iowait 表示等待进行 I/O 所使用的 CPU 时间百分比。
  • %irq 表示用于处理系统中断的CPU百分比
  • %soft 表示用于软件中断的CPU百分比
  • %steal 虚拟机强制CPU等待的时间百分比
  • %guest 虚拟机占用CPU时间的百分比
  • %gnice CPU运行niced guest虚拟机所花费的时间百分比
  • %idle CPU的空闲时间的百分

5、平均负载理解

平均负载不是CPU的使用率,和CPU的使用率没有直接关系。它指的是单位时间内,系统处于可运行状态和不可中断状态的平均进程数,也就是平均活跃进程数。

所谓的可运行状态,就是用ps命令看到的R状态,它指的是正在使用CPU和正在等待CPU的进程。
所谓的不可中断状态,就是正处于内核状态关键流程的进程,并且这些流程是不可打断的,比如等待硬件设备I/O响应,也就是ps中看到的D状态的进程。
既然是平均活跃进程数,那么最理想的,就是每个CPU上都刚好运行着一个进程,这样每个CPU都得到了充分的利用。

比如当平均负载为2时:

  • 在2个CPU的系统上,意味着每个CPU刚好被占完。
  • 在4个CPU的系统上,意味着每个CPU只占50%。
  • 在1个CPU的系统上,意味着有一半的进程竞争不到CPU。

6、平均负载到底多少比较合适呢?

前面我们说到,平均负载最理想等于CPU个数,所以要判断平均负载,就先得知道有几个CPU

有了这个数据,如果平均负载大于CPU个数,说明过载了。

不过,平均负载有三个值,我们改参考哪一个呢?其实我们应该根据这三个值来判断系统负载的趋势。

一般在工作中,当平均负载高于70%时,我们根据系统负载的历史数据,判断变化趋势,来排查问题。

7、平均负载和CPU使用率的关系

平均负载不仅包含正在使用CPU的进程,还包括等待CPU和等待IO的进程。而CPU的使用率,是单位时间内CPU的繁忙情况,跟平均负载不一定完全对应,比如:

  • 1,计算密集型进程,会大量使用CPU导致平均负载增高,这时,平均负载和CPU使用率两者一致。
  • 2,I/O密集型进程,等待I/O导致负载很高,但CPU使用率不一定高。
  • 3,大量等待CPU的进程调度也会导致平均负载增高,此时CPU的使用率也会比较

参考文章,特别好,推荐: https://blog.csdn.net/fish_study_csdn/article/details/124731584

8、pidstat常用参数-主要看上下文切换

  • -u 默认的参数,显示各个进程的CPU使用统计
  • -r 显示各个进程的内存使用统计
  • -d 显示各个进程的IO使用情况
  • -p 指定进程号
  • -w 显示每个进程的上下文切换情况
  • -t 显示选择任务的线程的统计信息外的额外信息
  • -V 版本号
  • -h 在一行上显示了所有活动,这样其他程序可以容易解析。
  • -I(大写) 在SMP环境,表示任务的CPU使用率/内核数量
  • -l 显示命令名和所有参数
pidstat [ 选项 ] [ <时间间隔> ] [ <次数> ]
pidstat -u -w 1 5

pidstat: 能看磁盘、内存、cpu的数据,主要看cpu的上下文数据

  • PID:进程ID
  • %usr:进程在用户空间占用cpu的百分比
  • %system:进程在内核空间占用cpu的百分比
  • %guest:进程在虚拟机占用cpu的百分比
  • %CPU:进程占用cpu的百分比
  • CPU:处理进程的cpu编号
  • Command:当前进程对应的命令
  • UID PID
  • cswch/s 每秒主动任务上下文切换数量
  • nvcswch/s 每秒被动任务上下文切换数量

更多说明查看:https://www.jianshu.com/p/3991c0dba094

中断 VS 上下文切换:

  • 中断: 中断当前正在运行的,去做其他事情
  • 上下文切换: 资源的切换
  • 中断,一定会导致上下文切换,但是上下文切换,不一定会中断。

9、iostat: 看数据换入换出

iostat参数详解

  • -c: 仅显示CPU统计信息,与-d选项互斥
  • -d:仅显示磁盘统计信息,与-c选项互斥
  • -h:使用NFS(Network File System网络文件系统)的输出报告,更加友好可读。需要使用-n参数开启NFS。
  • -k:以 kb 为单位显示,默认情况下,iostat的输出是以block作为计量单位,加上这个参数可以以kb作为计量单位显示。(该参数仅在linux内核版本2.4以后数据才是准确的)
  • -m:以 mb 为单位显示(该参数仅在linux内核版本2.4以后数据才是准确的)
  • -N:显示磁盘阵列(LVM) 信息。
  • -V:显示版本信息
  • -x:显示更详细的磁盘报告信息,默认只显示六列,加上该参数后会显示更详细的信息(该参数仅在linux内核版本2.4以后数据才是准确的)
  • -n:显示NFS(Network File System网络文件系统) 使用情况(该参数仅在linux内核版本2.6.17以后有效)
  • -t:输出报告时显示系统时间
  • -p:[ { device [,…] | ALL } ] 显示磁盘分区的相关统计信息(默认粒度只到磁盘,没有显示具体的逻辑分区)
  • -y:跳过不显示第一次报告的数据,因为iostat使用的是采样统计,所以iostat的第一次输出的数据是自系统启动以来的累计的数据
  • -y 这个参数非常重要,因为第一次数据不属于正常数据,所以如果做数据统计时,计入了统计,会影响最终数据结果
iostat -dx 1 3

iostat -dx 1 3 ------没有带m,数据单位,默认kb

  • rrqm/s 合并的每秒读请求
  • wrqm/s 合并的每秒写请求
  • r/s 读/秒
  • w/s 写/s
  • rkB/s 读kb/s
  • wkB/s
  • avgrq-sz 平均情况的扇区数
  • avgqu-sz 等待大的请求数
  • await 等待的时间
  • r_await 读等待的时间
  • w_await 写等待的时间
  • svctm 实际请求的时间
  • %util 至少有一个活跃请求的所占的时间百分比

10.性能测试场景

I/O瓶颈
如果%iowait的值过高,表示硬盘存在I/O瓶颈

内存不足
%idle值高,表示CPU较空闲,如果%idle值高但系统响应慢时,有可能是CPU在等待分配内存,此时应加大内存容量

CPU资源不足
如果%idle值持续低于10,那么系统的CPU处理能力相对较低,表明系统中最需要解决的资源是CPU

参考:https://blog.csdn.net/m369880395/article/details/127789732

性能测试-sysstat工具包(mpstat-主要查看CPU负载与iostat-看数据换入换出以及pidstat-主要看上下文切换)的更多相关文章

  1. Linux如何查看CPU负载

    负载(load)是Linux机器的一个重要指标,直观了反应了机器当前的状态.如果机器负载过高,那么对机器的操作将难以进行. linux的负载高,主要是由于CPU使用.内存使用.IO消耗三部分构成.任意 ...

  2. 如何查看Linux的CPU负载

    哪些工具可以查看 CPU 负载? 可以使用 top 命令.uptime 命令,特别是 top 命令,功能强大,不仅仅可以用来查看 CPU 负载. CPU 负载怎么理解?是不是 CPU 利用率? 要区别 ...

  3. 浅谈Linux下CPU利用率和CPU负载【转】

    转自:https://blog.csdn.net/Alisa_xf/article/details/71430406 在Linux/Unix下,CPU利用率(CPU utilization)分为用户态 ...

  4. linux 查看CPU、内存、磁盘信息命令

    [1]查看CPU信息 (1)查看CPU信息(型号) cat /proc/cpuinfo | grep name | cut -f2 -d: | uniq -c (2)查看物理CPU个数 cat /pr ...

  5. cpu负载

    查看cpu负载,我们经常会使用top,或者是uptime命令 但是这只能看到cpu的总体的负载情况.如果我们想看cpu每个核心的负载情况是看不到的. 所以我们可以用mpstat命令 服务器一共32核心 ...

  6. Linux CPU负载

    昨天查看Nagios警报信息,发现其中一台服务器CPU负载过重,机器为CentOS系统.信息如下: 2011-2-15 (星期二) 17:50 WARNING - load average: 9.73 ...

  7. linux里的CPU负载

    昨天查看Nagios警报信息,发现其中一台服务器CPU负载过重,机器为CentOS系统.信息如下: 2011-2-15 (星期二) 17:50 WARNING - load average: 9.73 ...

  8. redhat 7.6 查看硬件负载命令

    1.  命令 查看CPU负载 命令1:uptime 命令2:cat  /proc/loadavg 查看CPU信息:cat  /proc/cpuinfo load average:表示平均1分钟内运行的 ...

  9. Linux查看CPU历史负载

    sar -f /var/log/sa/sa20 -s 02:00:00 -e 06:00:00 | head -n 50 sysstat工具与负载历史回放 很多系统负载过高的时候我们是无法立即获知或者 ...

  10. (转)linux查看CPU性能及工作状态的指令mpstat,vmstat,iostat,sar,top

    衡量CPU性能的指标: 1,用户使用CPU的情况:CPU运行常规用户进程CPU运行niced processCPU运行实时进程 2,系统使用CPU情况:用于I/O管理:中断和驱动用于内存管理:页面交换 ...

随机推荐

  1. 我不想再传递 nameof 了

    有的时候抛出一个异常,我们需要知道是哪个方法抛出的异常.那么,我们可以通过传递 nameof 来获取调用者的方法名.但是,感觉很烦,每次都要传递 nameof.那么,有没有更好的方法呢? Caller ...

  2. maven项目构建报错:Could not find artifact com.xxx.cloud:xxx-cloud:pom:1.0-SNAPSHOT and 'parent.relativePath' points at wrong local POM

    maven多模块项目打包的时候报错如下: [ERROR] [ERROR] Some problems were encountered while processing the POMs: [FATA ...

  3. element ui el-date-picker 禁止选择指定日期

    1.日期选择器组件代码 <el-col :span="20"> <el-form-item label="活动起始日期值" prop=&quo ...

  4. 3 .NET Core笔试题

    1.什么是ASP.NET Core? 2.ASP.NET Core 中AOP的支持有哪些? 3.ASP.NET Core Filter的注册方式有哪些? 4.ASP.NET Core Filter如何 ...

  5. GMAC网卡相关介绍与分析

    GMAC网卡相关介绍与分析 目录 GMAC网卡相关介绍与分析 环境描述 MII MII RMII GMII RGMII SGMII GMAC网卡信息获取方法 获取GMAC网卡信息 查看PHY工作接口模 ...

  6. LG P4168 [Violet]蒲公英

    \(\text{Problem}\) 强制在线静态询问区间众数 \(\text{Solution}\) 不得不说 \(vector\) 是真的慢 做 \(LOJ\) 数列分块入门 \(9\) 卡时间卡 ...

  7. Linux服务器数据备份恢复

    转载csdn: https://blog.csdn.net/weixin_33794672/article/details/92894022

  8. 【ACR2015】持续临床缓解的RA患者能停用TNF拮抗剂吗?

    标签: 类风湿关节炎; 药物减停; 生物制剂; 减停后复发 荷兰一项随机对照试验显示, 已获持续6个月临床缓解或低疾病活动度的RA患者在停用TNFi的6个月内约三分之一病情复发 Moghadam HG ...

  9. gdbOF阅读笔记

    前言 今天阅读了一本说明书,<gdbOF: A Debugging Tool for OpenFOAM> 受himryangzz视频启发去读相关内容,在此对himryangzz表示感谢 希 ...

  10. Net6 Core Api(.net6)发布到IIS注意事项及显示HTTP 错误500.19解决方法

    Net6 Core Api发布到IIS不同于webapi,依赖框架不同,配置也移至项目内Program.cs 一.发布到指定文件夹,和IIS,不过注意IIS应用程序池选择的是 "无托管代码& ...