“mpstat” is a command-line tool that is used to monitor CPU utilization on Linux and Unix-like systems. It provides information about CPU utilization, including the utilization of individual cores, the utilization of individual processes, and the utilization of the system as a whole.
The mpstat command is a part of the Sysstat set of utilities. The mpstat command is used to report per processor statistics in a tabular format.
$ mpstat 1 1 CPU minf mjf xcal intr ithr csw icsw migr smtx srw syscl usr sys wt idl 0 672 0 2457 681 12 539 17 57 119 0 4303 18 10 0 73 1 90 0 1551 368 22 344 6 37 104 0 3775 17 4 0 79 2 68 0 1026 274 14 217 4 24 83 0 2393 11 3 0 86 3 50 0 568 218 9 128 3 17 56 0 1319 7 2 0 92 4 27 0 907 340 12 233 3 22 72 0 2034 9 2 0 88 5 75 0 1777 426 25 370 5 33 111 0 4820 22 4 0 74
In the preceding output of the mpstat command, each row of the table represents the activity of one processor. The first table shows the summary of activity since boot time. The important column that is relevant from a DBA’s perspective is the value in the smtx column. The smtx measurement indicates the number of times CPU failed to obtain the mutual exclusion lock or mutex. Mutex stalls waste CPU time and degrade multiprocessor scaling.
A general rule of thumb is if the values in the smtx column are greater than 200, then it is a symptom and indication of CPU bottleneck issues that need to be investigated.
mpstat Command Examples
1. To report the processor stats:
# mpstat 2 10
2. To report all processor stats:
# mpstat -A 2 10
3. To get the processor number for which the stats are displaying:
# mpstat -P 2 10
4. To report the CPU utilization stats:
# mpstat -u 2 10
5. To get the version info:
# mpstat -V
Conclusion
By default, mpstat returns combined averaged stats for all CPUs. Flag -P can be used to get details of specific CPUs. The following command will display statistics for processor one (0) and processor two (1), and update at an interval of 3 seconds:
$ mpstat -P 0,1 3