Skip to contentSkip to conversation

perf stat: Print topology/time headers with --metric-only

PATCH In review Andi Kleen 3 participants 5 messages May 20, 2016 perf events

lore
Share & tools
lore

Andi Kleen

author
#0 lore raw

PATCH 1/1 perf stat: Print topology/time headers with --metric-only

From: Andi Kleen <[email protected]>

When --metric-only is enabled there were no headers for the topology in interval mode. Fix this here.

Before

$ perf stat --metric-only -e cycles,instructions -a -I 1000
     1.000554967 insn per cycle       stalled cycles per insn
     1.000554967    0.27
     2.000862000    0.24
     3.001354948    0.25

After

$ perf stat --metric-only -e cycles,instructions -a -I 1000
     1.000554967 insn per cycle       stalled cycles per insn
     1.000554967    0.27
     2.000862000    0.24
     3.001354948    0.25
---
 tools/perf/builtin-stat.c | 27 +++++++++++++++++++++------
 1 file changed, 21 insertions(+), 6 deletions(-)
tools/perf/builtin-stat.c +21 -6
index 7c5c50b61b28..74d0849d728e 100644
@@ -1347,23 +1347,38 @@ static void print_interval(char *prefix, struct timespec *ts)
 
 	sprintf(prefix, "%6lu.%09lu%s", ts->tv_sec, ts->tv_nsec, csv_sep);
 
