• Adrian Hunter's avatar
    perf tools: Add support for leader-sampling with AUX area events · e3459979
    Adrian Hunter authored
    When AUX area events are used in sampling mode, they must be the group
    leader, but the group leader is also used for leader-sampling. However,
    it is not desirable to use an AUX area event as the leader for
    leader-sampling, because it doesn't have any samples of its own. To support
    leader-sampling with AUX area events, use the 2nd event of the group as the
    "leader" for the purposes of leader-sampling.
    
    Example:
    
     # perf record --kcore --aux-sample -e '{intel_pt//,cycles,instructions}:S' -c 10000 uname
     [ perf record: Woken up 3 times to write data ]
     [ perf record: Captured and wrote 0.786 MB perf.data ]
     # perf report
     Samples: 380  of events 'anon group { cycles, instructions }', Event count (approx.): 3026164
               Children              Self  Command  Shared Object      Symbol
     +   38.76%  42.65%     0.00%   0.00%  uname    [kernel.kallsyms]  [k] __x86_indirect_thunk_rax
     +   35.82%  31.33%     0.00%   0.00%  uname    ld-2.28.so         [.] _dl_start_user
     +   34.29%  29.74%     0.55%   0.47%  uname    ld-2.28.so         [.] _dl_start
     +   33.73%  28.62%     1.60%   0.97%  uname    ld-2.28.so         [.] dl_main
     +   33.19%  29.04%     0.52%   0.32%  uname    ld-2.28.so         [.] _dl_sysdep_start
     +   27.83%  33.74%     0.00%   0.00%  uname    [kernel.kallsyms]  [k] do_syscall_64
     +   26.76%  33.29%     0.00%   0.00%  uname    [kernel.kallsyms]  [k] entry_SYSCALL_64_after_hwframe
     +   23.78%  20.33%     5.97%   5.25%  uname    [kernel.kallsyms]  [k] page_fault
     +   23.18%  24.60%     0.00%   0.00%  uname    libc-2.28.so       [.] __libc_start_main
     +   22.64%  24.37%     0.00%   0.00%  uname    uname              [.] _start
     +   21.04%  23.27%     0.00%   0.00%  uname    uname              [.] main
     +   19.48%  18.08%     3.72%   3.64%  uname    ld-2.28.so         [.] _dl_relocate_object
     +   19.47%  21.81%     0.00%   0.00%  uname    libc-2.28.so       [.] setlocale
     +   19.44%  21.56%     0.52%   0.61%  uname    libc-2.28.so       [.] _nl_find_locale
     +   17.87%  19.66%     0.00%   0.00%  uname    libc-2.28.so       [.] _nl_load_locale_from_archive
     +   15.71%  13.73%     0.53%   0.52%  uname    [kernel.kallsyms]  [k] do_page_fault
     +   15.18%  13.21%     1.03%   0.68%  uname    [kernel.kallsyms]  [k] handle_mm_fault
     +   14.15%  12.53%     1.01%   1.12%  uname    [kernel.kallsyms]  [k] __handle_mm_fault
     +   12.03%   9.67%     0.54%   0.32%  uname    ld-2.28.so         [.] _dl_map_object
     +   10.55%   8.48%     0.00%   0.00%  uname    ld-2.28.so         [.] openaux
     +   10.55%  20.20%     0.52%   0.61%  uname    libc-2.28.so       [.] __run_exit_handlers
    
    Comnmitter notes:
    
    Fixed up this problem:
    
      util/record.c: In function ‘perf_evlist__config’:
      util/record.c:256:3: error: too few arguments to function ‘perf_evsel__config_leader_sampling’
        256 |   perf_evsel__config_leader_sampling(evsel);
            |   ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
      util/record.c:190:13: note: declared here
        190 | static void perf_evsel__config_leader_sampling(struct evsel *evsel,
            |             ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
    Signed-off-by: default avatarAdrian Hunter <adrian.hunter@intel.com>
    Cc: Andi Kleen <ak@linux.intel.com>
    Cc: Jiri Olsa <jolsa@redhat.com>
    Link: http://lore.kernel.org/lkml/20200401101613.6201-17-adrian.hunter@intel.comSigned-off-by: default avatarArnaldo Carvalho de Melo <acme@redhat.com>
    e3459979
record.c 9.76 KB