kernel_optimize_test/tools/perf/tests
Andi Kleen 0997a2662f perf tools: Add support for exclusive groups/events
Peter suggested that using the exclusive mode in perf could avoid some
problems with bad scheduling of groups. Exclusive is implemented in the
kernel, but wasn't exposed by the perf tool, so hard to use without
custom low level API users.

Add support for marking groups or events with :e for exclusive in the
perf tool.  The implementation is basically the same as the existing
pinned attribute.

Committer testing:

  # perf test "parse event"
   6: Parse event definition strings                                  : Ok
  # perf test -v "parse event" |& grep :u*e
  running test 56 'instructions:uep'
  running test 57 '{cycles,cache-misses,branch-misses}:e'
  #
  #
  # grep "model name" -m1 /proc/cpuinfo
  model name	: AMD Ryzen 9 3900X 12-Core Processor
  #
  # perf stat -a -e '{cycles,cache-misses,branch-misses}:e' sleep 1

   Performance counter stats for 'system wide':

       <not counted>      cycles                                                        (0.00%)
       <not counted>      cache-misses                                                  (0.00%)
       <not counted>      branch-misses                                                 (0.00%)

         1.001269893 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
  # echo 0 > /proc/sys/kernel/nmi_watchdog
  # perf stat -a -e '{cycles,cache-misses,branch-misses}:e' sleep 1

   Performance counter stats for 'system wide':

       1,298,663,141      cycles
          30,962,215      cache-misses
           5,325,150      branch-misses

         1.001474934 seconds time elapsed

  #
  # The output for asking for precise events on AMD needs to improve, it
  # supposedly works only for system wide or per CPU
  #
  # perf stat -a -e '{cycles,cache-misses,branch-misses}:uep' sleep 1
  Error:
  The sys_perf_event_open() syscall returned with 22 (Invalid argument) for event (cycles).
  /bin/dmesg | grep -i perf may provide additional information.

  # perf stat -a -e '{cycles,cache-misses,branch-misses}:ue' sleep 1

   Performance counter stats for 'system wide':

         746,363,126      cycles
          16,881,611      cache-misses
           2,871,259      branch-misses

         1.001636066 seconds time elapsed

  #

Signed-off-by: Andi Kleen <ak@linux.intel.com>
Acked-by: Jiri Olsa <jolsa@kernel.org>
Tested-by: Arnaldo Carvalho de Melo <acme@redhat.com>
Cc: Andi Kleen <ak@linux.intel.com>
Cc: Peter Zijlstra <peterz@infradead.org>
Link: http://lore.kernel.org/lkml/20201014144255.22699-1-andi@firstfloor.org
Signed-off-by: Arnaldo Carvalho de Melo <acme@redhat.com>
2020-10-14 12:24:28 -03:00
..
attr perf test: Leader sampling shouldn't clear sample period 2020-09-14 19:35:22 -03:00
shell perf test: Add build id shell test 2020-10-14 11:28:52 -03:00
.gitignore
api-io.c
attr.c perf tests: Call test_attr__open() directly 2020-09-10 11:55:37 -03:00
attr.py
backward-ring-buffer.c
bitmap.c
bp_account.c
bp_signal_overflow.c
bp_signal.c perf test: Fix the "signal" test inline assembly 2020-09-14 18:26:45 -03:00
bpf-script-example.c
bpf-script-test-kbuild.c
bpf-script-test-prologue.c
bpf-script-test-relocation.c
bpf.c perf test: Fix basic bpf filtering test 2020-08-21 10:22:23 -03:00
Build perf test: Add expand cgroup event test 2020-09-28 09:21:05 -03:00
builtin-test.c perf test: Add expand cgroup event test 2020-09-28 09:21:05 -03:00
clang.c
code-reading.c perf evlist: Fix the class prefix for 'struct evlist' strerror methods 2020-06-22 16:28:09 -03:00
cpumap.c
demangle-java-test.c perf tests: Add test for the java demangler 2020-05-28 10:03:28 -03:00
dso-data.c
dwarf-unwind.c perf test: Initialize memory in dwarf-unwind 2020-06-01 12:24:23 -03:00
event_update.c
event-times.c
evsel-roundtrip-name.c
evsel-tp-sched.c
expand-cgroup.c perf test: Add expand cgroup event test 2020-09-28 09:21:05 -03:00
expr.c perf metric: Add 'struct expr_id_data' to keep expr value 2020-07-17 09:09:48 -03:00
fdarray.c libperf: Add flags to fdarray fds objects 2020-07-21 09:52:51 -03:00
genelf.c
hists_common.c
hists_common.h
hists_cumulate.c
hists_filter.c
hists_link.c
hists_output.c
is_printable_array.c
keep-tracking.c
kmod-path.c
llvm.c
llvm.h
make perf tools: Add build test with GTK+ 2020-09-09 11:12:10 -03:00
maps.c
mem.c
mem2node.c
mmap-basic.c
mmap-thread-lookup.c
openat-syscall-all-cpus.c
openat-syscall-tp-fields.c
openat-syscall.c
parse-events.c perf tools: Add support for exclusive groups/events 2020-10-14 12:24:28 -03:00
parse-metric.c perf test: Fix msan uninitialized use. 2020-09-28 09:24:01 -03:00
parse-no-sample-id-all.c
pe-file-parsing.c perf tools: Pass build_id object to filename__read_build_id() 2020-10-14 08:45:16 -03:00
pe-file.c perf tests: Add test for PE binary format support 2020-09-04 14:38:15 -03:00
pe-file.exe perf tests: Add test for PE binary format support 2020-09-04 14:38:15 -03:00
pe-file.exe.debug perf tests: Add test for PE binary format support 2020-09-04 14:38:15 -03:00
perf-hooks.c
perf-record.c perf script: Show text poke address symbol 2020-07-10 08:39:14 -03:00
perf-targz-src-pkg
pfm.c perf tools: Add optional support for libpfm4 2020-05-29 16:51:38 -03:00
pmu-events.c perf test: Free aliases for PMU event map aliases test 2020-09-15 08:56:50 -03:00
pmu.c perf test: Free formats for perf pmu parse test 2020-09-15 09:22:42 -03:00
python-use.c perf tests: Show python test script in verbose mode 2020-10-13 16:22:03 -03:00
sample-parsing.c
sdt.c perf tools: Pass build_id object to build_id__sprintf() 2020-10-14 08:46:22 -03:00
stat.c
sw-clock.c
switch-tracking.c
task-exit.c
tests.h perf test: Add expand cgroup event test 2020-09-28 09:21:05 -03:00
thread-map.c
thread-maps-share.c
time-utils-test.c
topology.c
unit_number__scnprintf.c
vmlinux-kallsyms.c
wp.c