summaryrefslogtreecommitdiff
path: root/usr/src/man/man8/cpustat.8
diff options
context:
space:
mode:
Diffstat (limited to 'usr/src/man/man8/cpustat.8')
-rw-r--r--usr/src/man/man8/cpustat.8356
1 files changed, 356 insertions, 0 deletions
diff --git a/usr/src/man/man8/cpustat.8 b/usr/src/man/man8/cpustat.8
new file mode 100644
index 0000000000..0cf367ae1a
--- /dev/null
+++ b/usr/src/man/man8/cpustat.8
@@ -0,0 +1,356 @@
+'\" te
+.\" Copyright (c) 2005, Sun Microsystems, Inc.
+.TH CPUSTAT 8 "April 9, 2016"
+.SH NAME
+cpustat \- monitor system behavior using CPU performance counters
+.SH SYNOPSIS
+.LP
+.nf
+\fBcpustat\fR \fB-c\fR \fIeventspec\fR [\fB-c\fR \fIeventspec\fR]... [\fB-p\fR \fIperiod\fR] [\fB-T\fR u | d ]
+ [\fB-sntD\fR] [\fIinterval\fR [\fIcount\fR]]
+.fi
+
+.LP
+.nf
+\fBcpustat\fR \fB-h\fR
+.fi
+
+.SH DESCRIPTION
+.LP
+The \fBcpustat\fR utility allows \fBCPU\fR performance counters to be used to
+monitor the overall behavior of the \fBCPU\fRs in the system.
+.sp
+.LP
+If \fIinterval\fR is specified, \fBcpustat\fR samples activity every
+\fIinterval\fR seconds, repeating forever. If a \fIcount\fR is specified, the
+statistics are repeated \fIcount\fR times. If neither are specified, an
+interval of five seconds is used, and there is no limit to the number of
+samples that are taken.
+.SH OPTIONS
+.LP
+The following options are supported:
+.sp
+.ne 2
+.na
+\fB\fB-c\fR \fIeventspec\fR\fR
+.ad
+.sp .6
+.RS 4n
+Specifies a set of events for the \fBCPU\fR performance counters to monitor.
+The syntax of these event specifications is:
+.sp
+.in +2
+.nf
+[picn=]\fIeventn\fR[,attr[\fIn\fR][=\fIval\fR]][,[picn=]\fIeventn\fR
+ [,attr[n][=\fIval\fR]],...,]
+.fi
+.in -2
+.sp
+
+You can use the \fB-h\fR option to obtain a list of available events and
+attributes. This causes generation of the usage message. You can omit an
+explicit counter assignment, in which case \fBcpustat\fR attempts to choose a
+capable counter automatically.
+.sp
+Attribute values can be expressed in hexadecimal, octal, or decimal notation,
+in a format suitable for \fBstrtoll\fR(3C). An attribute present in the event
+specification without an explicit value receives a default value of \fB1\fR. An
+attribute without a corresponding counter number is applied to all counters in
+the specification.
+.sp
+The semantics of these event specifications can be determined by reading the
+\fBCPU\fR manufacturer's documentation for the events.
+.sp
+Multiple \fB-c\fR options can be specified, in which case the command cycles
+between the different event settings on each sample.
+.RE
+
+.sp
+.ne 2
+.na
+\fB\fB-D\fR\fR
+.ad
+.sp .6
+.RS 4n
+Enables debug mode.
+.RE
+
+.sp
+.ne 2
+.na
+\fB\fB-h\fR\fR
+.ad
+.sp .6
+.RS 4n
+Prints an extensive help message on how to use the utility and how to program
+the processor-dependent counters.
+.RE
+
+.sp
+.ne 2
+.na
+\fB\fB-n\fR\fR
+.ad
+.sp .6
+.RS 4n
+Omits all header output (useful if \fBcpustat\fR is the beginning of a
+pipeline).
+.RE
+
+.sp
+.ne 2
+.na
+\fB\fB-p\fR \fIperiod\fR\fR
+.ad
+.sp .6
+.RS 4n
+Causes \fBcpustat\fR to cycle through the list of \fIeventspec\fRs every
+\fIperiod\fR seconds. The tool sleeps after each cycle until \fIperiod\fR
+seconds have elapsed since the first \fIeventspec\fR was measured.
+.sp
+When this option is present, the optional \fIcount\fR parameter specifies the
+number of total cycles to make (instead of the number of total samples to
+take). If \fIperiod\fR is less than the number of \fIeventspec\fRs times
+\fIinterval\fR, the tool acts as it period is \fB0\fR.
+.RE
+
+.sp
+.ne 2
+.na
+\fB\fB-s\fR\fR
+.ad
+.sp .6
+.RS 4n
+Creates an idle soaker thread to spin while system-only \fIeventspec\fRs are
+bound. One idle soaker thread is bound to each CPU in the current processor
+set. System-only \fIeventspec\fRs contain both the \fBnouser\fR and the
+\fBsys\fR tokens and measure events that occur while the CPU is operating in
+privileged mode. This option prevents the kernel's idle loop from running and
+triggering system-mode events.
+.RE
+
+.sp
+.ne 2
+.na
+\fB\fB-T\fR \fBu\fR | \fBd\fR\fR
+.ad
+.sp .6
+.RS 4n
+Display a time stamp.
+.sp
+Specify \fBu\fR for a printed representation of the internal representation of
+time. See \fBtime\fR(2). Specify \fBd\fR for standard date format. See
+\fBdate\fR(1).
+.RE
+
+.sp
+.ne 2
+.na
+\fB\fB-t\fR\fR
+.ad
+.sp .6
+.RS 4n
+Prints an additional column of processor cycle counts, if available on the
+current architecture.
+.RE
+
+.SH USAGE
+.LP
+A closely related utility, \fBcputrack\fR(1), can be used to monitor the
+behavior of individual applications with little or no interference from other
+activities on the system.
+.sp
+.LP
+The \fBcpustat\fR utility must be run by the super-user, as there is an
+intrinsic conflict between the use of the \fBCPU\fR performance counters
+system-wide by \fBcpustat\fR and the use of the \fBCPU\fR performance counters
+to monitor an individual process (for example, by \fBcputrack\fR.)
+.sp
+.LP
+Once any instance of this utility has started, no further per-process or
+per-\fBLWP\fR use of the counters is allowed until the last instance of the
+utility terminates.
+.sp
+.LP
+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
+\fBgethrtime\fR(3C).
+.sp
+.LP
+The processor cycle counts enabled by the \fB-t\fR option always apply to both
+user and system modes, regardless of the settings applied to the performance
+counter registers.
+.sp
+.LP
+On some hardware platforms running in system mode using the "sys" token, 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.
+.sp
+.LP
+The output of cpustat is designed to be readily parsable by \fBnawk\fR(1) and
+\fBperl\fR(1), thereby allowing performance tools to be composed by embedding
+\fBcpustat\fR in scripts. Alternatively, tools can be constructed directly
+using the same \fBAPI\fRs that \fBcpustat\fR is built upon using the facilities
+of \fBlibcpc\fR(3LIB). See \fBcpc\fR(3CPC).
+.sp
+.LP
+The \fBcpustat\fR utility only monitors the \fBCPU\fRs that are accessible to
+it in the current processor set. Thus, several instances of the utility can be
+running on the \fBCPU\fRs in different processor sets. See \fBpsrset\fR(8) for
+more information about processor sets.
+.sp
+.LP
+Because \fBcpustat\fR uses \fBLWP\fRs bound to \fBCPU\fRs, the utility might
+have to be terminated before the configuration of the relevant processor can be
+changed.
+.SH EXAMPLES
+.SS "SPARC"
+.LP
+\fBExample 1 \fRMeasuring External Cache References and Misses
+.sp
+.LP
+The following example measures misses and references in the external cache.
+These occur while the processor is operating in user mode on an UltraSPARC
+machine.
+
+.sp
+.in +2
+.nf
+example% cpustat -c EC_ref,EC_misses 1 3
+
+ time cpu event pic0 pic1
+ 1.008 0 tick 69284 1647
+ 1.008 1 tick 43284 1175
+ 2.008 0 tick 179576 1834
+ 2.008 1 tick 202022 12046
+ 3.008 0 tick 93262 384
+ 3.008 1 tick 63649 1118
+ 3.008 2 total 651077 18204
+.fi
+.in -2
+.sp
+
+.SS "x86"
+.LP
+\fBExample 2 \fRMeasuring Branch Prediction Success on Pentium 4
+.sp
+.LP
+The following example measures branch mispredictions and total branch
+instructions in user and system mode on a Pentium 4 machine.
+
+.sp
+.in +2
+.nf
+ example% cpustat -c \e
+ pic12=branch_retired,emask12=0x4,pic14=branch_retired,\e
+ emask14=0xf,sys 1 3
+
+ time cpu event pic12 pic14
+ 1.010 1 tick 458 684
+ 1.010 0 tick 305 511
+ 2.010 0 tick 181 269
+ 2.010 1 tick 469 684
+ 3.010 0 tick 182 269
+ 3.010 1 tick 468 684
+ 3.010 2 total 2063 3101
+.fi
+.in -2
+.sp
+
+.LP
+\fBExample 3 \fRCounting Memory Accesses on Opteron
+.sp
+.LP
+The following example determines the number of memory accesses made through
+each memory controller on an Opteron, broken down by internal memory latency:
+
+.sp
+.in +2
+.nf
+cpustat -c \e
+ pic0=NB_mem_ctrlr_page_access,umask0=0x01, \e
+ pic1=NB_mem_ctrlr_page_access,umask1=0x02, \e
+ pic2=NB_mem_ctrlr_page_access,umask2=0x04,sys \e
+ 1
+
+ time cpu event pic0 pic1 pic2
+ 1.003 0 tick 41976 53519 7720
+ 1.003 1 tick 5589 19402 731
+ 2.003 1 tick 6011 17005 658
+ 2.003 0 tick 43944 45473 7338
+ 3.003 1 tick 7105 20177 762
+ 3.003 0 tick 47045 48025 7119
+ 4.003 0 tick 43224 46296 6694
+ 4.003 1 tick 5366 19114 652
+.fi
+.in -2
+.sp
+
+.SH WARNINGS
+.LP
+By running the \fBcpustat\fR command, the super-user forcibly invalidates all
+existing performance counter context. This can in turn cause all invocations of
+the \fBcputrack\fR command, and other users of performance counter context, to
+exit prematurely with unspecified errors.
+.sp
+.LP
+If \fBcpustat\fR is invoked on a system that has \fBCPU\fR performance counters
+which are not supported by Solaris, the following message appears:
+.sp
+.in +2
+.nf
+cpustat: cannot access performance counters - Operation not applicable
+.fi
+.in -2
+.sp
+
+.sp
+.LP
+This error message implies that \fBcpc_open()\fR has failed and is documented
+in \fBcpc_open\fR(3CPC). Review this documentation for more information about
+the problem and possible solutions.
+.sp
+.LP
+If a short interval is requested, \fBcpustat\fR might not be able to keep up
+with the desired sample rate. In this case, some samples might be dropped.
+.SH ATTRIBUTES
+.LP
+See \fBattributes\fR(7) for descriptions of the following attributes:
+.sp
+
+.sp
+.TS
+box;
+c | c
+l | l .
+ATTRIBUTE TYPE ATTRIBUTE VALUE
+_
+Interface Stability Evolving
+.TE
+
+.SH SEE ALSO
+.LP
+.BR cputrack (1),
+.BR nawk (1),
+.BR perl (1),
+.BR gethrtime (3C),
+.BR strtoll (3C),
+.BR cpc (3CPC),
+.BR cpc_bind_cpu (3CPC),
+.BR cpc_open (3CPC),
+.BR libcpc (3LIB),
+.BR attributes (7),
+.BR iostat (8),
+.BR prstat (8),
+.BR psrset (8),
+.BR vmstat (8)
+.SH NOTES
+.LP
+When \fBcpustat\fR is run on a Pentium 4 with HyperThreading enabled, a CPC set
+is bound to only one logical CPU of each physical CPU. See
+\fBcpc_bind_cpu\fR(3CPC).