Linux mpstat Command - Reports Processors Related Statistics

Generally today computer is using multiple processors. Or maybe 1 physical processor with 4 cores inside. On server side, more processors or cores means more power. But the other side, application also more power consumption. You may find a situation when your cpu utilization is high but you feel that you don't running anything. On Linux system, you can monitor this activity using mpstat.

linux mpstat command

What is mpstat

mpstat is used to monitor cpu utilization on your system. It will be more usefull if your system has multiple processors. The first processors will signed as CPU 0. The second one will be signed CPU 1 and so on. From its manual page, mpstat is described as :

The mpstat command writes to standard output activities for each available processor, processor 0 being the first one. Global average activities among all processors are also reported. The mpstat command can be used both on SMP and UP machines, but in the latter, only global average activities will be printed. If no activity has been selected, then the default report is the CPU utilization report

How to run mpstat

Just type mpstat on your console to run mpstat.

$ mpstat

Linux 3.2.0-57-generic (USERNB01) 12/12/2013 _x86_64_ (2 CPU)

03:29:29 PM CPU %usr %nice %sys %iowait %irq %soft %steal %guest %idle
03:29:29 PM all 6.30 0.06 1.94 3.75 0.00 0.06 0.00 0.00 87.88

If you found an error such as : command not found or similar you may not install mpstat in your system.

If you are using CentOS, RedHat or Fedora, run this command to install mpstat

# yum install sysstat

If you are using Debian, Ubuntu or its derivative, run this command to install mpstat

# apt-get install sysstat

And here's how to read the information above.

  • 03:29:29 PM : means the time that mpstat was run
  • all : means All CPUs
  • %usr : show the percentage of CPU utilization that occurred while executing at the user level (application)
  • %nice : show the percentage of CPU utilization that occurred while executing at the user level with nice priority
  • %sys : show the percentage of CPU utilization that occurred while executing at the system level (kernel)
  • %iowait : show the percentage of time that the CPU or CPUs were idle during which the system had an outstanding disk I/O request
  • %irq : show the percentage of time spent by the CPU or CPUs to service hardware interrupts
  • %soft : show the percentage of time spent by the CPU or CPUs to service software interrupts
  • %steal : show the percentage of time spent in involuntary wait by the virtual CPU or CPUs while the hypervisor was servicing another virtual processor
  • %guest : show the percentage of time spent by the CPU or CPUs to run a virtual processor
  • %idle : show the percentage of time that the CPU or CPUs were idle and the system did not have an outstanding disk I/O equest
    1. Print CPU utilization per processors

      As you can see above, our system has 2 CPUs. If you want, you can use -P parameter followed by CPU number to see specific CPU utilization.

      $ mpstat -P 0

      Linux 3.2.0-57-generic (USERNB01) 12/12/2013 _x86_64_ (2 CPU)

      03:54:00 PM CPU %usr %nice %sys %iowait %irq %soft %steal %guest %idle
      03:54:00 PM 0 3.82 0.01 1.16 3.88 0.00 0.06 0.00 0.00 91.06

      $ mpstat -P 1
      Linux 3.2.0-57-generic (USERNB01) 12/12/2013 _x86_64_ (2 CPU)

      03:53:58 PM CPU %usr %nice %sys %iowait %irq %soft %steal %guest %idle
      03:53:58 PM 1 16.52 0.20 4.48 0.46 0.00 0.04 0.00 0.00 78.30

      Print all CPU Utilization

      You can also print every CPU utilization of processors in a single page. Just use -P ALL parameter to do it

      $ mpstat -P ALL

      Linux 3.2.0-57-generic (USERNB01) 12/12/2013 _x86_64_ (2 CPU)

      04:07:36 PM CPU %usr %nice %sys %iowait %irq %soft %steal %guest %idle
      04:07:36 PM all 6.02 0.04 1.72 2.99 0.00 0.05 0.00 0.00 89.17
      04:07:36 PM 0 3.84 0.01 1.15 3.72 0.00 0.06 0.00 0.00 91.21
      04:07:36 PM 1 13.55 0.15 3.66 0.46 0.00 0.03 0.00 0.00 82.15

      Print CPU utilization using intervals

      You may want to see the CPU utilization movement. To do this, you can use intervals. Here's an example.

      $ mpstat 3 4

      Linux 3.2.0-57-generic (USERNB01) 12/12/2013 _x86_64_ (2 CPU)

      04:27:11 PM CPU %usr %nice %sys %iowait %irq %soft %steal %guest %idle
      04:27:14 PM all 0.67 0.00 0.34 0.00 0.00 0.00 0.00 0.00 98.99
      04:27:17 PM all 1.17 0.00 0.33 1.33 0.00 0.00 0.00 0.00 97.17
      04:27:20 PM all 0.84 0.00 0.17 0.00 0.00 0.00 0.00 0.00 98.99
      04:27:23 PM all 1.00 0.00 0.17 1.51 0.00 0.00 0.00 0.00 97.32
      Average: all 0.92 0.00 0.25 0.71 0.00 0.00 0.00 0.00 98.12

      The above command is to show you 4 reports about CPU utilization with 3 seconds intervals

      Print mpstat version

      Finally, to print mstat version, use -V parameter

      $ mpstat -V

      sysstat version 10.0.3
      (C) Sebastien Godard (sysstat orange.

      That's a quick usage of mpstat command in Linux system. You may see msptat manual page by typing man mpstat to explore more detail.

      About Bobbin Zachariah

      Founder of LinOxide, passionate lover of Linux and technology writer. Started his career in Linux / Opensource from 2000. Love traveling, blogging and listening music. Reach Bobbin Zachariah about me page and google plus page.

      Author Archive Page

      Have anything to say?

      Your email address will not be published. Required fields are marked *

      All comments are subject to moderation.