Commit f9240813 authored by Len Brown's avatar Len Brown
Browse files

tools/power/turbostat: add option to count SMIs, re-name some options



Counting SMIs is popular, so add a dedicated "-s" option to do it,
and juggle some of the other option letters.

-S is now system summary (was -s)
-c is 32 bit counter (was -d)
-C is 64-bit counter (was -D)
-p is 1st thread in core (was -c)
-P is 1st thread in package (was -p)

bump the minor version number
Signed-off-by: default avatarLen Brown <len.brown@intel.com>
parent 8e180f3c
...@@ -23,17 +23,19 @@ supports an "invariant" TSC, plus the APERF and MPERF MSRs. ...@@ -23,17 +23,19 @@ supports an "invariant" TSC, plus the APERF and MPERF MSRs.
on processors that additionally support C-state residency counters. on processors that additionally support C-state residency counters.
.SS Options .SS Options
The \fB-s\fP option limits output to a 1-line system summary for each interval. The \fB-p\fP option limits output to the 1st thread in 1st core of each package.
.PP .PP
The \fB-c\fP option limits output to the 1st thread in each core. The \fB-P\fP option limits output to the 1st thread in each Package.
.PP .PP
The \fB-p\fP option limits output to the 1st thread in each package. The \fB-S\fP option limits output to a 1-line System Summary for each interval.
.PP .PP
The \fB-v\fP option increases verbosity. The \fB-v\fP option increases verbosity.
.PP .PP
The \fB-d MSR#\fP option includes the delta of the specified 32-bit MSR counter. The \fB-s\fP option prints the SMI counter, equivalent to "-c 0x34"
.PP .PP
The \fB-D MSR#\fP option includes the delta of the specified 64-bit MSR counter. 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 .PP
The \fB-m MSR#\fP option includes the the specified 32-bit MSR value. The \fB-m MSR#\fP option includes the the specified 32-bit MSR value.
.PP .PP
......
...@@ -230,9 +230,9 @@ void print_header(void) ...@@ -230,9 +230,9 @@ void print_header(void)
outp += sprintf(outp, " GHz"); outp += sprintf(outp, " GHz");
outp += sprintf(outp, " TSC"); outp += sprintf(outp, " TSC");
if (extra_delta_offset32) if (extra_delta_offset32)
outp += sprintf(outp, " delta 0x%03X", extra_delta_offset32); outp += sprintf(outp, " count 0x%03X", extra_delta_offset32);
if (extra_delta_offset64) if (extra_delta_offset64)
outp += sprintf(outp, " DELTA 0x%03X", extra_delta_offset64); outp += sprintf(outp, " COUNT 0x%03X", extra_delta_offset64);
if (extra_msr_offset32) if (extra_msr_offset32)
outp += sprintf(outp, " MSR 0x%03X", extra_msr_offset32); outp += sprintf(outp, " MSR 0x%03X", extra_msr_offset32);
if (extra_msr_offset64) if (extra_msr_offset64)
...@@ -1304,7 +1304,7 @@ void check_cpuid() ...@@ -1304,7 +1304,7 @@ void check_cpuid()
void usage() void usage()
{ {
fprintf(stderr, "%s: [-v][-d MSR#][-D MSR#][-m MSR#][-M MSR#][-i interval_sec | command ...]\n", fprintf(stderr, "%s: [-v][-p|-P|-S][-c MSR# | -s]][-C MSR#][-m MSR#][-M MSR#][-i interval_sec | command ...]\n",
progname); progname);
exit(1); exit(1);
} }
...@@ -1594,15 +1594,15 @@ void cmdline(int argc, char **argv) ...@@ -1594,15 +1594,15 @@ void cmdline(int argc, char **argv)
progname = argv[0]; progname = argv[0];
while ((opt = getopt(argc, argv, "+cpsvid:D:m:M:")) != -1) { while ((opt = getopt(argc, argv, "+pPSvisc:sC:m:M:")) != -1) {
switch (opt) { switch (opt) {
case 'c': case 'p':
show_core_only++; show_core_only++;
break; break;
case 'p': case 'P':
show_pkg_only++; show_pkg_only++;
break; break;
case 's': case 'S':
summary_only++; summary_only++;
break; break;
case 'v': case 'v':
...@@ -1611,10 +1611,13 @@ void cmdline(int argc, char **argv) ...@@ -1611,10 +1611,13 @@ void cmdline(int argc, char **argv)
case 'i': case 'i':
interval_sec = atoi(optarg); interval_sec = atoi(optarg);
break; break;
case 'd': case 'c':
sscanf(optarg, "%x", &extra_delta_offset32); sscanf(optarg, "%x", &extra_delta_offset32);
break; break;
case 'D': case 's':
extra_delta_offset32 = 0x34; /* SMI counter */
break;
case 'C':
sscanf(optarg, "%x", &extra_delta_offset64); sscanf(optarg, "%x", &extra_delta_offset64);
break; break;
case 'm': case 'm':
...@@ -1634,7 +1637,7 @@ int main(int argc, char **argv) ...@@ -1634,7 +1637,7 @@ int main(int argc, char **argv)
cmdline(argc, argv); cmdline(argc, argv);
if (verbose > 1) if (verbose > 1)
fprintf(stderr, "turbostat v2.0 May 16, 2012" fprintf(stderr, "turbostat v2.1 October 6, 2012"
" - Len Brown <lenb@kernel.org>\n"); " - Len Brown <lenb@kernel.org>\n");
turbostat_init(); turbostat_init();
......
Markdown is supported
0% or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment