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

From: Andi Kleen
Date: Thu Mar 10 2016 - 09:27:37 EST


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

Signed-off-by: Andi Kleen <ak@xxxxxxxxxxxxxxx>
---
tools/perf/builtin-stat.c | 4 ++++
1 file changed, 4 insertions(+)

diff --git a/tools/perf/builtin-stat.c b/tools/perf/builtin-stat.c
index 1f19f2f..70efb58 100644
--- a/tools/perf/builtin-stat.c
+++ b/tools/perf/builtin-stat.c
@@ -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)
--
2.5.0