| .TH TURBOSTAT 8 |
| .SH NAME |
| turbostat \- Report processor frequency and idle statistics |
| .SH SYNOPSIS |
| .ft B |
| .B turbostat |
| .RB [ "\-v" ] |
| .RB [ "\-M MSR#" ] |
| .RB command |
| .br |
| .B turbostat |
| .RB [ "\-v" ] |
| .RB [ "\-M MSR#" ] |
| .RB [ "\-i interval_sec" ] |
| .SH DESCRIPTION |
| \fBturbostat \fP reports processor topology, frequency |
| and idle power state statistics on modern X86 processors. |
| Either \fBcommand\fP is forked and statistics are printed |
| upon its completion, or statistics are printed periodically. |
| |
| \fBturbostat \fP |
| requires that the processor |
| supports an "invariant" TSC, plus the APERF and MPERF MSRs. |
| \fBturbostat \fP will report idle cpu power state residency |
| on processors that additionally support C-state residency counters. |
| |
| .SS Options |
| The \fB-v\fP option increases verbosity. |
| .PP |
| The \fB-M MSR#\fP option dumps the specified MSR, |
| in addition to the usual frequency and idle statistics. |
| .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 |
| \fBpkg\fP processor package number. |
| \fBcore\fP processor core number. |
| \fBCPU\fP Linux CPU (logical processor) number. |
| \fB%c0\fP percent of the interval that the CPU retired instructions. |
| \fBGHz\fP average clock rate while the CPU was in c0 state. |
| \fBTSC\fP average GHz that the TSC ran during the entire interval. |
| \fB%c1, %c3, %c6\fP show the percentage residency in hardware core idle states. |
| \fB%pc3, %pc6\fP percentage residency in hardware package idle states. |
| .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 reflect the average for the entire system. |
| Subsequent rows show per-CPU statistics. |
| |
| .nf |
| [root@x980]# ./turbostat |
| core CPU %c0 GHz TSC %c1 %c3 %c6 %pc3 %pc6 |
| 0.04 1.62 3.38 0.11 0.00 99.85 0.00 95.07 |
| 0 0 0.04 1.62 3.38 0.06 0.00 99.90 0.00 95.07 |
| 0 6 0.02 1.62 3.38 0.08 0.00 99.90 0.00 95.07 |
| 1 2 0.10 1.62 3.38 0.29 0.00 99.61 0.00 95.07 |
| 1 8 0.11 1.62 3.38 0.28 0.00 99.61 0.00 95.07 |
| 2 4 0.01 1.62 3.38 0.01 0.00 99.98 0.00 95.07 |
| 2 10 0.01 1.61 3.38 0.02 0.00 99.98 0.00 95.07 |
| 8 1 0.07 1.62 3.38 0.15 0.00 99.78 0.00 95.07 |
| 8 7 0.03 1.62 3.38 0.19 0.00 99.78 0.00 95.07 |
| 9 3 0.01 1.62 3.38 0.02 0.00 99.98 0.00 95.07 |
| 9 9 0.01 1.62 3.38 0.02 0.00 99.98 0.00 95.07 |
| 10 5 0.01 1.62 3.38 0.13 0.00 99.86 0.00 95.07 |
| 10 11 0.08 1.62 3.38 0.05 0.00 99.86 0.00 95.07 |
| .fi |
| .SH VERBOSE EXAMPLE |
| The "-v" option adds verbosity to the output: |
| |
| .nf |
| GenuineIntel 11 CPUID levels; family:model:stepping 0x6:2c:2 (6:44:2) |
| 12 * 133 = 1600 MHz max efficiency |
| 25 * 133 = 3333 MHz TSC frequency |
| 26 * 133 = 3467 MHz max turbo 4 active cores |
| 26 * 133 = 3467 MHz max turbo 3 active cores |
| 27 * 133 = 3600 MHz max turbo 2 active cores |
| 27 * 133 = 3600 MHz max turbo 1 active cores |
| |
| .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@x980 lenb]# ./turbostat cat /dev/zero > /dev/null |
| |
| ^Ccore CPU %c0 GHz TSC %c1 %c3 %c6 %pc3 %pc6 |
| 8.49 3.63 3.38 16.23 0.66 74.63 0.00 0.00 |
| 0 0 1.22 3.62 3.38 32.18 0.00 66.60 0.00 0.00 |
| 0 6 0.40 3.61 3.38 33.00 0.00 66.60 0.00 0.00 |
| 1 2 0.11 3.14 3.38 0.19 3.95 95.75 0.00 0.00 |
| 1 8 0.05 2.88 3.38 0.25 3.95 95.75 0.00 0.00 |
| 2 4 0.00 3.13 3.38 0.02 0.00 99.98 0.00 0.00 |
| 2 10 0.00 3.09 3.38 0.02 0.00 99.98 0.00 0.00 |
| 8 1 0.04 3.50 3.38 14.43 0.00 85.54 0.00 0.00 |
| 8 7 0.03 2.98 3.38 14.43 0.00 85.54 0.00 0.00 |
| 9 3 0.00 3.16 3.38 100.00 0.00 0.00 0.00 0.00 |
| 9 9 99.93 3.63 3.38 0.06 0.00 0.00 0.00 0.00 |
| 10 5 0.01 2.82 3.38 0.08 0.00 99.91 0.00 0.00 |
| 10 11 0.02 3.36 3.38 0.06 0.00 99.91 0.00 0.00 |
| 6.950866 sec |
| |
| .fi |
| Above the cycle soaker drives cpu9 up 3.6 Ghz turbo limit |
| while the other processors are generally in various states of idle. |
| |
| Note that cpu3 is an HT sibling sharing core9 |
| with cpu9, and thus it is unable to get to an idle state |
| deeper than c1 while cpu9 is busy. |
| |
| Note that turbostat reports average GHz of 3.61, while |
| the arithmetic average of the GHz column above is 3.24. |
| This is a weighted average, where the weight is %c0. ie. it is the total number of |
| un-halted cycles elapsed per time divided by the number of CPUs. |
| .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. |
| |
| 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 AUTHORS |
| .nf |
| Written by Len Brown <len.brown@intel.com> |