Re: [RFC PATCH] perf/stat: Add --disable-hwdt

From: Ingo Molnar
Date: Sat Feb 11 2017 - 13:00:58 EST



* Borislav Petkov <bp@xxxxxxxxx> wrote:

> Ok,
>
> turns out perf-list(1) already talks about it in the "EVENT GROUPS"
> section. How about this then:
>
> ---
> diff --git a/tools/perf/builtin-stat.c b/tools/perf/builtin-stat.c
> index a02f2e965628..2d18283574db 100644
> --- a/tools/perf/builtin-stat.c
> +++ b/tools/perf/builtin-stat.c
> @@ -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);
> @@ -1476,7 +1480,13 @@ static void print_footer(void)
> print_noise_pct(stddev_stats(&walltime_nsecs_stats),
> avg_stats(&walltime_nsecs_stats));
> }
> +
> fprintf(output, "\n\n");
> +
> + if (print_free_counters_hint)
> + fprintf(output,
> +"Some events couldn't be scheduled. Consider freeing some counters by disabling the NMI watchdog temporarily, \n"
> +"for example. See perf-list(1) manpage.\n");

So I checked the perf-list manpage and it didn't tell me much about how to disable
the NMI watchdog.

How about a more proactive hint, something like:

To disable the NMI watchdog permanently, do:

sudo echo kernel.nmi_watchdog=0 >> /etc/sysctl.conf
sudo sysctl -p

? (untested!)

Thanks,

Ingo