|
@@ -146,6 +146,7 @@ static aggr_get_id_t aggr_get_id;
|
|
|
static bool append_file;
|
|
|
static const char *output_name;
|
|
|
static int output_fd;
|
|
|
+static int print_free_counters_hint;
|
|
|
|
|
|
struct perf_stat {
|
|
|
bool record;
|
|
@@ -1109,6 +1110,9 @@ static void printout(int id, int nr, struct perf_evsel *counter, double uval,
|
|
|
counter->supported ? CNTR_NOT_COUNTED : CNTR_NOT_SUPPORTED,
|
|
|
csv_sep);
|
|
|
|
|
|
+ if (counter->supported)
|
|
|
+ print_free_counters_hint = 1;
|
|
|
+
|
|
|
fprintf(stat_config.output, "%-*s%s",
|
|
|
csv_output ? 0 : unit_width,
|
|
|
counter->unit, csv_sep);
|
|
@@ -1477,6 +1481,13 @@ static void print_footer(void)
|
|
|
avg_stats(&walltime_nsecs_stats));
|
|
|
}
|
|
|
fprintf(output, "\n\n");
|
|
|
+
|
|
|
+ if (print_free_counters_hint)
|
|
|
+ fprintf(output,
|
|
|
+"Some events weren't counted. Try disabling the NMI watchdog:\n"
|
|
|
+" echo 0 > /proc/sys/kernel/nmi_watchdog\n"
|
|
|
+" perf stat ...\n"
|
|
|
+" echo 1 > /proc/sys/kernel/nmi_watchdog\n");
|
|
|
}
|
|
|
|
|
|
static void print_counters(struct timespec *ts, int argc, const char **argv)
|