---
name: "pcp-mpstat"
section: "1"
platform: "linux"
package: "pcp"
version: "7.2.2-2"
release: "Arch Linux 2026-11-01"
platforms: ["linux"]
url: "https://new.carta.tech/pcp-mpstat"
---

# pcp-mpstat(1)

Report CPU and interrupt related statistics.

## NAME

**pcp-mpstat** - Report CPU and interrupt related statistics.

## SYNOPSIS

**pcp** \[*pcp options*\] **mpstat \[ -A \] \[ -u \] \[ -V \] \[ -I {** **SUM \| CPU \| SCPU \| ALL } \] \[ -P {** *cpu1,cpu2* **\[,...\] \| ON \| ALL } \] \[ -t** *interval* **\] \[ -s** *count* **\] \[ -a** *archive* **\] \[ -? \]**

## DESCRIPTION

**pcp-mpstat** command writes to standard output activities for each available processor, processor 0 being the first one. If no activity/option has been selected, then the default report is the CPU utilization (**-u**) report.

The *interval* parameter specifies the amount of time in seconds between each report. The default is one second. The value of *count* parameter determines the number of samples to be displayed. The default is continuous.

## OPTIONS

When invoked via the [**pcp**(1)](/pcp/1.md) command, the **-h**/ **--host**, **-a**/ **--archive**, **-O**/ **--origin**, **-s**/ **--samples**, **-t**/ **--interval**, **-Z**/ **--timezone** and several other *pcp options* become indirectly available; refer to [**PCPIntro**(1)](/PCPIntro/1.md) for a complete description of these options.

The additional command line options available for **pcp-mpstat** are:

- \-A

  This option is equivalent to specifying **-u -I ALL -P ALL**

- \-I { SUM \| CPU \| SCPU \| ALL }

  Report interrupts statistics.\
   With the **SUM** keyword, the **pcp-mpstat** command reports the total number of interrupts per processor. The following values are displayed:

**CPU**

Processor number. The keyword *all* indicates that statistics are calculated as averages among all processors.

**intr/s**

Show the total number of interrupts received per second by the CPU or CPUs.

With the **CPU** keyword, the number of each individual interrupt received per second by the CPU or CPUs is displayed. Interrupts are those under the kernel.percpu.interrupts metric tree.\
 Numeric instance names (for example IRQ numbers) are listed before non-numeric labels so the output remains stable as new named handlers are added.\
 If the current source (host or archive) does not export per-CPU interrupt metrics, the report prints **No per-CPU interrupt metrics available for this context.** and skips the table.

With the **SCPU** keyword, the number of each individual software interrupt received per second by the CPU or CPUs is displayed. Software interrupts are those under the kernel.percpu.softirqs tree.\
 The output follows the canonical softirq ordering of **HI**, **TIMER**, **NET\_TX**, **NET\_RX**, **BLOCK**, **IRQ\_POLL**, **TASKLET**, **SCHED**, **HRTIMER** and **RCU** before any remaining softirq labels, ensuring consistent column placement across samples.\
 When per-CPU softirq metrics are not present in the current context, the report emits **No per-CPU softirq metrics available for this context.** instead of the table.

The **ALL** keyword is equivalent to specifying all the keywords above and therefore all the interrupts statistics are displayed.

- \-P { cpu1,cpu2\[,...\] \| ON \| ALL }

  Indicate the processor number for which statistics are to be reported. *cpu1 and cpu2* are the processor numbers. A list of required processor numbers can be provided. Note that processor 0 is the first processor.

  The **ON** keyword indicates that statistics are to be reported for every online processor, whereas the **ALL** keyword indicates that statistics are to be reported for all processors.

- \-u

  Report CPU utilization. The following values are displayed:

  **CPU**

  Processor number. The keyword *ALL* indicates that statistics are calculated as averages among all processors.

  **%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). Note that this does not include time spent servicing hardware and software interrupts.

  **%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.

  **%gnice**

  Show the percentage of time spent by the CPU or CPUs to run a niced guest.

  **%idle**

  Show the percentage of time that the CPU or CPUs were idle and the system did not have an outstanding disk I/O request.

  Note: On SMP machines a processor that does not have any activity at all is a disabled (offline) processor.

- \-s N , --samples = N

  Set the number of samples to be displayed. Since the first sample is used for the rate conversion of some of the metrics, the total number of samples reported are one less that N. Default is continuous.

- \-t DELTA , --interval = DELTA

  Set the interval between two samples. The default is one second.

- \-a FILE , --archive = FILE

  Causes **pcp-mpstat** to use the specified archive than connecting to PMCD. The argument to **-a** is a comma-separated list of names, each of which may be the base name of an archive or the name of a directory containing one or more archives.

- \-V , --version

  Print version number then exit.

- \-? , --help

  Print usage message then exit.

## EXAMPLES

**pcp-mpstat -t 2 -s 5**

Display four reports of global statistics among all processors at two second intervals.

**pcp mpstat -P ALL -t 2 -s 5**

Display four reports of statistics for all processors at two second intervals.

## NOTES

**pcp-mpstat** is inspired by the [**mpstat**(1)](/mpstat/1.md) command and aims to be command line and output compatible with it.

## ENVIRONMENT

**TZ** and **LC\_TIME** environment variables can be used to override the default date display format for **pcp-mpstat**.

## PCP ENVIRONMENT

Environment variables with the prefix **PCP\_** are used to parameterize the file and directory names used by PCP. On each installation, the file */etc/pcp.conf* contains the local values for these variables. The **$PCP\_CONF** variable may be used to specify an alternative configuration file, as described in [**pcp.conf**(5)](/pcp.conf/5.md).

For environment variables affecting PCP tools, see [**pmGetOptions**(3)](/pmGetOptions/3.md).

## SEE ALSO

[**PCPIntro**(1)](/PCPIntro/1.md), [**pcp**(1)](/pcp/1.md), **[mpstat(1)](/mpstat/1.md),** [**pmParseInterval**(3)](/pmParseInterval/3.md), [**pmTraversePMNS**(3)](/pmTraversePMNS/3.md) and [**environ**(7)](/environ/7.md).
