Android/Linux系统性能分析工具之-mpstat

1. 概述:

mpstat 是 Multiprocessor Statistics 的缩写,是Linux实时系统监控工具。其报告与 CPU 的一些统计信息,这些信息存放在 /proc/stat 文件中。

在多 CPUs 系统里,其不但能查看所有 CPU 的平均状况信息,而且能够查看特定 CPU 的信息。mpstat 最大的特点是:可以查看多核心 cpu 中每个计算核心的统计数据;而类似工具 vmstat 只能查看系统整体 cpu 情况

1.1 与vmstat差别

  • vmstat mpstat 命令的差别:mpstat 可以显示每个处理器的统计,而 vmstat 显示所有处理器的统计。因此,编写糟糕的应用程序(不使用多线程体系结构)可能会运行在一个多处理器机器上,而不使用所有处理器。从而导致一个 CPU 过载,而其他 CPU 却很空闲。通过 mpstat 可以轻松诊断这些类型的问题。
  • vmstat 中所有关于 CPU 的总结都适合 mpstat。当您看到较低的 %idle 数字时,您知道出现了 CPU 不足的问题。当您看到较高的 %iowait 数字时,您知道在当前负载下 I/O 子系统出现了某些问题。

1.2 嵌入式平台移植

mpstat属于sysstat软件包,针对Linux/Android嵌入式平台可以交叉编译sysstat后获取iostat可执行文件在该平台上操作。

Android平台Systat交叉编译可以参考下面文章:Android NDK交叉编译sysstat工具_坚定信念,百折不饶-CSDN博客

2. 用法

2.1 命令格式以及参数

mpstat [ options ] [] []

对应中文解释:

mpstat [选项] [<时间间隔>] [<次数>]

2.2 命令参数options解析

-A : 此选项等效于# mpstat -I ALL -u -P ALL

-I {SUM | CPU | ALL} : 报告中断统计信息。 使用SUM关键字,mpstat命令报告每个处理器的中断总数。使用CPU关键字,显示CPU或CPU每秒接收的每个中断的数量。ALL关键字等效于指定上面的所有关键字,因此显示所有中断统计信息。

-P {cpu [,...] | ON | ALL} : 指示要报告统计信息的处理器编号。cpu是处理器号。注意,处理器0是第一个处理器。 ON关键字表示将为每个在线处理器报告统计信息,而ALL关键字指示要为所有处理器报告统计信息。

-u : 报告cpu的利用率,将显示以下值:

-V : 打印版本号,然后退出。

2.3 实例

2.3.1 指定CPU编号

选项:-P:指定CPU编号
参数:
    间隔时间:每次报告的间隔时间(秒)
    次数:显示报告的次数

mpstat [-P {|ALL}] [internal [count]]
参数 解释
-P {|ALL} 表示监控哪个CPU,例如mpstat -P 0    mpstat -P 7   mpstat -P ALL
internal 相邻的两次采样的间隔时间
count 采样的次数,count只能和delay一起使用
当没有参数时,mpstat只显示系统所有信息的平均值,有internal参数时,第一行的信息是自系统启动以来的平均信息,从第二行开始,输出为前一个internal时间段的平均信息

Android/Linux系统性能分析工具之-mpstat_第1张图片

Android/Linux系统性能分析工具之-mpstat_第2张图片

 2.4 字段说明 

参数 释义 从/proc/stat获得数据
CPU 处理器ID
%usr 在internal时间段里,用户态的CPU时间(%),不包含 nice值为负进程 usr/total*100
%nice 在internal时间段里,nice值为负进程的CPU时间(%) nice/total*100
%sys 在internal时间段里,核心时间(%) system/total*100
%iowait 在internal时间段里,硬盘IO等待时间(%) iowait/total*100
%irq 在internal时间段里,硬中断时间(%) irq/total*100
%soft 在internal时间段里,软中断时间(%) softirq/total*100
%steal 显示虚拟机管理器在服务另一个虚拟处理器时虚拟CPU处在非自愿等待下花费时间的百分比 steal/total*100
%guest 显示运行虚拟处理器时CPU花费时间的百分比 guest/total*100
%gnice gnice/total*100
%idle 在internal时间段里,CPU除去等待磁盘IO操作外的因为任何原因而空闲的时间闲置时间(%) idle/total*100

你可能感兴趣的:(Android系统开发,Linux开发,mpstat,性能,Android性能,Linux性能,vmstat)