目录
    
   
    
     三、查看运行中的进程/任务、CPU、内存等的统计信息——pidstat
    
   
    一、mpstat 命令
   
    1、mpstat概述
   
    
     
      mpstat (multiprocessor state) 可以查看所有cpu的平均负载,也可以查看指定cpu的负载。所以mpstat其实就是主要查看CPU负载的一个工具。是一款常用的
     
    
    
     多核
    
    
     
      CPU性能分析工具,用来实时查询每个CPU的性能指标,以及所有CPU的平均指标。
     
    
   
    2、下载mpstat软件包
   
    
     
      它是Linux性能工具集sysstat中的一个工具,所以我们要装上sysstat,安装方法随不同的系统略有不同,
     
    
    
     
      
       
        sysstat
       
      
     
    
    
     
      是一个软件包,包含监测系统性能及效率的一组工具,这些工具对于我们收集系统性能数据,比如:CPU 使用率、硬盘和网络吞吐数据,这些数据的收集和分析,有利于我们判断系统是否正常运行
     
    
   
    
     
      
       
        CentOs  系统的安装方法
       
      
     
    
   
     
   
    2、
    
     
      
       
        mpstat的语法格式
       
      
     
    
   
mpstat [-P {cpu|ALL}] [interval [count]]
    
     
      
       
        mpstat命令参数
       
      
     
    
   
| 参数 | 描述 | 
| -P {cpu|ALL} | 指定要监控哪个CPU ,范围是 [0~n-1] ,ALL表示监控所有CPU都监控 | 
| internval | 相邻两次采样的间隔时间 | 
| count | 采样的次数,count只能和internval一起使用 | 
    
     
      示例
     
    
   
     
   
    
     
      
       其中
      
     
    
   
    
     第一部分:输出首先显示了所有CPU的合计指标,然后显示了每个CPU各项的指标。
    
   
    
     第二部分:在结尾处显示所有CPU的平均值
    
   
    3、
    
     
      
       mpstat命令的各列含义
      
     
    
   
     
   
| 显示参数 | 描述 | 
| 
         | 
         | 
| 
         | 
         | 
| 
         | 表示使用 nice 值的 CPU 的百分比。 | 
| 
         | 表示内核进程使用的 CPU 百分比。 | 
| 
         | 表示等待进行 I/O 所使用的 CPU 时间百分比。 | 
| 
         | 
         | 
| 
         | 
         | 
| 
         | 
         | 
| 
         | 
         | 
| 
         | 
         | 
| 
         | 
         | 
    
     
      
       mpstat主要用在当系统变慢,平均负载增大时,我们想判断到底是CPU的使用率增大了,还是IO压力增大的情况。
      
     
    
   
    4、平均负载信息
   
    
     
      
       当系统变慢,用top或uptime来了解系统的负载情况。
      
     
    
   
系统平均负载是指在特定时间间隔内运行队列中的平均进程数
如果单个CPU内核的当前活动进程数不大于3的话,那么系统的性能是良好的
     
   
而最后三个数字呢,依次则是过去 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、常用参数
   
| 
         | 
         | 
| 
         | 
         | 
| 
         | 
         | 
| 
         | 
         | 
| 
         | 
         | 
| 
         | 
         | 
| 
         | 
         | 
| 
         | 
         | 
| 
         | 
         | 
| 
         | 
         | 
    四:实验
   
    
     1、实验目的
    
   
    
     
      采用stress压力测试工具,模拟CPU 负载的情况,高IO的情况,使用uptime查看平均负载,使用mpstat和pidstat工具,找出负载高的根源。
     
    
   
    
     
      查看系统平均负载情况uptime
     
    
   
     
   
    2、压力测试
    
     
      
       查看CPU的使用率
      
     
    
   
    
     
      模拟cpu 负载
     
    
   
    
     压力测试前,cpu
    
    
     的使用率
    
   
     
   
    
     使用stress工具进行压力测试
    
   
[root@ly ~]# stress --cpu 2 --timeout 600
进行压力测试 对2快cpu 进行增压 持续600s
     
   
产生压力后的信息:显示用户进程 stress对cpu的使用率为100% cpu占用率过高,cpu负载
     
   
[root@ly ~]# pidstat -u 5   查看运行中的进程和任务,每5秒刷新一次
查看运行中的进行和任务,stress对2快cpu使用率过高
    
     
      找到原因:是因为stress进程产生的压力过大
     
    
   
     
   
    
     
      解决问题
     
    
   
[root@ly ~]# kill -9 19768			杀死相应负载过大的进程,释放cpu负载
     
   
    2、模拟I/O负载
   
使用stress工具进行压力测试
stress --io 10 --timeout 600
进行压力测试,产生10个进程,持续600秒
-i : --io  产生n个进程,每个进程反复调用 将内存上的内容写到硬盘上
     
   
[root@ly ~]# mpstat -P ALL 1 2 
显示所有CPU统计的信息,表示每隔1秒,总共2次
     
   
注:使用stress无法模拟iowait升高,但sys(表示内核进程使用的 CPU 百分比。)升高。stress -i参数表示通过系统调用sync来模拟IO问题,但sync是刷新内存缓冲区数据到磁盘中,以确保同步。如果内存缓冲区内没多少数据,读写到磁盘中的数据也就不多,没法产生IO压力。使用SSD(固态硬盘)磁盘的环境中尤为明显,iowait一直为0,但因为大量系统调用,导致系统CPU使用率sys升高。
[root@ly ~]# stress --io 15 --hdd 15 --timeout 600s
-d : --hdd  产生n个不断执行 write 和unlink函数的进程(创建文件、写入内容、删除文件)
-i : --io  产生n个进程,每个进程反复调用 将内存上的内容写到硬盘上
     
   
[root@ly ~]# mpstat -P ALL 1 2
Io 读写占用百分比过高
     
   
    
     查看正在进行的进程pid号
    
   
    
     找到异常原因
    
   
    
     
      
       
        查看是哪个进程导致I/O读写
       
      
     
     过高
    
   
pidstat -d 1 3(-d参数查看各进程io情况)
Stress 占用进程导致io读写过高
     
   
找到相应进程,将问题进程杀死
     
   
    
     
      解决问题
     
    
   
杀死进程后,mpstat命令查看
     
   
    3、模拟大量进程场景
   
当系统中运行进程超出 CPU 运行能力时,就会出现等待 CPU 的进程。比如,我们还是使用 stress,但这次模拟的是 20 个进程
     
   
由于系统只有 4个 CPU,因而,系统的 CPU 处于严重过载状态,平均负载高达 16.84
     
   
接着再运行 pidstat 来看一下进程的情况
[root@ly ~]# pidstat -u 1 2       #显示各个进程的CPU使用统计  每1秒刷新一次,总共执行2次
     
   
[root@ly ~]# mpstat -P ALL 1 2         #-P 查看所有cpu   间隔1秒,执行2次
可以通过平均负载知道cpu是处于负载的状况。
     
   
    五、总结
   
cpu使用率是单位时间内cpu繁忙情况的统计,跟系统平均负载不一定完全对应,系统中存在大量等待cpu调度的进程,会使load average平均负载和cpu使用率都升高,mpstat的全称为Multiprocessor Statistics,是一款常用的多核CPU性能分析工具,用来实时查询每个CPU的性能指标,以及所有CPU的平均指标。
 
