性能测试-sysstat工具包(mpstat-主要查看CPU负载与iostat-看数据换入换出以及pidstat-主要看上下文切换)
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-主要看上下文切换)的更多相关文章
- Linux如何查看CPU负载
负载(load)是Linux机器的一个重要指标,直观了反应了机器当前的状态.如果机器负载过高,那么对机器的操作将难以进行. linux的负载高,主要是由于CPU使用.内存使用.IO消耗三部分构成.任意 ...
- 如何查看Linux的CPU负载
哪些工具可以查看 CPU 负载? 可以使用 top 命令.uptime 命令,特别是 top 命令,功能强大,不仅仅可以用来查看 CPU 负载. CPU 负载怎么理解?是不是 CPU 利用率? 要区别 ...
- 浅谈Linux下CPU利用率和CPU负载【转】
转自:https://blog.csdn.net/Alisa_xf/article/details/71430406 在Linux/Unix下,CPU利用率(CPU utilization)分为用户态 ...
- linux 查看CPU、内存、磁盘信息命令
[1]查看CPU信息 (1)查看CPU信息(型号) cat /proc/cpuinfo | grep name | cut -f2 -d: | uniq -c (2)查看物理CPU个数 cat /pr ...
- cpu负载
查看cpu负载,我们经常会使用top,或者是uptime命令 但是这只能看到cpu的总体的负载情况.如果我们想看cpu每个核心的负载情况是看不到的. 所以我们可以用mpstat命令 服务器一共32核心 ...
- Linux CPU负载
昨天查看Nagios警报信息,发现其中一台服务器CPU负载过重,机器为CentOS系统.信息如下: 2011-2-15 (星期二) 17:50 WARNING - load average: 9.73 ...
- linux里的CPU负载
昨天查看Nagios警报信息,发现其中一台服务器CPU负载过重,机器为CentOS系统.信息如下: 2011-2-15 (星期二) 17:50 WARNING - load average: 9.73 ...
- redhat 7.6 查看硬件负载命令
1. 命令 查看CPU负载 命令1:uptime 命令2:cat /proc/loadavg 查看CPU信息:cat /proc/cpuinfo load average:表示平均1分钟内运行的 ...
- Linux查看CPU历史负载
sar -f /var/log/sa/sa20 -s 02:00:00 -e 06:00:00 | head -n 50 sysstat工具与负载历史回放 很多系统负载过高的时候我们是无法立即获知或者 ...
- (转)linux查看CPU性能及工作状态的指令mpstat,vmstat,iostat,sar,top
衡量CPU性能的指标: 1,用户使用CPU的情况:CPU运行常规用户进程CPU运行niced processCPU运行实时进程 2,系统使用CPU情况:用于I/O管理:中断和驱动用于内存管理:页面交换 ...
随机推荐
- *未解决 javaweb登录+验证码 bug存留
参考:https://www.cnblogs.com/ajing2018/p/15917166.html 感谢大佬指路 虽然还是没跑起来quq ## 案例:验证码 1. 案例需求: ...
- Dapr v1.10.0 版本已发布
Dapr是一套开源.可移植的事件驱动型运行时,允许开发人员轻松立足云端与边缘位置运行弹性.微服务.无状态以及有状态等应用程序类型.Dapr能够确保开发人员专注于编写业务逻辑,而不必分神于解决分布式系统 ...
- 如何使用 ArrayPool
如果不停的 new 数组,可能会造成 GC 的压力,因此在 aspnetcore 中推荐使用 ArrayPool 来重用数组,本文将介绍如何使用 ArrayPool. 使用 ArrayPool Arr ...
- HGAME 2023 WP week1
WEEK1 web Classic Childhood Game 一眼顶真,直接翻js文件,在Events.js中找到mota(),猜测是获取flag,var a = ['\x59\x55\x64\x ...
- Cesium用wsad进行场景漫游(九)
2023-01-14 先看效果,wsadqe控制方向升降,鼠标拖动屏幕也可以控制方向 整理下思路: 1. 使用movement变量控制是否进行漫游 2.1 进行漫游则先将enableRotate等全部 ...
- CentOS7加入AD域(winbind)
作者:独笔孤行 官网: http://anyamaze.com 公众号:云实战 前言 AD域(Active Directory)是Windows服务器的活动目录,在目录中可以收录公司的电脑账 ...
- 跳板攻击之:reGeorg 代理转发
跳板攻击之:reGeorg 代理转发 郑重声明: 本笔记编写目的只用于安全知识提升,并与更多人共享安全知识,切勿使用笔记中的技术进行违法活动,利用笔记中的技术造成的后果与作者本人无关.倡导维护网络安全 ...
- location.search
问号 ? 之后的部分 location.search
- computed与watch的区别
1.computed表示的是计算属性,watch指的是监听属性,监听的值变化时执行回调函数 2.computed会使用缓存,而watch不使用缓存,每次监听都执行回调 3.computed需要retu ...
- PostgreSQL数据库切割和组合字段函数
Postgresql里面内置了很多的实用函数,下面介绍下组合和切割函数一.组合函数1.concata.语法介绍 concat(str "any" [, str "any& ...