perf/core improvements and fixes:

report/script/trace/top:
 
   Arnaldo Carvalho de Melo:
 
   - Allow specifying marker events demarcating when to consider the other events,
     i.e. one now can state something like:
 
         # perf probe kernel_function
         # perf record -e cycles,probe:kernel_function
 
     And then, in 'perf script' or 'perf report' say:
 
         # perf report --switch-on=probe:kernel_function
 
     And then the cycles event samples will be considered only after we
     find the first probe:kernel_function event.
 
     There is also --switch-off=event, to make it stop considering events
     out of some window, say to avoid some winding down of a workload.
 
     The same can be done with the "live mode" tools: 'perf top' and 'perf trace'.
 
     There are examples in the cset comments showing how to use it with
     SDT events in things like 'systemtap', that have those tracepoint-like
     events for the start/end of passes, etc.
 
     Another example involves selecting scheduler events + entry/exit of
     a syscall, using the syscalls tracepoints, one can then see the
     scheduler events that take place while that syscall is being processed.
 
     In the future this should be possible in record/top/trace via eBPF
     where the perf tools would hook into the marker events and enable events
     put in place but not enabled when the on/off conditions are the desired
     ones, reducing the amount of events sampled, but this userspace only
     solution should be good enough for many scenarios.
 
 perf vendor events intel:
 
   Haiyan Song:
 
   - Add Tremontx event file v1.02.
 
 unwind:
 
   John Keeping:
 
   - Fix callchain unwinding when tid != pid, that was working only for the
     thread group leader.
 
 Signed-off-by: Arnaldo Carvalho de Melo <acme@redhat.com>
 -----BEGIN PGP SIGNATURE-----
 
 iHUEABYIAB0WIQR2GiIUctdOfX2qHhGyPKLppCJ+JwUCXVcMPgAKCRCyPKLppCJ+
 J6ipAP9F5+TitM1zln/wUUP7/Ug4ZPDsdvA+Ggc8x0Ns7URJQwD/RHk43MgDC1fG
 VXbpQ7byj339Wo7SpjadzLl9xPlh/Qw=
 =IaYE
 -----END PGP SIGNATURE-----
 
 commit e2736219e6
 Author: John Keeping <john@metanate.com>
 Date:   Thu Aug 15 11:01:46 2019 +0100
 
     perf unwind: Remove unnecessary test
 
     If dwarf_callchain_users is false, then unwind__prepare_access() will
     not set unwind_libunwind_ops so the remaining test here is sufficient.
 
     Signed-off-by: John Keeping <john@metanate.com>
     Reviewed-by: Jiri Olsa <jolsa@kernel.org>
     Cc: Alexander Shishkin <alexander.shishkin@linux.intel.com>
     Cc: Konstantin Khlebnikov <khlebnikov@yandex-team.ru>
     Cc: Namhyung Kim <namhyung@kernel.org>
     Cc: Peter Zijlstra <peterz@infradead.org>
     Cc: john keeping <john@metanate.com>
     Link: http://lkml.kernel.org/r/20190815100146.28842-3-john@metanate.com
     Signed-off-by: Arnaldo Carvalho de Melo <acme@redhat.com>
 
 diff --git a/tools/perf/util/unwind-libunwind.c b/tools/perf/util/unwind-libunwind.c
 index b843f9d0a9ea..6499b22b158b 100644
 --- a/tools/perf/util/unwind-libunwind.c
 +++ b/tools/perf/util/unwind-libunwind.c
 @@ -69,18 +69,12 @@ int unwind__prepare_access(struct map_groups *mg, struct map *map,
 
  void unwind__flush_access(struct map_groups *mg)
  {
 -	if (!dwarf_callchain_users)
 -		return;
 -
  	if (mg->unwind_libunwind_ops)
  		mg->unwind_libunwind_ops->flush_access(mg);
  }
 
  void unwind__finish_access(struct map_groups *mg)
  {
 -	if (!dwarf_callchain_users)
 -		return;
 -
  	if (mg->unwind_libunwind_ops)
  		mg->unwind_libunwind_ops->finish_access(mg);
  }
 -----BEGIN PGP SIGNATURE-----
 
 iHUEABYIAB0WIQR2GiIUctdOfX2qHhGyPKLppCJ+JwUCXVcNQwAKCRCyPKLppCJ+
 J6KaAP46OWfi8MmO42+nRnsOY46jI1dLYZCtD+VTENOdT4Zw/AEA6GSxFGDKEpHX
 yQRfAWf80aSSWDxnwvn35w/BskdYows=
 =C35B
 -----END PGP SIGNATURE-----

Merge tag 'perf-core-for-mingo-5.4-20190816' of git://git.kernel.org/pub/scm/linux/kernel/git/acme/linux into perf/core

Pull perf/core improvements and fixes from Arnaldo:

report/script/trace/top:

  Arnaldo Carvalho de Melo:

  - Allow specifying marker events demarcating when to consider the other events,
    i.e. one now can state something like:

        # perf probe kernel_function
        # perf record -e cycles,probe:kernel_function

    And then, in 'perf script' or 'perf report' say:

        # perf report --switch-on=probe:kernel_function

    And then the cycles event samples will be considered only after we
    find the first probe:kernel_function event.

    There is also --switch-off=event, to make it stop considering events
    out of some window, say to avoid some winding down of a workload.

    The same can be done with the "live mode" tools: 'perf top' and 'perf trace'.

    There are examples in the cset comments showing how to use it with
    SDT events in things like 'systemtap', that have those tracepoint-like
    events for the start/end of passes, etc.

    Another example involves selecting scheduler events + entry/exit of
    a syscall, using the syscalls tracepoints, one can then see the
    scheduler events that take place while that syscall is being processed.

    In the future this should be possible in record/top/trace via eBPF
    where the perf tools would hook into the marker events and enable events
    put in place but not enabled when the on/off conditions are the desired
    ones, reducing the amount of events sampled, but this userspace only
    solution should be good enough for many scenarios.

perf vendor events intel:

  Haiyan Song:

  - Add Tremontx event file v1.02.

unwind:

  John Keeping:

  - Fix callchain unwinding when tid != pid, that was working only for the
    thread group leader.

Signed-off-by: Arnaldo Carvalho de Melo <acme@redhat.com>
-----BEGIN PGP SIGNATURE-----

iHUEABYIAB0WIQR2GiIUctdOfX2qHhGyPKLppCJ+JwUCXVcMPgAKCRCyPKLppCJ+
J6ipAP9F5+TitM1zln/wUUP7/Ug4ZPDsdvA+Ggc8x0Ns7URJQwD/RHk43MgDC1fG
VXbpQ7byj339Wo7SpjadzLl9xPlh/Qw=
=IaYE
-----END PGP SIGNATURE-----

commit e2736219e6
Author: John Keeping <john@metanate.com>
Date:   Thu Aug 15 11:01:46 2019 +0100

    perf unwind: Remove unnecessary test

    If dwarf_callchain_users is false, then unwind__prepare_access() will
    not set unwind_libunwind_ops so the remaining test here is sufficient.

    Signed-off-by: John Keeping <john@metanate.com>
    Reviewed-by: Jiri Olsa <jolsa@kernel.org>
    Cc: Alexander Shishkin <alexander.shishkin@linux.intel.com>
    Cc: Konstantin Khlebnikov <khlebnikov@yandex-team.ru>
    Cc: Namhyung Kim <namhyung@kernel.org>
    Cc: Peter Zijlstra <peterz@infradead.org>
    Cc: john keeping <john@metanate.com>
    Link: http://lkml.kernel.org/r/20190815100146.28842-3-john@metanate.com
    Signed-off-by: Arnaldo Carvalho de Melo <acme@redhat.com>

diff --git a/tools/perf/util/unwind-libunwind.c b/tools/perf/util/unwind-libunwind.c
index b843f9d0a9ea..6499b22b158b 100644
--- a/tools/perf/util/unwind-libunwind.c
+++ b/tools/perf/util/unwind-libunwind.c
@@ -69,18 +69,12 @@ int unwind__prepare_access(struct map_groups *mg, struct map *map,

 void unwind__flush_access(struct map_groups *mg)
 {
-	if (!dwarf_callchain_users)
-		return;
-
 	if (mg->unwind_libunwind_ops)
 		mg->unwind_libunwind_ops->flush_access(mg);
 }

 void unwind__finish_access(struct map_groups *mg)
 {
-	if (!dwarf_callchain_users)
-		return;
-
 	if (mg->unwind_libunwind_ops)
 		mg->unwind_libunwind_ops->finish_access(mg);
 }
This commit is contained in:
Thomas Gleixner 2019-08-16 22:43:42 +02:00
commit cfb104ca8a
29 changed files with 1158 additions and 55 deletions

1 Family-model Version Filename EventType
35 GenuineIntel-6-55-[56789ABCDEF] v1 cascadelakex core
36 GenuineIntel-6-7D v1 icelake core
37 GenuineIntel-6-7E v1 icelake core
38 GenuineIntel-6-86 v1 tremontx core
39 AuthenticAMD-23-[[:xdigit:]]+ v1 amdfam17h core