123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221 |
- .TH TURBOSTAT 8
- .SH NAME
- turbostat \- Report processor frequency and idle statistics
- .SH SYNOPSIS
- .ft B
- .B turbostat
- .RB [ Options ]
- .RB command
- .br
- .B turbostat
- .RB [ Options ]
- .RB [ "\-i interval_sec" ]
- .SH DESCRIPTION
- \fBturbostat \fP reports processor topology, frequency,
- idle power-state statistics, temperature and power on modern X86 processors.
- Either \fBcommand\fP is forked and statistics are printed
- upon its completion, or statistics are printed periodically.
- \fBturbostat \fP
- must be run on root, and
- minimally requires that the processor
- supports an "invariant" TSC, plus the APERF and MPERF MSRs.
- Additional information is reported depending on hardware counter support.
- .SS Options
- The \fB-p\fP option limits output to the 1st thread in 1st core of each package.
- .PP
- The \fB-P\fP option limits output to the 1st thread in each Package.
- .PP
- The \fB-S\fP option limits output to a 1-line System Summary for each interval.
- .PP
- The \fB-v\fP option increases verbosity.
- .PP
- The \fB-c MSR#\fP option includes the delta of the specified 32-bit MSR counter.
- .PP
- The \fB-C MSR#\fP option includes the delta of the specified 64-bit MSR counter.
- .PP
- The \fB-m MSR#\fP option includes the the specified 32-bit MSR value.
- .PP
- The \fB-M MSR#\fP option includes the the specified 64-bit MSR value.
- .PP
- The \fB-i interval_sec\fP option prints statistics every \fiinterval_sec\fP seconds.
- The default is 5 seconds.
- .PP
- The \fBcommand\fP parameter forks \fBcommand\fP and upon its exit,
- displays the statistics gathered since it was forked.
- .PP
- .SH FIELD DESCRIPTIONS
- .nf
- \fBPackage\fP processor package number.
- \fBCore\fP processor core number.
- \fBCPU\fP Linux CPU (logical processor) number.
- Note that multiple CPUs per core indicate support for Intel(R) Hyper-Threading Technology.
- \fBAVG_MHz\fP number of cycles executed divided by time elapsed.
- \fB%Buzy\fP percent of the interval that the CPU retired instructions, aka. % of time in "C0" state.
- \fBBzy_MHz\fP average clock rate while the CPU was busy (in "c0" state).
- \fBTSC_MHz\fP average MHz that the TSC ran during the entire interval.
- \fBCPU%c1, CPU%c3, CPU%c6, CPU%c7\fP show the percentage residency in hardware core idle states.
- \fBCoreTmp\fP Degrees Celsius reported by the per-core Digital Thermal Sensor.
- \fBPkgTtmp\fP Degrees Celsius reported by the per-package Package Thermal Monitor.
- \fBPkg%pc2, Pkg%pc3, Pkg%pc6, Pkg%pc7\fP percentage residency in hardware package idle states.
- \fBPkgWatt\fP Watts consumed by the whole package.
- \fBCorWatt\fP Watts consumed by the core part of the package.
- \fBGFXWatt\fP Watts consumed by the Graphics part of the package -- available only on client processors.
- \fBRAMWatt\fP Watts consumed by the DRAM DIMMS -- available only on server processors.
- \fBPKG_%\fP percent of the interval that RAPL throttling was active on the Package.
- \fBRAM_%\fP percent of the interval that RAPL throttling was active on DRAM.
- .fi
- .PP
- .SH EXAMPLE
- Without any parameters, turbostat prints out counters ever 5 seconds.
- (override interval with "-i sec" option, or specify a command
- for turbostat to fork).
- The first row of statistics is a summary for the entire system.
- For residency % columns, the summary is a weighted average.
- For Temperature columns, the summary is the column maximum.
- For Watts columns, the summary is a system total.
- Subsequent rows show per-CPU statistics.
- .nf
- [root@ivy]# ./turbostat
- Core CPU Avg_MHz %Busy Bzy_MHz TSC_MHz SMI CPU%c1 CPU%c3 CPU%c6 CPU%c7 CoreTmp PkgTmp Pkg%pc2 Pkg%pc3 Pkg%pc6 Pkg%pc7 PkgWatt CorWatt GFXWatt
- - - 6 0.36 1596 3492 0 0.59 0.01 99.04 0.00 23 24 23.82 0.01 72.47 0.00 6.40 1.01 0.00
- 0 0 9 0.58 1596 3492 0 0.28 0.01 99.13 0.00 23 24 23.82 0.01 72.47 0.00 6.40 1.01 0.00
- 0 4 1 0.07 1596 3492 0 0.79
- 1 1 10 0.65 1596 3492 0 0.59 0.00 98.76 0.00 23
- 1 5 5 0.28 1596 3492 0 0.95
- 2 2 10 0.66 1596 3492 0 0.41 0.01 98.92 0.00 23
- 2 6 2 0.10 1597 3492 0 0.97
- 3 3 3 0.20 1596 3492 0 0.44 0.00 99.37 0.00 23
- 3 7 5 0.31 1596 3492 0 0.33
- .fi
- .SH VERBOSE EXAMPLE
- The "-v" option adds verbosity to the output:
- .nf
- [root@ivy]# turbostat -v
- turbostat v3.0 November 23, 2012 - Len Brown <lenb@kernel.org>
- CPUID(0): GenuineIntel 13 CPUID levels; family:model:stepping 0x6:3a:9 (6:58:9)
- CPUID(6): APERF, DTS, PTM, EPB
- RAPL: 851 sec. Joule Counter Range
- cpu0: MSR_NHM_PLATFORM_INFO: 0x81010f0012300
- 16 * 100 = 1600 MHz max efficiency
- 35 * 100 = 3500 MHz TSC frequency
- cpu0: MSR_NHM_SNB_PKG_CST_CFG_CTL: 0x1e008402 (UNdemote-C3, UNdemote-C1, demote-C3, demote-C1, locked: pkg-cstate-limit=2: pc6-noret)
- cpu0: MSR_NHM_TURBO_RATIO_LIMIT: 0x25262727
- 37 * 100 = 3700 MHz max turbo 4 active cores
- 38 * 100 = 3800 MHz max turbo 3 active cores
- 39 * 100 = 3900 MHz max turbo 2 active cores
- 39 * 100 = 3900 MHz max turbo 1 active cores
- cpu0: MSR_IA32_ENERGY_PERF_BIAS: 0x00000006 (balanced)
- cpu0: MSR_RAPL_POWER_UNIT: 0x000a1003 (0.125000 Watts, 0.000015 Joules, 0.000977 sec.)
- cpu0: MSR_PKG_POWER_INFO: 0x01e00268 (77 W TDP, RAPL 60 - 0 W, 0.000000 sec.)
- cpu0: MSR_PKG_POWER_LIMIT: 0x830000148268 (UNlocked)
- cpu0: PKG Limit #1: ENabled (77.000000 Watts, 1.000000 sec, clamp DISabled)
- cpu0: PKG Limit #2: ENabled (96.000000 Watts, 0.000977* sec, clamp DISabled)
- cpu0: MSR_PP0_POLICY: 0
- cpu0: MSR_PP0_POWER_LIMIT: 0x00000000 (UNlocked)
- cpu0: Cores Limit: DISabled (0.000000 Watts, 0.000977 sec, clamp DISabled)
- cpu0: MSR_PP1_POLICY: 0
- cpu0: MSR_PP1_POWER_LIMIT: 0x00000000 (UNlocked)
- cpu0: GFX Limit: DISabled (0.000000 Watts, 0.000977 sec, clamp DISabled)
- cpu0: MSR_IA32_TEMPERATURE_TARGET: 0x00691400 (105 C)
- cpu0: MSR_IA32_PACKAGE_THERM_STATUS: 0x884e0000 (27 C)
- cpu0: MSR_IA32_THERM_STATUS: 0x88560000 (19 C +/- 1)
- cpu1: MSR_IA32_THERM_STATUS: 0x88560000 (19 C +/- 1)
- cpu2: MSR_IA32_THERM_STATUS: 0x88540000 (21 C +/- 1)
- cpu3: MSR_IA32_THERM_STATUS: 0x884e0000 (27 C +/- 1)
- ...
- .fi
- The \fBmax efficiency\fP frequency, a.k.a. Low Frequency Mode, is the frequency
- available at the minimum package voltage. The \fBTSC frequency\fP is the nominal
- maximum frequency of the processor if turbo-mode were not available. This frequency
- should be sustainable on all CPUs indefinitely, given nominal power and cooling.
- The remaining rows show what maximum turbo frequency is possible
- depending on the number of idle cores. Note that this information is
- not available on all processors.
- .SH FORK EXAMPLE
- If turbostat is invoked with a command, it will fork that command
- and output the statistics gathered when the command exits.
- eg. Here a cycle soaker is run on 1 CPU (see %c0) for a few seconds
- until ^C while the other CPUs are mostly idle:
- .nf
- root@ivy: turbostat cat /dev/zero > /dev/null
- ^C
- Core CPU Avg_MHz %Busy Bzy_MHz TSC_MHz SMI CPU%c1 CPU%c3 CPU%c6 CPU%c7 CoreTmp PkgTmp Pkg%pc2 Pkg%pc3 Pkg%pc6 Pkg%pc7 PkgWatt CorWatt GFXWatt
- - - 496 12.75 3886 3492 0 13.16 0.04 74.04 0.00 36 36 0.00 0.00 0.00 0.00 23.15 17.65 0.00
- 0 0 22 0.57 3830 3492 0 0.83 0.02 98.59 0.00 27 36 0.00 0.00 0.00 0.00 23.15 17.65 0.00
- 0 4 9 0.24 3829 3492 0 1.15
- 1 1 4 0.09 3783 3492 0 99.91 0.00 0.00 0.00 36
- 1 5 3880 99.82 3888 3492 0 0.18
- 2 2 17 0.44 3813 3492 0 0.77 0.04 98.75 0.00 28
- 2 6 12 0.32 3823 3492 0 0.89
- 3 3 16 0.43 3844 3492 0 0.63 0.11 98.84 0.00 30
- 3 7 4 0.11 3827 3492 0 0.94
- 30.372243 sec
- .fi
- Above the cycle soaker drives cpu5 up its 3.8 GHz turbo limit
- while the other processors are generally in various states of idle.
- Note that cpu1 and cpu5 are HT siblings within core1.
- As cpu5 is very busy, it prevents its sibling, cpu1,
- from entering a c-state deeper than c1.
- Note that the Avg_MHz column reflects the total number of cycles executed
- divided by the measurement interval. If the %Busy column is 100%,
- then the processor was running at that speed the entire interval.
- The Avg_MHz multiplied by the %Busy results in the Bzy_MHz --
- which is the average frequency while the processor was executing --
- not including any non-busy idle time.
- .SH NOTES
- .B "turbostat "
- must be run as root.
- .B "turbostat "
- reads hardware counters, but doesn't write them.
- So it will not interfere with the OS or other programs, including
- multiple invocations of itself.
- \fBturbostat \fP
- may work poorly on Linux-2.6.20 through 2.6.29,
- as \fBacpi-cpufreq \fPperiodically cleared the APERF and MPERF
- in those kernels.
- If the TSC column does not make sense, then
- the other numbers will also make no sense.
- Turbostat is lightweight, and its data collection is not atomic.
- These issues are usually caused by an extremely short measurement
- interval (much less than 1 second), or system activity that prevents
- turbostat from being able to run on all CPUS to quickly collect data.
- The APERF, MPERF MSRs are defined to count non-halted cycles.
- Although it is not guaranteed by the architecture, turbostat assumes
- that they count at TSC rate, which is true on all processors tested to date.
- .SH REFERENCES
- "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
- .fi
- .SH "SEE ALSO"
- msr(4), vmstat(8)
- .PP
- .SH AUTHOR
- .nf
- Written by Len Brown <len.brown@intel.com>
|