天天看点

linux命令---mpstat概述应用排查问题

概述

mpstat是MultiProcessor Statistics的缩写,是实时系统监控工具。其报告与CPU的一些统计信息,这些信息存放在/proc/stat文件中。在多CPUs系统里,其不但能查看所有CPU的平均状况信息,而且能够查看特定CPU的信息。

应用

mpstat的语法

mpstat [ -A ] [ -I { SUM | CPU | ALL } ] [ -u ] [ -P { cpu [,…] | ON | ALL } ] [ -V ] [ interval [ count ] ]

*注意*对于不同的版本参数会有所区别上面是基于sysstat9.0.4,比如7.0.2命令格式就是

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

所以请针对版本使用正确的参数,不要较真,使用前最好man下帮助

mpstat选项

选项名 含义
-A 该参数相当于指定参数:-I ALL -u -P ALL
-I 中断统计报告可选项有{ SUM | CPU | ALL }:sum关键字显示每个处理器的总中断数会有两个字段显示—cpu、intr/s ;cpu关键字每个CPU每秒收到的中断数;ALL关键字相当于指定所有上面的关键词,因此中断显示统计数据。
-P {cpu […]|ON |ALL} 处理器数量的统计报告.cpu是处理器的数量。注意,处理器0是第一个处理器。cpu在[0,cpu个数-1]中取值
-u CPU使用率报告:显示列有CPU、%usr、%nice、%sys、%iowait、%irq、%soft、%stesl、%guest、%idle

mpstat参数

参数名 含义
internal 相邻的两次采样的间隔时间
count 采样的次数,count只能和delay一起使用

*注意*

1、无参数时,mpstat则显示系统启动以后所有信息的平均值。

2、有interval时,第一行的信息自系统启动以来的平均信息。从第二行开始,输出为前一个interval时间段的平均信息。

参数 解释从/proc/stat获得数据
CPU 处理器ID,关键字all统计计算所有处理器的平均值
%user 在internal时间段里,用户态执行应用程序的CPU时间占用百分比(usr/total)*100
%nice 在internal时间段里,nice值为负进程的CPU时间占用百分比(nice/total)*100
%sys 在internal时间段里,内核时间占用百分比,注意,这并不包括硬件和软件中断的服务时间(system/total)*100
%iowait 在internal时间段里,硬盘IO等待时间占用百分比,即在有未处理的IO请求时CPU处于空闲状态。(iowait/total)*100
%irq 在internal时间段里,硬中断时间占用百分比(irq/total)*100
%soft 在internal时间段里,软中断时间占用百分比(softirq/total)*100
%steal 在internal时间段里,软中断时间占用百分比(softirq/total)*100
idle 在internal时间段里,CPU除去等待磁盘IO操作外的因为任何原因而空闲的时间闲置时间占用百分比(idle/total)*100
intr/s 在internal时间段里,每秒CPU接收的中断的次数(intr/total)*100

排查问题

1、cpu计算资源分布不均匀,比如只占用某一核:如CPU0,是集中在内核态还是用户态?是软中断还是IO还是sys,是网络负载大还是别的。用户的线程和进程完全可以由开发者来控制。net软中断均衡优化服务器底层。对于中断和性能可以参考xxxx(博文还未整理完成后加上链接)

2、对于高并发请求,可能会出现CPU0占用非常高,其他相对比较空闲甚至非常闲,且CPU0 [soft%占比和intr/s数值]相对其他核较高,这时可能需要优化cpu负载均衡(中断分配)问题,比如使用irqbalance(需要根据情况开启或关闭该服务,是一把双刃剑能解决问题也被称为是性能杀手)

补充说明:

irqbalance理论上:

  启用irqbalance 服务,既可以提升性能,又可以降低能耗。

  irqbalance 优化中断分配,自动收集系统数据以分析使用模式,并依据系统负载状况将工作状态置于Performance mode或Power-save mode。

  1)处于 Performance mode 时,irqbalance 会将中断尽可能均匀地分发给各个 CPU core,以充分利用 CPU 多核,提升性能。

  2)处于 Power-save mode 时,irqbalance 会将中断集中分配给第一个 CPU,以保证其它空闲 CPU 的睡眠时间,降低能耗。

irqbalance实际中:

  往往影响cpu的使用均衡,建议服务器环境中关闭。还有就是因为在实践中专用的应用程序通常是绑定在特定的CPU上的,所以其实不可不需要它.

  irqbalance说透了就是往/proc/irq/N/smp_affinity文件写入你希望的亲缘的CPU的mask码。

原文链接

欢迎补充未完待续……

继续阅读