优化命令之mpstat——CPU调优

目录

一:mpstat命令描述

1.1下载mpstat的软件包

1.2mpstat语法格式

1.3mpstat命令的各列含义

1.4平均负载信息

二:压力测试工具stress

2.1工具简介

2.2参数详解

2.3下载压力工具软件包

三:查看运行中的进程/任务、CPU、内存等统计信息——pidstat

四:实验

4.1压力测试,查看CPU的使用率

4.2模拟I/O负载

4.3模拟大量进程场景

五:总结

一:mpstat命令描述

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

1.1下载mpstat的软件包

这个命令Linux默认没有安装,它是Linux性能工具集sysstat中的一个工具,所以我们要装上sysstat,安装方法随不同的系统略有不同

sysstat是一个软件包,包含监测系统性能及效率的一组工具,这些工具对于我们收集系统性能数据,比如:CPU 使用率、硬盘和网络吞吐数据,这些数据的收集和分析,有利于我们判断系统是否正常运行

1.2mpstat语法格式

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

 

第一个部分:输出首先显示所有CPU的合计指标,然后显示了每个CPU各项指标

第二个部分:在结尾处显示所有CPU的平均值

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的空闲时间的百分比

 mpstat主要用在当系统变慢,平均负载增大时,我们想判断到底是CPU的使用率增大了,还是IO压力增大的情况

1.4平均负载信息

当系统变慢,用top或uptime来了解系统的负载情况

二:压力测试工具stress

2.1工具简介

stress是Linux下的一个压力测试工具,可以对cpu、memory(内存)、IO以及磁盘进行压力测试,可以指定负载的cpu个数

2.2参数详解

-c

--cpu  产生n个进程,每个进程都反复不停的计算随机数的平方根

-i

--io  产生n个进程,每个进程反复调用 将内存上的内容写到硬盘上

-m

-vm  产生n个进程,每个进程不断分配和释放内存

-t

-timout   在n秒后结束进程

-d

--hadd  产生n个不断执行 write 和unlink函数的进程(创建文件、写入内容、删除文件)

2.3下载压力工具软件包

需要先下载所需要的依赖包否则直接下载stress软件包工具不成功

yum install epel-release -y

yum install stress -y

三:查看运行中的进程/任务、CPU、内存等统计信息——pidstat

参数:

-u

默认的参数,显示各个进程的CPU使用统计

-r

显示各个进程的内存使用统计

-d

显示各个进程的IO使用情况

-p

指定进程号

-w

显示每个进程的上下文切换情况

-t

显示选择任务的线程的统计信息外的额外信息

-V

显示版本号

-h

在一行上显示了所有活动,这样其他程序可以容易解析

-I(大写)

在SMP环境,表示任务的CPU使用率/内核数量

-l

显示命令名和所有参数


pidstat -u 查看本机全部进程的CPU使用情况

pidstat -u -p [PID] 2 3 每两秒输出一次进程号为PID的进程CPU使用情况,输出3次

四:实验

4.1压力测试,查看CPU的使用率

采用stress压力测试工具,模拟CPU 负载的情况,高IO的情况,使用uptime查看平均负载,使用mpstat和pidstat工具,找出负载高的根源

压力测试前,cpu的使用率及IO的使用情况

模拟cpu负载

使用stress工具进行压力测试

stress --cpu 2 --timeout 600
模拟对2个cpu增加压力,持续600s

初始信息负载情况

产生压力后系统平均负载信息

压力测试前初始信息

进行压力测试,对2个CPU进行增压 持续600秒

查看运行中的进程和任务,stress对2个cpu使用率为100%

pidstat -u 5 查看运行中的进程和任务,每5秒刷新一次
找到原因:是因为stress进程产生的压力过大

解决问题
kill -9 

4.2模拟I/O负载

-i:--io 产生n个进程,每个进程反复调用 将内存上的内容写到硬盘上

进行压力测试,产生10个进程,持续600秒

mpstat -P ALL 1 2
显示所有CPU统计的信息,表示每隔1秒,总共2次

注意:使用stress无法模拟iowait升高,但sys(表示内核进程使用的 CPU 百分比。)升高。stress -i参数表示通过系统调用sync来模拟IO问题,但sync是刷新内存缓冲区数据到磁盘中,以确保同步。如果内存缓冲区内没多少数据,读写到磁盘中的数据也就不多,没法产生IO压力。使用SSD磁盘的环境中尤为明显,iowait一直为0,但因为大量系统调用,导致系统CPU使用率sys升高 

stress --io 15 --hdd 15 --timeout 600s
-d:--hadd 产生n个不断执行 write 和unlink函数的进程(创建文件、写入内容、删除文件)
-i:--io  产生n个进程,每个进程反复调用 将内存上的内容写到硬盘上

查看正在进行的进程pid号

找到异常原因

pidstat -d 1 3 (-d 参数查看各进程I/O情况)

找到相应进程,将问题进程杀死

杀死进程后,mpstat命令查看

4.3模拟大量进程场景

当系统中运行进程超出 CPU 运行能力时,就会出现等待 CPU 的进程。比如,我们还是使用 stress,但这次模拟的是10个进程

初始信息负载情况

 由于系统只有 2个CPU,因此系统的CPU处于严重过载状态,平均负载高达 9.23 

mpstat -P ALL 1 2 查看所有cpu 间隔1秒,执行2次

运行pidstat来看一下进程的情况
pidstat -u 1 2     显示各个进程的cpu使用统计 每1秒刷新一次,总共2次

找到相应进程杀死再查看此时负载情况

五:总结

cpu使用率是单位时间内cpu繁忙情况的统计,跟系统平均负载不一定完全对应系统中存在大量等待cpu调度的进程,会使load average平均负载和cpu使用率都升高mpstat的全称为Multiprocessor Statistics,是一款常用的多核CPU性能分析工具,用来实时查询每个CPU的性能指标,以及所有CPU的平均指标 

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值