123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199 |
- .TH CPUPOWER\-MONITOR "1" "22/02/2011" "" "cpupower Manual"
- .SH NAME
- cpupower\-monitor \- Report processor frequency and idle statistics
- .SH SYNOPSIS
- .ft B
- .B cpupower monitor
- .RB "\-l"
- .B cpupower monitor
- .RB [ -c ] [ "\-m <mon1>," [ "<mon2>,..." ] ]
- .RB [ "\-i seconds" ]
- .br
- .B cpupower monitor
- .RB [ -c ][ "\-m <mon1>," [ "<mon2>,..." ] ]
- .RB command
- .br
- .SH DESCRIPTION
- \fBcpupower-monitor \fP reports processor topology, frequency and idle power
- state statistics. Either \fBcommand\fP is forked and
- statistics are printed upon its completion, or statistics are printed periodically.
- \fBcpupower-monitor \fP implements independent processor sleep state and
- frequency counters. Some are retrieved from kernel statistics, some are
- directly reading out hardware registers. Use \-l to get an overview which are
- supported on your system.
- .SH Options
- .PP
- \-l
- .RS 4
- List available monitors on your system. Additional details about each monitor
- are shown:
- .RS 2
- .IP \(bu
- The name in quotation marks which can be passed to the \-m parameter.
- .IP \(bu
- The number of different counters the monitor supports in brackets.
- .IP \(bu
- The amount of time in seconds the counters might overflow, due to
- implementation constraints.
- .IP \(bu
- The name and a description of each counter and its processor hierarchy level
- coverage in square brackets:
- .RS 4
- .IP \(bu
- [T] \-> Thread
- .IP \(bu
- [C] \-> Core
- .IP \(bu
- [P] \-> Processor Package (Socket)
- .IP \(bu
- [M] \-> Machine/Platform wide counter
- .RE
- .RE
- .RE
- .PP
- \-m <mon1>,<mon2>,...
- .RS 4
- Only display specific monitors. Use the monitor string(s) provided by \-l option.
- .RE
- .PP
- \-i seconds
- .RS 4
- Measure intervall.
- .RE
- .PP
- \-c
- .RS 4
- Schedule the process on every core before starting and ending measuring.
- This could be needed for the Idle_Stats monitor when no other MSR based
- monitor (has to be run on the core that is measured) is run in parallel.
- This is to wake up the processors from deeper sleep states and let the
- kernel re
- -account its cpuidle (C-state) information before reading the
- cpuidle timings from sysfs.
- .RE
- .PP
- command
- .RS 4
- Measure idle and frequency characteristics of an arbitrary command/workload.
- The executable \fBcommand\fP is forked and upon its exit, statistics gathered since it was
- forked are displayed.
- .RE
- .PP
- \-v
- .RS 4
- Increase verbosity if the binary was compiled with the DEBUG option set.
- .RE
- .SH MONITOR DESCRIPTIONS
- .SS "Idle_Stats"
- Shows statistics of the cpuidle kernel subsystem. Values are retrieved from
- /sys/devices/system/cpu/cpu*/cpuidle/state*/.
- The kernel updates these values every time an idle state is entered or
- left. Therefore there can be some inaccuracy when cores are in an idle
- state for some time when the measure starts or ends. In worst case it can happen
- that one core stayed in an idle state for the whole measure time and the idle
- state usage time as exported by the kernel did not get updated. In this case
- a state residency of 0 percent is shown while it was 100.
- .SS "Mperf"
- The name comes from the aperf/mperf (average and maximum) MSR registers used
- which are available on recent X86 processors. It shows the average frequency
- (including boost frequencies).
- The fact that on all recent hardware the mperf timer stops ticking in any idle
- state it is also used to show C0 (processor is active) and Cx (processor is in
- any sleep state) times. These counters do not have the inaccuracy restrictions
- the "Idle_Stats" counters may show.
- May work poorly on Linux-2.6.20 through 2.6.29, as the \fBacpi-cpufreq \fP
- kernel frequency driver periodically cleared aperf/mperf registers in those
- kernels.
- .SS "Nehalem" "SandyBridge" "HaswellExtended"
- Intel Core and Package sleep state counters.
- Threads (hyperthreaded cores) may not be able to enter deeper core states if
- its sibling is utilized.
- Deepest package sleep states may in reality show up as machine/platform wide
- sleep states and can only be entered if all cores are idle. Look up Intel
- manuals (some are provided in the References section) for further details.
- The monitors are named after the CPU family where the sleep state capabilities
- got introduced and may not match exactly the CPU name of the platform.
- For example an IvyBridge processor has sleep state capabilities which got
- introduced in Nehalem and SandyBridge processor families.
- Thus on an IvyBridge processor one will get Nehalem and SandyBridge sleep
- state monitors.
- HaswellExtended extra package sleep state capabilities are available only in a
- specific Haswell (family 0x45) and probably also other future processors.
- .SS "Fam_12h" "Fam_14h"
- AMD laptop and desktop processor (family 12h and 14h) sleep state counters.
- The registers are accessed via PCI and therefore can still be read out while
- cores have been offlined.
- There is one special counter: NBP1 (North Bridge P1).
- This one always returns 0 or 1, depending on whether the North Bridge P1
- power state got entered at least once during measure time.
- Being able to enter NBP1 state also depends on graphics power management.
- Therefore this counter can be used to verify whether the graphics' driver
- power management is working as expected.
- .SH EXAMPLES
- cpupower monitor -l" may show:
- .RS 4
- Monitor "Mperf" (3 states) \- Might overflow after 922000000 s
- ...
- Monitor "Idle_Stats" (3 states) \- Might overflow after 4294967295 s
- ...
- .RE
- cpupower monitor \-m "Idle_Stats,Mperf" scp /tmp/test /nfs/tmp
- Monitor the scp command, show both Mperf and Idle_Stats states counter
- statistics, but in exchanged order.
- .RE
- Be careful that the typical command to fully utilize one CPU by doing:
- cpupower monitor cat /dev/zero >/dev/null
- Does not work as expected, because the measured output is redirected to
- /dev/null. This could get workarounded by putting the line into an own, tiny
- shell script. Hit CTRL\-c to terminate the command and get the measure output
- displayed.
- .SH REFERENCES
- "BIOS and Kernel Developer’s Guide (BKDG) for AMD Family 14h Processors"
- http://support.amd.com/us/Processor_TechDocs/43170.pdf
- "Intel® Turbo Boost Technology
- in Intel® Core™ Microarchitecture (Nehalem) Based Processors"
- http://download.intel.com/design/processor/applnots/320354.pdf
- "Intel® 64 and IA-32 Architectures Software Developer's Manual
- Volume 3B: System Programming Guide"
- http://www.intel.com/products/processor/manuals
- .SH FILES
- .ta
- .nf
- /dev/cpu/*/msr
- /sys/devices/system/cpu/cpu*/cpuidle/state*/.
- .fi
- .SH "SEE ALSO"
- powertop(8), msr(4), vmstat(8)
- .PP
- .SH AUTHORS
- .nf
- Written by Thomas Renninger <trenn@suse.de>
- Nehalem, SandyBridge monitors and command passing
- based on turbostat.8 from Len Brown <len.brown@intel.com>
|