mpstat是MultiprocessorStatistics的缩写,是一个CPU实时状态监控工具。它与vmstat命令类似,mpstat是通过/proc/stat里面的状态信息来进行统计的。使用mpstat最大的好处是,它可以查看多核CPU中每个计算核的统计数据,而vmstat只能查看系统整体的CPU情况。
mpstat [-P {cpu|ALL}] [internal [count]]
➢P{cpu|ALL}:表示监控哪个CPU,cpu在[0,cpu个数1]中取值。➢internal:相邻两次采样的间隔时间。➢count:采样的次数,count只能和delay一起使用。
mpstat 3 5Linux 3.10.0-1160.el7.x86_64 (server21) 03/16/2021 _x86_64_ (8 CPU)03:51:04 PM CPU %usr %nice %sys %iowait %irq %soft %steal %guest %gnice %idle03:51:07 PM all 4.05 0.00 2.13 0.00 0.00 0.26 0.00 0.00 0.00 93.5603:51:10 PM all 2.67 0.00 2.03 0.00 0.00 0.17 0.00 0.00 0.00 95.1303:51:13 PM all 3.88 0.00 3.07 0.00 0.00 1.28 0.00 0.00 0.00 91.7703:51:16 PM all 2.24 0.00 1.78 0.00 0.00 0.13 0.00 0.00 0.00 95.8603:51:19 PM all 2.97 0.00 2.12 0.00 0.00 0.34 0.00 0.00 0.00 94.57Average: all 3.16 0.00 2.23 0.00 0.00 0.43 0.00 0.00 0.00 94.18
➢CPU:处理器ID,多处理器时,会显示每个处理器ID号。➢%usr:显示了用户进程消耗的CPU时间百分比。➢%nice:显示了运行正常进程所消耗的CPU时间百分比。➢%sys:显示了系统进程消耗的CPU时间百分比。➢%iowait:显示了I/O等待所占用的CPU时间百分比。➢%irq:显示了硬中断时间占用的CPU时间百分比。➢%soft:显示了软中断时间占用的CPU时间百分比。➢%steal:显示了在内存相对紧张的环境下pagein强制对不同的页面进行的steal操作。➢%guest:显示了运行虚拟处理器时CPU花费时间的百分比。➢%gnice:显示了运行带有nice优先级的虚拟CPU(宿主机角度)所花费的时间百分比。➢%idle:显示了CPU处在空闲状态的时间百分比。
mpstat -P 2 3 5Linux 3.10.0-1160.el7.x86_64 (server21) 03/16/2021 _x86_64_ (8 CPU)03:52:02 PM CPU %usr %nice %sys %iowait %irq %soft %steal %guest %gnice %idle03:52:05 PM 2 3.06 0.00 1.70 0.00 0.00 0.00 0.00 0.00 0.00 95.2403:52:08 PM 2 3.08 0.00 1.71 0.00 0.00 0.34 0.00 0.00 0.00 94.8603:52:11 PM 2 3.44 0.00 2.75 0.00 0.00 0.00 0.00 0.00 0.00 93.8103:52:14 PM 2 3.77 0.00 3.08 0.00 0.00 1.37 0.00 0.00 0.00 91.7803:52:17 PM 2 2.39 0.00 2.05 0.00 0.00 0.34 0.00 0.00 0.00 95.22Average: 2 3.15 0.00 2.26 0.00 0.00 0.41 0.00 0.00 0.00 94.19
在实际的使用过程中,如果要显示每个处理器的统计,可以使用mpstat,因为某些不使用多线程体系结构的应用程序可能会运行在一个多处理器机器上,而不使用所有处理器,从而导致一个CPU过载,而其他CPU却很空闲。此时通过mpstat可以轻松诊断这些类型的问题。其实,vmstat中所有关于CPU的统计都适合mpstat,具体调优过程中,可以通过两个命令的结合来综合判断CPU是否有性能问题。例如,当通过两个命令都发现较低的%idle数值时,可以判断应该是CPU不足的问题。而当看到较高的%iowait数值时,就应该马上知道在当前负载下I/O子系统出现了某些问题。
