Len Brown | 103a8fe | 2010-10-22 23:53:03 -0400 | [diff] [blame] | 1 | .TH TURBOSTAT 8 |
| 2 | .SH NAME |
| 3 | turbostat \- Report processor frequency and idle statistics |
| 4 | .SH SYNOPSIS |
| 5 | .ft B |
| 6 | .B turbostat |
| 7 | .RB [ "\-v" ] |
| 8 | .RB [ "\-M MSR#" ] |
| 9 | .RB command |
| 10 | .br |
| 11 | .B turbostat |
| 12 | .RB [ "\-v" ] |
| 13 | .RB [ "\-M MSR#" ] |
| 14 | .RB [ "\-i interval_sec" ] |
| 15 | .SH DESCRIPTION |
| 16 | \fBturbostat \fP reports processor topology, frequency |
| 17 | and idle power state statistics on modern X86 processors. |
| 18 | Either \fBcommand\fP is forked and statistics are printed |
| 19 | upon its completion, or statistics are printed periodically. |
| 20 | |
| 21 | \fBturbostat \fP |
| 22 | requires that the processor |
| 23 | supports an "invariant" TSC, plus the APERF and MPERF MSRs. |
| 24 | \fBturbostat \fP will report idle cpu power state residency |
| 25 | on processors that additionally support C-state residency counters. |
| 26 | |
| 27 | .SS Options |
| 28 | The \fB-v\fP option increases verbosity. |
| 29 | .PP |
| 30 | The \fB-M MSR#\fP option dumps the specified MSR, |
| 31 | in addition to the usual frequency and idle statistics. |
| 32 | .PP |
| 33 | The \fB-i interval_sec\fP option prints statistics every \fiinterval_sec\fP seconds. |
| 34 | The default is 5 seconds. |
| 35 | .PP |
| 36 | The \fBcommand\fP parameter forks \fBcommand\fP and upon its exit, |
| 37 | displays the statistics gathered since it was forked. |
| 38 | .PP |
| 39 | .SH FIELD DESCRIPTIONS |
| 40 | .nf |
Arun Thomas | 9b6cf1a | 2011-08-17 00:34:14 +0200 | [diff] [blame^] | 41 | \fBpk\fP processor package number. |
| 42 | \fBcr\fP processor core number. |
Len Brown | 103a8fe | 2010-10-22 23:53:03 -0400 | [diff] [blame] | 43 | \fBCPU\fP Linux CPU (logical processor) number. |
| 44 | \fB%c0\fP percent of the interval that the CPU retired instructions. |
| 45 | \fBGHz\fP average clock rate while the CPU was in c0 state. |
| 46 | \fBTSC\fP average GHz that the TSC ran during the entire interval. |
| 47 | \fB%c1, %c3, %c6\fP show the percentage residency in hardware core idle states. |
| 48 | \fB%pc3, %pc6\fP percentage residency in hardware package idle states. |
| 49 | .fi |
| 50 | .PP |
| 51 | .SH EXAMPLE |
| 52 | Without any parameters, turbostat prints out counters ever 5 seconds. |
| 53 | (override interval with "-i sec" option, or specify a command |
| 54 | for turbostat to fork). |
| 55 | |
| 56 | The first row of statistics reflect the average for the entire system. |
| 57 | Subsequent rows show per-CPU statistics. |
| 58 | |
| 59 | .nf |
| 60 | [root@x980]# ./turbostat |
Arun Thomas | 9b6cf1a | 2011-08-17 00:34:14 +0200 | [diff] [blame^] | 61 | cr CPU %c0 GHz TSC %c1 %c3 %c6 %pc3 %pc6 |
Len Brown | 103a8fe | 2010-10-22 23:53:03 -0400 | [diff] [blame] | 62 | 0.04 1.62 3.38 0.11 0.00 99.85 0.00 95.07 |
| 63 | 0 0 0.04 1.62 3.38 0.06 0.00 99.90 0.00 95.07 |
| 64 | 0 6 0.02 1.62 3.38 0.08 0.00 99.90 0.00 95.07 |
| 65 | 1 2 0.10 1.62 3.38 0.29 0.00 99.61 0.00 95.07 |
| 66 | 1 8 0.11 1.62 3.38 0.28 0.00 99.61 0.00 95.07 |
| 67 | 2 4 0.01 1.62 3.38 0.01 0.00 99.98 0.00 95.07 |
| 68 | 2 10 0.01 1.61 3.38 0.02 0.00 99.98 0.00 95.07 |
| 69 | 8 1 0.07 1.62 3.38 0.15 0.00 99.78 0.00 95.07 |
| 70 | 8 7 0.03 1.62 3.38 0.19 0.00 99.78 0.00 95.07 |
| 71 | 9 3 0.01 1.62 3.38 0.02 0.00 99.98 0.00 95.07 |
| 72 | 9 9 0.01 1.62 3.38 0.02 0.00 99.98 0.00 95.07 |
| 73 | 10 5 0.01 1.62 3.38 0.13 0.00 99.86 0.00 95.07 |
| 74 | 10 11 0.08 1.62 3.38 0.05 0.00 99.86 0.00 95.07 |
| 75 | .fi |
| 76 | .SH VERBOSE EXAMPLE |
| 77 | The "-v" option adds verbosity to the output: |
| 78 | |
| 79 | .nf |
| 80 | GenuineIntel 11 CPUID levels; family:model:stepping 0x6:2c:2 (6:44:2) |
| 81 | 12 * 133 = 1600 MHz max efficiency |
| 82 | 25 * 133 = 3333 MHz TSC frequency |
| 83 | 26 * 133 = 3467 MHz max turbo 4 active cores |
| 84 | 26 * 133 = 3467 MHz max turbo 3 active cores |
| 85 | 27 * 133 = 3600 MHz max turbo 2 active cores |
| 86 | 27 * 133 = 3600 MHz max turbo 1 active cores |
| 87 | |
| 88 | .fi |
| 89 | The \fBmax efficiency\fP frequency, a.k.a. Low Frequency Mode, is the frequency |
| 90 | available at the minimum package voltage. The \fBTSC frequency\fP is the nominal |
| 91 | maximum frequency of the processor if turbo-mode were not available. This frequency |
| 92 | should be sustainable on all CPUs indefinitely, given nominal power and cooling. |
| 93 | The remaining rows show what maximum turbo frequency is possible |
| 94 | depending on the number of idle cores. Note that this information is |
| 95 | not available on all processors. |
| 96 | .SH FORK EXAMPLE |
| 97 | If turbostat is invoked with a command, it will fork that command |
| 98 | and output the statistics gathered when the command exits. |
| 99 | eg. Here a cycle soaker is run on 1 CPU (see %c0) for a few seconds |
| 100 | until ^C while the other CPUs are mostly idle: |
| 101 | |
| 102 | .nf |
| 103 | [root@x980 lenb]# ./turbostat cat /dev/zero > /dev/null |
| 104 | |
Arun Thomas | 9b6cf1a | 2011-08-17 00:34:14 +0200 | [diff] [blame^] | 105 | ^Ccr CPU %c0 GHz TSC %c1 %c3 %c6 %pc3 %pc6 |
Len Brown | 103a8fe | 2010-10-22 23:53:03 -0400 | [diff] [blame] | 106 | 8.49 3.63 3.38 16.23 0.66 74.63 0.00 0.00 |
| 107 | 0 0 1.22 3.62 3.38 32.18 0.00 66.60 0.00 0.00 |
| 108 | 0 6 0.40 3.61 3.38 33.00 0.00 66.60 0.00 0.00 |
| 109 | 1 2 0.11 3.14 3.38 0.19 3.95 95.75 0.00 0.00 |
| 110 | 1 8 0.05 2.88 3.38 0.25 3.95 95.75 0.00 0.00 |
| 111 | 2 4 0.00 3.13 3.38 0.02 0.00 99.98 0.00 0.00 |
| 112 | 2 10 0.00 3.09 3.38 0.02 0.00 99.98 0.00 0.00 |
| 113 | 8 1 0.04 3.50 3.38 14.43 0.00 85.54 0.00 0.00 |
| 114 | 8 7 0.03 2.98 3.38 14.43 0.00 85.54 0.00 0.00 |
| 115 | 9 3 0.00 3.16 3.38 100.00 0.00 0.00 0.00 0.00 |
| 116 | 9 9 99.93 3.63 3.38 0.06 0.00 0.00 0.00 0.00 |
| 117 | 10 5 0.01 2.82 3.38 0.08 0.00 99.91 0.00 0.00 |
| 118 | 10 11 0.02 3.36 3.38 0.06 0.00 99.91 0.00 0.00 |
| 119 | 6.950866 sec |
| 120 | |
| 121 | .fi |
| 122 | Above the cycle soaker drives cpu9 up 3.6 Ghz turbo limit |
| 123 | while the other processors are generally in various states of idle. |
| 124 | |
| 125 | Note that cpu3 is an HT sibling sharing core9 |
| 126 | with cpu9, and thus it is unable to get to an idle state |
| 127 | deeper than c1 while cpu9 is busy. |
| 128 | |
| 129 | Note that turbostat reports average GHz of 3.61, while |
| 130 | the arithmetic average of the GHz column above is 3.24. |
| 131 | This is a weighted average, where the weight is %c0. ie. it is the total number of |
| 132 | un-halted cycles elapsed per time divided by the number of CPUs. |
| 133 | .SH NOTES |
| 134 | |
| 135 | .B "turbostat " |
| 136 | must be run as root. |
| 137 | |
| 138 | .B "turbostat " |
| 139 | reads hardware counters, but doesn't write them. |
| 140 | So it will not interfere with the OS or other programs, including |
| 141 | multiple invocations of itself. |
| 142 | |
| 143 | \fBturbostat \fP |
| 144 | may work poorly on Linux-2.6.20 through 2.6.29, |
| 145 | as \fBacpi-cpufreq \fPperiodically cleared the APERF and MPERF |
| 146 | in those kernels. |
| 147 | |
| 148 | The APERF, MPERF MSRs are defined to count non-halted cycles. |
| 149 | Although it is not guaranteed by the architecture, turbostat assumes |
| 150 | that they count at TSC rate, which is true on all processors tested to date. |
| 151 | |
| 152 | .SH REFERENCES |
| 153 | "Intel® Turbo Boost Technology |
| 154 | in Intel® Core™ Microarchitecture (Nehalem) Based Processors" |
| 155 | http://download.intel.com/design/processor/applnots/320354.pdf |
| 156 | |
| 157 | "Intel® 64 and IA-32 Architectures Software Developer's Manual |
| 158 | Volume 3B: System Programming Guide" |
| 159 | http://www.intel.com/products/processor/manuals/ |
| 160 | |
| 161 | .SH FILES |
| 162 | .ta |
| 163 | .nf |
| 164 | /dev/cpu/*/msr |
| 165 | .fi |
| 166 | |
| 167 | .SH "SEE ALSO" |
| 168 | msr(4), vmstat(8) |
| 169 | .PP |
| 170 | .SH AUTHORS |
| 171 | .nf |
| 172 | Written by Len Brown <len.brown@intel.com> |