mirror of
https://github.com/AuxXxilium/linux_dsm_epyc7002.git
synced 2024-11-24 14:20:55 +07:00
perf util: Factor out sysctl__nmi_watchdog_enabled()
The NMI watchdog status is required for metric group constraint examination. Factor out sysctl__nmi_watchdog_enabled() to retrieve the NMI watchdog status. Users may count more than one metric group each time. If so, the NMI watchdog status may be retrieved several times. To reduce the overhead, cache the NMI watchdog status. Replace the NMI watchdog status checking in print_footer() by sysctl__nmi_watchdog_enabled(). Suggested-by: Andi Kleen <ak@linux.intel.com> Signed-off-by: Kan Liang <kan.liang@linux.intel.com> Acked-by: Jiri Olsa <jolsa@redhat.com> Cc: Andi Kleen <ak@linux.intel.com> Cc: Jin Yao <yao.jin@linux.intel.com> Cc: Mark Rutland <mark.rutland@arm.com> Cc: Namhyung Kim <namhyung@kernel.org> Cc: Peter Zijlstra <peterz@infradead.org> Cc: Ravi Bangoria <ravi.bangoria@linux.ibm.com> Link: http://lore.kernel.org/lkml/1582581564-184429-4-git-send-email-kan.liang@linux.intel.com Signed-off-by: Arnaldo Carvalho de Melo <acme@redhat.com>
This commit is contained in:
parent
f742634ab4
commit
2a14c1bf01
@ -16,6 +16,7 @@
|
||||
#include <linux/ctype.h>
|
||||
#include "cgroup.h"
|
||||
#include <api/fs/fs.h>
|
||||
#include "util.h"
|
||||
|
||||
#define CNTR_NOT_SUPPORTED "<not supported>"
|
||||
#define CNTR_NOT_COUNTED "<not counted>"
|
||||
@ -1097,7 +1098,6 @@ static void print_footer(struct perf_stat_config *config)
|
||||
{
|
||||
double avg = avg_stats(config->walltime_nsecs_stats) / NSEC_PER_SEC;
|
||||
FILE *output = config->output;
|
||||
int n;
|
||||
|
||||
if (!config->null_run)
|
||||
fprintf(output, "\n");
|
||||
@ -1131,9 +1131,7 @@ static void print_footer(struct perf_stat_config *config)
|
||||
}
|
||||
fprintf(output, "\n\n");
|
||||
|
||||
if (config->print_free_counters_hint &&
|
||||
sysctl__read_int("kernel/nmi_watchdog", &n) >= 0 &&
|
||||
n > 0)
|
||||
if (config->print_free_counters_hint && sysctl__nmi_watchdog_enabled())
|
||||
fprintf(output,
|
||||
"Some events weren't counted. Try disabling the NMI watchdog:\n"
|
||||
" echo 0 > /proc/sys/kernel/nmi_watchdog\n"
|
||||
|
@ -55,6 +55,24 @@ int sysctl__max_stack(void)
|
||||
return sysctl_perf_event_max_stack;
|
||||
}
|
||||
|
||||
bool sysctl__nmi_watchdog_enabled(void)
|
||||
{
|
||||
static bool cached;
|
||||
static bool nmi_watchdog;
|
||||
int value;
|
||||
|
||||
if (cached)
|
||||
return nmi_watchdog;
|
||||
|
||||
if (sysctl__read_int("kernel/nmi_watchdog", &value) < 0)
|
||||
return false;
|
||||
|
||||
nmi_watchdog = (value > 0) ? true : false;
|
||||
cached = true;
|
||||
|
||||
return nmi_watchdog;
|
||||
}
|
||||
|
||||
bool test_attr__enabled;
|
||||
|
||||
bool perf_host = true;
|
||||
|
@ -29,6 +29,8 @@ size_t hex_width(u64 v);
|
||||
|
||||
int sysctl__max_stack(void);
|
||||
|
||||
bool sysctl__nmi_watchdog_enabled(void);
|
||||
|
||||
int fetch_kernel_version(unsigned int *puint,
|
||||
char *str, size_t str_sz);
|
||||
#define KVER_VERSION(x) (((x) >> 16) & 0xff)
|
||||
|
Loading…
Reference in New Issue
Block a user