cpustat(1M)
NAME
cpustat - monitor system behavior using CPU performance
counters
SYNOPSIS
cpustat -c eventspec [-c eventspec]... [-ntD] [ interval
[count]]
cpustat -h
DESCRIPTION
The cpustat utility allows CPU performance counters to be
used to monitor the overall behavior of the CPUs in the sys-
tem.
If interval is specified, cpustat samples activity every
interval seconds, repeating forever. If a count is speci-
fied, the statistics are repeated count times. If neither
are specified, an interval of five seconds is used, and
there is no limit to the number of samples that will be
taken.
OPTIONS
The following options are supported:
-c eventspec
Specifies a set of events for the CPU performance
counters to monitor. The syntax of these event specif-
ication can be determined using the -h option to cause
the usage message to be generated. The semantics of
these event specifications can be determined by read-
ing the CPU manufacturers documentation for the
events. See cpc_strtoevent(3CPC) for a description of
the syntax.
Multiple -c options can be specified, in which case
the command cycles between the different event set-
tings on each sample.
-D Enables debug mode.
-h Prints an extensive help message on how to use the
utility and how to program the processor-dependent
counters.
-n Omits all header output (useful if cpustat is the
beginning of a pipeline).
-t Prints an additional column of processor cycle counts,
if available on the current architecture.
USAGE
A closely related utility, cputrack(1), can be used to moni-
tor the behavior of individual applications with little or
no interference from other activities on the system.
The cpustat utility must be run by the super-user, as there
is an intrinsic conflict between the use of the CPU perfor-
mance counters system-wide by cpustat and the use of the CPU
performance counters to monitor an individual process (for
example, by cputrack.)
Once any instance of this utility has started, no further
per-process or per-LWP use of the counters is allowed until
the last instance of the utility terminates.
The times printed by the command correspond to the wallclock
time when the hardware counters were actually sampled,
instead of when the program told the kernel to sample them.
The time is derived from the same timebase as gethrtime(3C).
The processor cycle counts enabled by the -t option always
apply to both user and system modes, regardless of the set-
tings applied to the performance counter registers.
On some hardware platforms, the counters are implemented
using 32-bit registers. While the kernel attempts to catch
all overflows to synthesize 64-bit counters, because of
hardware implementation restrictions, overflows can be lost
unless the sampling interval is kept short enough. The
events most prone to wrap are those that count processor
clock cycles. If such an event is of interest, sampling
should occur frequently so that less than 4 billion clock
cycles can occur between samples.
The output of cpustat is designed to be readily parseable by
nawk(1) and perl(1), thereby allowing performance tools to
be composed by embedding cpustat in scripts. Alternatively,
tools can be constructed directly using the same APIs that
cpustat is built upon using the facilities of libcpc(3LIB).
See cpc(3CPC).
The cpustat utility only monitors the CPUs that are accessi-
ble to it in the current processor set. Thus, several
instances of the utility can be running on the CPUs in dif-
ferent processor sets. See psrset(1M) for more information
about processor sets.
Because cpustat uses LWPs bound to CPUs, the utility might
have to be terminated before the configuration of the
relevant processor can be changed.
WARNINGS
By running the cpustat command, the super-user will forcibly
invalidate all existing performance counter context. This
can in turn cause all invocations of the cputrack command,
and other users of performance counter context, to exit
prematurely with unspecified errors.
If cpustat is invoked on a system that has CPU performance
counters, but on which the packages containing the kernel
support for those counters is not installed, the following
message appears:
cpustat: CPU performance counters are inaccessible on this machine
This error message implies that cpc_access() has failed and
is documented in cpc_access(3CPC). Review this documentation
for more information about the problem and possible solu-
tions.
If a short interval is requested, cpustat might not be able
to keep up with the desired sample rate. In this case, some
samples might be dropped.
ATTRIBUTES
See attributes(5) for descriptions of the following attri-
butes:
____________________________________________________________
| ATTRIBUTE TYPE | ATTRIBUTE VALUE |
|_____________________________|_____________________________|
| Availability | SUNWcpcu |
|_____________________________|_____________________________|
| Interface Stability | Evolving |
|_____________________________|_____________________________|
SEE ALSO
cputrack(1), nawk(1), perl(1), iostat(1M), prstat(1M),
psrset(1M), vmstat(1M), cpc(3CPC), cpc_access(3CPC),
cpc_strtoevent(3CPC), gethrtime(3C), libcpc(3LIB), attri-
butes(5)
Sun Microelectronics UltraSPARC I&II User's Manual, January
1997, STP1031, http://www.sun.com/sparc
Intel Architecture Software Developer's Manual, Volume 3:
System Programmers Guide, 243192, http://developer.intel.com
Man(1) output converted with
man2html