perf, tools, stat: Print warning when no metric with --metric-only
PATCH 1/1 perf, tools, stat: Print warning when no metric with --metric-only
From: Andi Kleen <[email protected]>
Print a warning when --metric-only is specified, but the events define no metric. Requested by Jiri.
% perf stat -e cycles --metric-only true
Performance counter stats for 'true':
No metrics defined by configured events
0.001612070 seconds time elapsed
--- tools/perf/builtin-stat.c | 4 ++++ 1 file changed, 4 insertions(+)
tools/perf/builtin-stat.c +4 -0
@@ -743,6 +743,7 @@ struct outstate {int nfields;int id, nr;struct perf_evsel *evsel; +int nheaders; };#define METRIC_LEN 35
@@ -919,6 +920,7 @@ static void print_metric_header(void *ctx, const char *color __maybe_unused,fprintf (os->fh,"%s%s" , unit, csv_sep); else fprintf(os->fh, "%-*s ", METRIC_ONLY_LEN, unit); + os->nheaders++; }static void nsec_printout (int id,int nr,struct perf_evsel *evsel,double avg)
@@ -1315,6 +1317,8 @@ static void print_metric_headers(char *prefix) &out); }fputc ('\n' , stat_config.output); +if (os.nheaders ==0 ) +pr_warning ("No metrics defined by configured events\n" ); }static void print_interval (char *prefix,struct timespec *ts)
Signature · 1 line
2.5.0
Quoted 5 lines · Andi Kleen
From: Andi Kleen <[email protected]>
Print a warning when --metric-only is specified, but the events define no metric. Requested by Jiri.
Quoted 8 lines
% perf stat -e cycles --metric-only true
Performance counter stats for 'true':
No metrics defined by configured events
0.001612070 seconds time elapsed
how about printing the 'time' column and keeping the warning on the header line?
[jolsa@krava perf]$ sudo ./perf stat -a -I 1000 --metric-only
time insn per cycle branch-misses of all branches
1.000370422 0.30 6.77%
2.000749536 0.40 5.75%
3.001007542 0.28 5.38%
4.001324779 0.57 5.83% ^C 4.011558899 0.01 0.12%
[jolsa@krava perf]$ sudo ./perf stat -a -I 1000 --metric-only -e cycles
time No metrics defined by configured events
1.000211156
2.000432519 thanks,
jirka
---
tools/perf/builtin-stat.c +3 -3
@@ -1302,7 +1302,7 @@ static void print_metric_headers(char *prefix) };if (prefix) -fprintf (stat_config.output,"%s" , prefix); +fprintf (stat_config.output,"%16s " ,"time" );if (!csv_output) fprintf(stat_config.output, "%*s",
@@ -1319,9 +1319,9 @@ static void print_metric_headers(char *prefix)0 , &out); } -fputc ('\n' , stat_config.output);if (os.nheaders ==0 ) -pr_warning ("No metrics defined by configured events\n" ); +pr_warning ("No metrics defined by configured events" ); +fputc ('\n' , stat_config.output); }static void print_interval (char *prefix,struct timespec *ts)
Quoted 6 lines
[jolsa@krava perf]$ sudo ./perf stat -a -I 1000 --metric-only
time insn per cycle branch-misses of all branches 1.000370422 0.30 6.77% 2.000749536 0.40 5.75% 3.001007542 0.28 5.38% 4.001324779 0.57 5.83%
Quoted 6 lines
^C 4.011558899 0.01 0.12%
[jolsa@krava perf]$ sudo ./perf stat -a -I 1000 --metric-only -e cycles
time No metrics defined by configured events 1.000211156 2.000432519
Looks good to me. Please submit it.
-Andi