Re: [PATCH] perf, tools, stat: Print warning when no metric with --metric-only

From: Jiri Olsa
Date: Fri Mar 11 2016 - 03:06:47 EST


On Thu, Mar 10, 2016 at 06:27:17AM -0800, Andi Kleen wrote:
> From: Andi Kleen <ak@xxxxxxxxxxxxxxx>
>
> 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
>

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


---
diff --git a/tools/perf/builtin-stat.c b/tools/perf/builtin-stat.c
index 91188047be6a..9ce4138a8065 100644
--- a/tools/perf/builtin-stat.c
+++ b/tools/perf/builtin-stat.c
@@ -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)