CPU Metrics

CPU usage metrics are available in three averaging windows: 1-minute (default), 5-minute (suffix 5), and 15-minute (suffix 15). Per-core variants accept a core index as argument. Windows also provides CurrentUsage variants for instantaneous readings.

System.CPU.CacheSize(*)

CPU cache size in kilobytes.

Data Type

Integer

Platforms

Linux

Table 1. Arguments
Argument Type Description

index

Integer

CPU index (zero-based)

System.CPU.CoreId(*)

CPU core ID.

Data Type

Integer

Platforms

Linux

Table 2. Arguments
Argument Type Description

index

Integer

CPU index (zero-based)

System.CPU.Count

Number of CPU cores available to the system.

Data Type

Unsigned Integer (Integer on macOS and FreeBSD)

Platforms

Linux, Windows, FreeBSD, Solaris, AIX, macOS, NetBSD, OpenBSD

System.CPU.CountOnline

Number of currently online CPUs.

Data Type

Unsigned Integer

Platforms

Linux

System.CPU.CountOffline

Number of currently offline CPUs.

Data Type

Unsigned Integer

Platforms

Linux

System.CPU.Frequency(*)

CPU frequency in megahertz. On FreeBSD only the argument-less form System.CPU.Frequency is available.

Data Type

Float (Integer on FreeBSD)

Platforms

Linux, FreeBSD

Table 3. Arguments
Argument Type Description

index

Integer

CPU index (zero-based)

System.CPU.Model(*)

CPU model identification string. On FreeBSD only the argument-less form System.CPU.Model is available.

Data Type

String

Platforms

Linux, FreeBSD

Table 4. Arguments
Argument Type Description

index

Integer

CPU index (zero-based)

System.CPU.PhysicalId(*)

Physical CPU ID.

Data Type

Integer

Platforms

Linux

Table 5. Arguments
Argument Type Description

index

Integer

CPU index (zero-based)

System.CPU.VendorId

CPU vendor identification string.

Data Type

String

Platforms

Linux, Windows, FreeBSD

System.CPU.LoadAvg

1-minute load average.

Data Type

Float

Platforms

Linux, FreeBSD, Solaris, AIX, macOS, NetBSD, OpenBSD, Windows (via winperf, based on processor queue length)

System.CPU.LoadAvg5

5-minute load average.

Data Type

Float

Platforms

Linux, FreeBSD, Solaris, AIX, macOS, NetBSD, OpenBSD, Windows (via winperf, based on processor queue length)

System.CPU.LoadAvg15

15-minute load average.

Data Type

Float

Platforms

Linux, FreeBSD, Solaris, AIX, macOS, NetBSD, OpenBSD, Windows (via winperf, based on processor queue length)

System.CPU.ContextSwitches

Total context switch count since system boot.

Data Type

Unsigned Integer

Platforms

Linux, Windows, FreeBSD

System.CPU.Interrupts

Total interrupt count. Per-core variant accepts a core index argument (Windows only).

Data Type

Unsigned Integer

Platforms

Linux, Windows, FreeBSD

Per-Core Variant (Windows)

System.CPU.Interrupts(*) — returns interrupt count for a specific core.

Table 6. Arguments (per-core variant)
Argument Type Description

index

Integer

CPU core index (zero-based)

System.CPU.Usage

CPU usage percentage, available in 1-minute (default), 5-minute (suffix 5), and 15-minute (suffix 15) averaging windows. All variants report a Float value as a percentage.

Per-core variants accept a zero-based core index as argument (e.g., System.CPU.Usage(0)).

Data Type

Float

Platforms

Linux, Windows, macOS, FreeBSD, Solaris, AIX (per sub-type; not available on NetBSD and OpenBSD)

Table 7. Averaging Window Variants
Prefix Description

System.CPU.Usage

1-minute average

System.CPU.Usage5

5-minute average

System.CPU.Usage15

15-minute average

Table 8. Sub-Type Suffixes
Suffix Platforms Description

(none, overall)

Linux, Windows, macOS, FreeBSD, Solaris, AIX

Combined CPU utilization across all modes

.User

Linux, Windows, macOS, FreeBSD, Solaris, AIX

User mode time

.System

Linux, Windows, macOS, FreeBSD, Solaris, AIX

Kernel mode time

.Idle

Linux, Windows, macOS, FreeBSD, Solaris, AIX

Idle time

.IoWait

Linux, Solaris, AIX

I/O wait time

.Irq

Linux, Windows

Hardware interrupt time

.SoftIrq

Linux

Software interrupt time

.Steal

Linux

Hypervisor steal time

.Guest

Linux

Guest VM time

.Nice

Linux, macOS, FreeBSD

Nice process time

Each combination of averaging window and sub-type is a valid parameter. For example: System.CPU.Usage.User, System.CPU.Usage5.IoWait, System.CPU.Usage15.Steal.

All sub-types also have per-core variants by appending (core_index). For example: System.CPU.Usage.User(3), System.CPU.Usage5(0).

System.CPU.CurrentUsage

Instantaneous CPU usage (Windows only). Unlike the averaged variants, these report real-time CPU utilization.

Data Type

Float

Platforms

Windows

Table 9. Sub-Type Suffixes
Suffix Description

(none, overall)

Current CPU utilization

.Idle

Current idle time

.Irq

Current hardware interrupt time

.System

Current kernel mode time

.User

Current user mode time

All sub-types have per-core variants by appending (core_index).

System.CPU.PhysicalAverage

Average physical CPU utilization (AIX only), available in 1-minute (default), 5-minute (suffix 5), and 15-minute (suffix 15) averaging windows. Sub-type suffixes .User, .System, .Idle, and .IoWait report the corresponding CPU time share.

Data Type

Float

Platforms

AIX

Each combination of averaging window and sub-type is a valid metric. For example: System.CPU.PhysicalAverage, System.CPU.PhysicalAverage5.User, System.CPU.PhysicalAverage15.IoWait.

CPU Usage Types

Each CPU usage parameter reports a specific type of CPU time:

Type Description

Usage (overall)

Combined CPU utilization across all modes

User

Time executing user-space processes

System

Time executing kernel-mode code

Idle

Time with no work to do

IoWait

Time waiting for I/O operations to complete (Linux, Solaris, AIX)

Irq

Time handling hardware interrupts (Linux, Windows)

SoftIrq

Time handling software interrupts (Linux only)

Steal

Time stolen by hypervisor for other virtual machines (Linux only)

Guest

Time running virtual CPUs for guest operating systems (Linux only)

Nice

Time running user-space processes with positive nice value (Linux, macOS, FreeBSD)

Per-CPU Argument

Per-core variants of CPU usage parameters accept a single argument: the zero-based CPU core index. Use System.CPU.Count to determine the number of available cores, or System.CPU.Instances list for instance discovery.

Example
System.CPU.Usage(0)
System.CPU.Usage.User(3)
On Windows, System.CPU.Usage* metrics are provided by the platform subagent (winnt.nsm). The winperf subagent provides System.CPU.LoadAvg* (processor queue length), PDH.*, and System.ThreadCount.