文章目录
一.mpstat
1.1mpstat概述
mpstat (multiprocessor state) 可以查看所有cpu的平均负载,也可以查看指定cpu的负载。所以mpstat其实就是主要查看CPU负载的一个工具。是一款常用的多核CPU性能分析工具,用来实时查询每个CPU的性能指标,以及所有CPU的平均指标。
1.2命令安装
它是Linux性能工具集sysstat中的一个工具,所以我们要装上sysstat,安装方法随不同的系统略有不同,sysstat是一个软件包,包含监测系统性能及效率的一组工具,这些工具对于我们收集系统性能数据,比如:CPU 使用率、硬盘和网络吞吐数据,这些数据的收集和分析,有利于我们判断系统是否正常运行
yum install -y sysstat #安装mpstat命令软件
命令语法格式:
mpstat [-P {
cpu|ALL}] [interval [count]]
参数介绍:
参数 | 描述 |
---|---|
-P {cpu | ALL} |
internval | 相邻两次采样的间隔时间 |
count | 采样的次数,count只能和internval一起使用 |
1.3mpstat参数介绍
显示参数 | 描述 |
---|---|
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的空闲时间的百分比 |
此处我们主要查看%idle值和%iowait,进行cpu负载时信息分析 |
1.4平均负载查看
使用uptime命令可以查看系统平均负载
当系统变慢,用top或uptime来了解系统的负载情况。
系统平均负载是指在特定时间间隔内运行队列中的平均进程数
如果单个CPU过去一分钟平均负载不大于3的话,那么系统的性能是良好的。2核是6依次类推
二.压力测试–stress
2.1stress
stress是Linux下的一个压力测试工具,可以对cpu、memory(内存)、IO以及磁盘进行压力测试,可以指定负载的cpu个数。
2.2命令包安装
yum install -y epel-release #安装epel软件库
yum install -y stress #安装软件包
什么是epel
EPEL (Extra Packages for Enterprise Linux)是一个开源的、免费的、基于社区的存储库项目,来自Fedora团队,它为Linux发行版提供了100%高质量的附加软件包,包括RHEL (Red Hat Enterprise Linux)、CentOS和Scientific Linux。 EPEL项目不是RHEL/CentOS的一部分,但它是为主要的Linux发行版设计的,提供了大量的开放源码包,如网络工具、系统管理员工具、编程、监控等。
为什么我们要使用epel提供了大量的开源包安装通过Yum和DNF。
Epel repo是100%开源和免费使用。
它不提供任何核心复制包,也没有兼容性问题。
所有EPEL包都由Fedora回购维护。
2.3stress参数
常用参数
-c --cpu 产生n个进程,每个进程都反复不停的计算随机数的平方根
-i --io 产生n个进程,每个进程反复调用 将内存上的内容写到硬盘上
-m --vm 产生n个进程,每个进程不断分配和释放内存
-t --timout 在n秒后结束进程
-d --hdd 产生n个不断执行 write 和unlink函数的进程(创建文件、写入内容、删除文件)
三.进程性能查看–pidstat
pidstat 是一个常用的进程性能分析工具,用来实时查看进程的 CPU、内存、I/O 以及上下文切换等性能指标。
3.1常用参数
选项 | 描述 |
---|---|
-u | 默认的参数,显示各个进程的CPU使用统计 |
-r | 显示各个进程的内存使用统计 |
-d | 显示各个进程的IO使用情况 |
-p | 指定进程号 |
-w | 显示每个进程的上下文切换情况 |
-t | 显示选择任务的线程的统计信息外的额外信息 |
-V | 版本号 |
-h | 在一行上显示了所有活动,这样其他程序可以容易解析。 |
-I(大写) | 在SMP环境,表示任务的CPU使用率/内核数量 |
-l | 显示命令名和所有参数 |
四.压力测试
采用stress压力测试工具,模拟CPU 负载的情况,高IO的情况,使用uptime查看平均负载,使用mpstat和pidstat工具,找出负载高的根源。
查看无负载时CPU信息
4.1模拟CPU负载
stress -c 3 -t 600
单核CPU,平均1分钟负载值超过3,已经过载了
使用pidstat命令查看使用cpu占用率前5的进程,此时可以看到占用率最高的几个进程,我们可以针对性的进行kill杀死进程,进行释放CPU
4.2模拟I/O负载
此处使用了2个cpu
stress --io 10 --hdd 10--timeout 600
进行压力测试,产生10个进程,持续600秒
-i : --io 产生n个进程,每个进程反复调用 将内存上的内容写到硬盘上
Io 读写占用百分比过高
查看正在进行的进程pid号
找到异常原因
查看是哪个进程导致I/O读写过高
pidstat -d 1 3(-d参数查看各进程io情况)
Stress 占用进程导致io读写过高
找到相应进程,将问题进程杀死
总结:cpu使用率是单位时间内cpu繁忙情况的统计,跟系统平均负载不一定完全对应,系统中存在大量等待cpu调度的进程,会使load average平均负载和cpu使用率都升高,mpstat的全称为Multiprocessor Statistics,是一款常用的多核CPU性能分析工具,用来实时查询每个CPU的性能指标,以及所有CPU的平均指标。