> 文档中心 > Cpu调优 mpstat 命令

Cpu调优 mpstat 命令

文章目录

  • 一、mpstat 命令
    • 1、mpstat概述
    • 2、下载mpstat软件包
    • 3、mpstat的语法格式
    • 4、mpstat命令的各列含义
    • 5、平均负载信息
  • 二、压力测试工具stress
    • 1、工具简介
    • 2、参数详解
    • 3、下载压力测试工具
  • 三、查看运行中的进程/任务、CPU、内存等的统计信息------pidstat
    • 1、常用参数
  • 四:实验
    • 1、实验目的
    • 2、压力测试查看CPU的使用率
    • 3、模拟I/O负载 使用stress工具进行压力测试
    • 4、模拟大量进程场景
  • 五、总结

一、mpstat 命令

1、mpstat概述

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

2、下载mpstat软件包

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

3、mpstat的语法格式

mpstat [-P {cpu|ALL}] [interval [count]]

mpstat命令参数

参数 描述
-P {cpu,ALL} 指定要监控哪个CPU ,范围是 [0~n-1] ,ALL表示监控所有CPU都监控
internval 相邻两次采样的间隔时间
count 采样的次数,count只能和internval一起使用

在这里插入图片描述
其中

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

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

4、mpstat命令的各列含义

在这里插入图片描述

显示参数 描述
CPU 显示的是某个CPU 还是全部CPU all=全部
%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压力增大的情况。

5、平均负载信息

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

系统平均负载是指在特定时间间隔内运行队列中的平均进程数

如果单个CPU内核的当前活动进程数不大于3的话,那么系统的性能是良好的
Cpu调优 mpstat 命令
而最后三个数字呢,依次则是过去 1 分钟、5 分钟、15 分钟的平均负载(Load Average)。

17:44:22 up   #当前系统时间 16 min#系统运行时长 2 users      #当前登录用户个数

二、压力测试工具stress

1、工具简介

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

2、参数详解

-c –cpu 产生n个进程,每个进程都反复不停的计算随机数的平方根
-i –io 产生n个进程,每个进程反复调用 将内存上的内容写到硬盘上
-m -vm 产生n个进程,每个进程不断分配和释放内存
-t –timout 在n秒后结束进程
-d –hdd 产生n个不断执行 write 和unlink函数的进程(创建文件、写入内容、删除文件)

3、下载压力测试工具

[root@ly ~]# yum install -y epel-release    注:需要先下载所需要的依赖包否则直接下载stress软件包工具不成功[root@ly ~]# yum install -y stress 

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

pidstat 是一个常用的进程性能分析工具,用来实时查看进程的 CPU、内存、I/O 以及上下文切换等性能指标。

1、常用参数

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

四:实验

1、实验目的

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

查看系统平均负载情况uptime
Cpu调优 mpstat 命令

2、压力测试查看CPU的使用率

模拟cpu 负载

压力测试前,cpu的使用率
Cpu调优 mpstat 命令
使用stress工具进行压力测试

stress --cpu 2 --timeout 600

进行压力测试 对2快cpu 进行增压 持续600s

产生压力后的信息:显示用户进程 stress对cpu的使用率为100% cpu占用率过高,cpu负载
Cpu调优 mpstat 命令

 pidstat -u 5   查看运行中的进程和任务,每5秒刷新一次查看运行中的进行和任务,stress对2快cpu使用率过高

找到原因:是因为stress进程产生的压力过大
Cpu调优 mpstat 命令
解决问题

 kill -9 23845杀死相应负载过大的进程,释放cpu负载

Cpu调优 mpstat 命令

3、模拟I/O负载 使用stress工具进行压力测试

stress --io 10 --timeout 600 进行压力测试,产生10个进程,持续600秒-i : --io  产生n个进程,每个进程反复调用 将内存上的内容写到硬盘上

Cpu调优 mpstat 命令

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

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

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

Cpu调优 mpstat 命令

 mpstat -P ALL 1 2   

Io 读写占用百分比过高
Cpu调优 mpstat 命令
查看正在进行的进程pid号

找到异常原因

查看是哪个进程导致I/O读写过高

pidstat -d 1 3(-d参数查看各进程io情况) Stress 占用进程导致io读写过高

Cpu调优 mpstat 命令
找到相应进程,将问题进程杀死
Cpu调优 mpstat 命令
解决问题

杀死进程后,mpstat命令查看
Cpu调优 mpstat 命令

4、模拟大量进程场景

当系统中运行进程超出 CPU 运行能力时,就会出现等待 CPU 的进程。比如,我们还是使用 stress,但这次模拟的是 20 个进程
Cpu调优 mpstat 命令
由于系统只有 4个 CPU,因而,系统的 CPU 处于严重过载状态,平均负载高达 18.59
Cpu调优 mpstat 命令
接着再运行 pidstat 来看一下进程的情况

pidstat -u 1 2#显示各个进程的CPU使用统计  每1秒刷新一次,总共执行2次

Cpu调优 mpstat 命令

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

可以通过平均负载知道cpu是处于负载的状况。
Cpu调优 mpstat 命令

五、总结

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