Groups | Search | Server Info | Keyboard shortcuts | Login | Register [http] [https] [nntp] [nntps]
Groups > linux.kernel > #1593665
| From | Arnaldo Carvalho de Melo <acme@kernel.org> |
|---|---|
| Newsgroups | linux.kernel |
| Subject | [PATCH 02/35] perf stat: Issue a HW watchdog disable hint |
| Date | 2017-03-06 20:50 +0100 |
| Message-ID | <ti6NR-4s3-57@gated-at.bofh.it> (permalink) |
| References | <ti6E9-4o1-3@gated-at.bofh.it> |
| Organization | linux.* mail to news gateway |
From: Borislav Petkov <bp@suse.de>
When using perf stat on an AMD F15h system with the default hw events
attributes, some of the events don't get counted:
Performance counter stats for 'sleep 1':
0.749208 task-clock (msec) # 0.001 CPUs utilized
1 context-switches # 0.001 M/sec
0 cpu-migrations # 0.000 K/sec
54 page-faults # 0.072 M/sec
1,122,815 cycles # 1.499 GHz
286,740 stalled-cycles-frontend # 25.54% frontend cycles idle
<not counted> stalled-cycles-backend (0.00%)
^^^^^^^^^^^^
<not counted> instructions (0.00%)
^^^^^^^^^^^^
<not counted> branches (0.00%)
<not counted> branch-misses (0.00%)
1.001550070 seconds time elapsed
The reason is that we have the HW watchdog consuming one PMU counter and
when perf tries to schedule 6 events on 6 counters and some of those
counters are constrained to only a specific subset of PMCs by the
hardware, the event scheduling fails.
So issue a hint to disable the HW watchdog around a perf stat session.
Committer note:
Testing it...
# perf stat -d usleep 1
Performance counter stats for 'usleep 1':
1.180203 task-clock (msec) # 0.490 CPUs utilized
1 context-switches # 0.847 K/sec
0 cpu-migrations # 0.000 K/sec
54 page-faults # 0.046 M/sec
184,754 cycles # 0.157 GHz
714,553 instructions # 3.87 insn per cycle
154,661 branches # 131.046 M/sec
7,247 branch-misses # 4.69% of all branches
219,984 L1-dcache-loads # 186.395 M/sec
17,600 L1-dcache-load-misses # 8.00% of all L1-dcache hits (90.16%)
<not counted> LLC-loads (0.00%)
<not counted> LLC-load-misses (0.00%)
0.002406823 seconds time elapsed
Some events weren't counted. Try disabling the NMI watchdog:
echo 0 > /proc/sys/kernel/nmi_watchdog
perf stat ...
echo 1 > /proc/sys/kernel/nmi_watchdog
#
Signed-off-by: Borislav Petkov <bp@suse.de>
Acked-by: Ingo Molnar <mingo@kernel.org>
Tested-by: Arnaldo Carvalho de Melo <acme@redhat.com>
Cc: Peter Zijlstra <peterz@infradead.org>
Cc: Robert Richter <rric@kernel.org>
Cc: Vince Weaver <vince@deater.net>
Link: http://lkml.kernel.org/r/20170211183218.ijnvb5f7ciyuunx4@pd.tnic
Signed-off-by: Arnaldo Carvalho de Melo <acme@redhat.com>
---
tools/perf/builtin-stat.c | 11 +++++++++++
1 file changed, 11 insertions(+)
diff --git a/tools/perf/builtin-stat.c b/tools/perf/builtin-stat.c
index 13b54999ad79..f4f555a67e9b 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);
@@ -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)
--
2.9.3
Back to linux.kernel | Previous | Next — Previous in thread | Next in thread | Find similar | Unroll thread
[GIT PULL 00/35] perf/core improvements and fixes Arnaldo Carvalho de Melo <acme@kernel.org> - 2017-03-06 20:50 +0100
[PATCH 22/35] perf cpumap: Introduce cpu_map__snprint_mask() Arnaldo Carvalho de Melo <acme@kernel.org> - 2017-03-06 20:50 +0100
[PATCH 12/35] perf comm: Convert comm_str.refcnt from atomic_t to refcount_t Arnaldo Carvalho de Melo <acme@kernel.org> - 2017-03-06 20:50 +0100
[PATCH 30/35] perf tools: Force uncore events to system wide monitoring Arnaldo Carvalho de Melo <acme@kernel.org> - 2017-03-06 20:50 +0100
[PATCH 27/35] perf probe: Generalize probe event file open routine Arnaldo Carvalho de Melo <acme@kernel.org> - 2017-03-06 20:50 +0100
[PATCH 17/35] perf thread: convert thread.refcnt from atomic_t to refcount_t Arnaldo Carvalho de Melo <acme@kernel.org> - 2017-03-06 20:50 +0100
[PATCH 25/35] kretprobes: Ensure probe location is at function entry Arnaldo Carvalho de Melo <acme@kernel.org> - 2017-03-06 20:50 +0100
[PATCH 13/35] perf dso: Convert dso.refcnt from atomic_t to refcount_t Arnaldo Carvalho de Melo <acme@kernel.org> - 2017-03-06 20:50 +0100
[PATCH 21/35] perf ftrace: Add support for --pid option Arnaldo Carvalho de Melo <acme@kernel.org> - 2017-03-06 20:50 +0100
[PATCH 19/35] perf evlist: Clarify a bit the use of perf_mmap->refcnt Arnaldo Carvalho de Melo <acme@kernel.org> - 2017-03-06 20:50 +0100
[PATCH 23/35] perf ftrace: Add support for -a and -C option Arnaldo Carvalho de Melo <acme@kernel.org> - 2017-03-06 20:50 +0100
[PATCH 10/35] perf cgroup: Convert cgroup_sel.refcnt from atomic_t to refcount_t Arnaldo Carvalho de Melo <acme@kernel.org> - 2017-03-06 20:50 +0100
[PATCH 07/35] tools include: Provide gcc based cmpxchg fallback for !x86 Arnaldo Carvalho de Melo <acme@kernel.org> - 2017-03-06 20:50 +0100
[PATCH 20/35] perf tools: Allow sorting by symbol size Arnaldo Carvalho de Melo <acme@kernel.org> - 2017-03-06 20:50 +0100
[PATCH 28/35] perf intel-PT/BTS: Add missing initialization Arnaldo Carvalho de Melo <acme@kernel.org> - 2017-03-06 20:50 +0100
[PATCH 33/35] perf bench futex: Fix build on musl + clang Arnaldo Carvalho de Melo <acme@kernel.org> - 2017-03-06 20:50 +0100
[PATCH 05/35] tools arch x86: Introduce atomic_cmpxchg() Arnaldo Carvalho de Melo <acme@kernel.org> - 2017-03-06 20:50 +0100
[PATCH 14/35] perf map: Convert map.refcnt from atomic_t to refcount_t Arnaldo Carvalho de Melo <acme@kernel.org> - 2017-03-06 20:50 +0100
[PATCH 16/35] perf evlist: Convert perf_map.refcnt from atomic_t to refcount_t Arnaldo Carvalho de Melo <acme@kernel.org> - 2017-03-06 20:50 +0100
[PATCH 06/35] tools include: Introduce atomic_cmpxchg_{relaxed,release}() Arnaldo Carvalho de Melo <acme@kernel.org> - 2017-03-06 20:50 +0100
[PATCH 24/35] perf ftrace: Use pager for displaying result Arnaldo Carvalho de Melo <acme@kernel.org> - 2017-03-06 20:50 +0100
[PATCH 35/35] perf bench numa: Add more comment for -c option Arnaldo Carvalho de Melo <acme@kernel.org> - 2017-03-06 20:50 +0100
[PATCH 11/35] perf cpumap: Convert cpu_map.refcnt from atomic_t to refcount_t Arnaldo Carvalho de Melo <acme@kernel.org> - 2017-03-06 20:50 +0100
[PATCH 02/35] perf stat: Issue a HW watchdog disable hint Arnaldo Carvalho de Melo <acme@kernel.org> - 2017-03-06 20:50 +0100
[PATCH 26/35] trace/kprobes: Allow return probes with offsets and absolute addresses Arnaldo Carvalho de Melo <acme@kernel.org> - 2017-03-06 20:50 +0100
[PATCH 15/35] perf map: Convert map_groups.refcnt from atomic_t to refcount_t Arnaldo Carvalho de Melo <acme@kernel.org> - 2017-03-06 20:50 +0100
[PATCH 01/35] perf vendor events: Add mapping for KnightsMill PMU events Arnaldo Carvalho de Melo <acme@kernel.org> - 2017-03-06 20:50 +0100
[PATCH 32/35] perf bench futex: Use __maybe_unused Arnaldo Carvalho de Melo <acme@kernel.org> - 2017-03-06 20:50 +0100
[PATCH 29/35] trace/kprobes: Add back warning about offset in return probes Arnaldo Carvalho de Melo <acme@kernel.org> - 2017-03-06 20:50 +0100
[PATCH 31/35] tools build: Add test for sched_getcpu() Arnaldo Carvalho de Melo <acme@kernel.org> - 2017-03-06 20:50 +0100
[PATCH 09/35] tools include: Adopt kernel's refcount.h Arnaldo Carvalho de Melo <acme@kernel.org> - 2017-03-06 20:50 +0100
[PATCH 18/35] perf thread_map: Convert thread_map.refcnt from atomic_t to refcount_t Arnaldo Carvalho de Melo <acme@kernel.org> - 2017-03-06 20:50 +0100
[PATCH 34/35] tools build: Use the same CC for feature detection and actual build Arnaldo Carvalho de Melo <acme@kernel.org> - 2017-03-06 20:50 +0100
Re: [GIT PULL 00/35] perf/core improvements and fixes Ingo Molnar <mingo@kernel.org> - 2017-03-07 08:20 +0100
csiph-web