-	if (num_print_interval == 0 && !csv_output && !metric_only) {
+	if (num_print_interval == 0 && !csv_output) {
 		switch (stat_config.aggr_mode) {
 		case AGGR_SOCKET:
-			fprintf(output, "#           time socket cpus             counts %*s events\n", unit_width, "unit");
+			fprintf(output, "#           time socket cpus");
+			if (!metric_only)
+				fprintf(output, "             counts %*s events", unit_width, "unit");
+			fputc('\n', output);
 			break;
 		case AGGR_CORE:
-			fprintf(output, "#           time core         cpus             counts %*s events\n", unit_width, "unit");
+			fprintf(output, "#           time core         cpus");
+			if (!metric_only)
+				fprintf(output, "             counts %*s events", unit_width, "unit");
+			fputc('\n', output);
 			break;
 		case AGGR_NONE:
-			fprintf(output, "#           time CPU                counts %*s events\n", unit_width, "unit");
+			fprintf(output, "#           time CPU");
+			if (!metric_only)
+				fprintf(output, "                counts %*s events", unit_width, "unit");
+			fputc('\n', output);
 			break;
 		case AGGR_THREAD:
-			fprintf(output, "#           time             comm-pid                  counts %*s events\n", unit_width, "unit");
+			fprintf(output, "#           time             comm-pid");
+			if (!metric_only)
+				fprintf(output, "                  counts %*s events\n", unit_width, "unit");
+			fputc('\n', output);
 			break;
 		case AGGR_GLOBAL:
 		default:
-			fprintf(output, "#           time             counts %*s events\n", unit_width, "unit");
+			fprintf(output, "#           time");
+			if (!metric_only)
+				fprintf(output, "             counts %*s events\n", unit_width, "unit");
+			fputc('\n', output);
 		case AGGR_UNSET:
 			break;
 		}
Signature · 1 line
2.5.5
#1 lore raw
Quoted 13 lines · Andi Kleen

From: Andi Kleen <[email protected]>

When --metric-only is enabled there were no headers for the topology in interval mode. Fix this here.

Before

$ perf stat --metric-only -e cycles,instructions -a -I 1000
     1.000554967 insn per cycle       stalled cycles per insn
     1.000554967    0.27
     2.000862000    0.24
     3.001354948    0.25
Quoted 7 lines

After

$ perf stat --metric-only -e cycles,instructions -a -I 1000
     1.000554967 insn per cycle       stalled cycles per insn
     1.000554967    0.27
     2.000862000    0.24
     3.001354948    0.25

hum, I'm getting something else:

[jolsa@ibm-x3650m4-01 perf]$ sudo ./perf stat --topdown -I 1000 -a nmi_watchdog enabled with topdown. May give wrong results. Disable with echo 0 > /proc/sys/kernel/nmi_watchdog
# time core cpus

     1.001710838                   retiring             bad speculation      frontend bound       backend bound        
     1.001710838 S0-C0           2     38.1%               -0.0%               58.8%                3.1%           
     1.001710838 S0-C1           2     38.0%                0.0%               59.4%                2.5%           

[jolsa@ibm-x3650m4-01 perf]$ sudo ./perf stat --metric-only -e cycles,instructions -a -I 1000
# time

     1.000756338 insn per cycle       stalled cycles per insn 
     1.000756338    0.32                                      
     2.001155562    0.30                                      

jirka

#2 lore raw
Quoted 11 lines

hum, I'm getting something else:

[jolsa@ibm-x3650m4-01 perf]$ sudo ./perf stat --topdown -I 1000 -a nmi_watchdog enabled with topdown. May give wrong results. Disable with echo 0 > /proc/sys/kernel/nmi_watchdog
# time core cpus

     1.001710838                   retiring             bad speculation      frontend bound       backend bound        
     1.001710838 S0-C0           2     38.1%               -0.0%               58.8%                3.1%           
     1.001710838 S0-C1           2     38.0%                0.0%               59.4%                2.5%           
Quoted 5 lines

[jolsa@ibm-x3650m4-01 perf]$ sudo ./perf stat --metric-only -e cycles,instructions -a -I 1000
# time

     1.000756338 insn per cycle       stalled cycles per insn 
     1.000756338    0.32                                      
     2.001155562    0.30                                      

Right sorry, that was me not cutting and pasting correctly.

Your output is correct and intended.

-Andi

Signature · 1 line
[email protected] -- Speaking for myself only
#3 lore raw
Quoted 17 lines · Andi Kleen
Quoted 11 lines

hum, I'm getting something else:

[jolsa@ibm-x3650m4-01 perf]$ sudo ./perf stat --topdown -I 1000 -a nmi_watchdog enabled with topdown. May give wrong results. Disable with echo 0 > /proc/sys/kernel/nmi_watchdog
# time core cpus

     1.001710838                   retiring             bad speculation      frontend bound       backend bound        
     1.001710838 S0-C0           2     38.1%               -0.0%               58.8%                3.1%           
     1.001710838 S0-C1           2     38.0%                0.0%               59.4%                2.5%           
Quoted 5 lines

[jolsa@ibm-x3650m4-01 perf]$ sudo ./perf stat --metric-only -e cycles,instructions -a -I 1000
# time

     1.000756338 insn per cycle       stalled cycles per insn 
     1.000756338    0.32                                      
     2.001155562    0.30                                      
Quoted 3 lines

Right sorry, that was me not cutting and pasting correctly.

Your output is correct and intended.

hum, I dont think so.. headers should be on the same line, right?

jirka

#4 lore raw
Quoted 18 lines · Jiri Olsa
Quoted 17 lines · Andi Kleen
Quoted 16 lines

hum, I'm getting something else:

[jolsa@ibm-x3650m4-01 perf]$ sudo ./perf stat --topdown -I 1000 -a nmi_watchdog enabled with topdown. May give wrong results. Disable with echo 0 > /proc/sys/kernel/nmi_watchdog
# time core cpus

     1.001710838                   retiring             bad speculation      frontend bound       backend bound        
     1.001710838 S0-C0           2     38.1%               -0.0%               58.8%                3.1%           
     1.001710838 S0-C1           2     38.0%                0.0%               59.4%                2.5%           

[jolsa@ibm-x3650m4-01 perf]$ sudo ./perf stat --metric-only -e cycles,instructions -a -I 1000
# time

     1.000756338 insn per cycle       stalled cycles per insn 
     1.000756338    0.32                                      
     2.001155562    0.30                                      
Quoted 5 lines
Quoted 3 lines

Right sorry, that was me not cutting and pasting correctly.

Your output is correct and intended.

hum, I dont think so.. headers should be on the same line, right?

I posted new patches which move it to the same line, and also fix another bug I noticed.

-Andi

Signature · 1 line
[email protected] -- Speaking for myself only