lkml.org 
[lkml]   [2019]   [Nov]   [19]   [last100]   RSS Feed
Views: [wrap][no wrap]   [headers]  [forward] 
 
Messages in this thread
    Patch in this message
    /
    From
    Subject[PATCH V4 09/13] perf report: Add option to enable the LBR stitching approach
    Date
    From: Kan Liang <kan.liang@linux.intel.com>

    With the LBR stitching approach, the reconstructed LBR call stack
    can break the HW limitation. However, it may reconstruct invalid call
    stacks in some cases, e.g. exception handing such as setjmp/longjmp.
    Also, it may impact the processing time especially when the number of
    samples with stitched LBRs are huge.

    Add an option to enable the approach.

    # To display the perf.data header info, please use
    # --header/--header-only options.
    #
    #
    # Total Lost Samples: 0
    #
    # Samples: 6K of event 'cycles'
    # Event count (approx.): 6492797701
    #
    # Children Self Command Shared Object Symbol
    # ........ ........ ............... ..................
    # .................................
    #
    99.99% 99.99% tchain_edit tchain_edit [.] f43
    |
    ---main
    f1
    f2
    f3
    f4
    f5
    f6
    f7
    f8
    f9
    f10
    f11
    f12
    f13
    f14
    f15
    f16
    f17
    f18
    f19
    f20
    f21
    f22
    f23
    f24
    f25
    f26
    f27
    f28
    f29
    f30
    f31
    |
    --99.65%--f32
    f33
    f34
    f35
    f36
    f37
    f38
    f39
    f40
    f41
    f42
    f43

    Reviewed-by: Andi Kleen <ak@linux.intel.com>
    Signed-off-by: Kan Liang <kan.liang@linux.intel.com>
    ---
    tools/perf/Documentation/perf-report.txt | 11 +++++++++++
    tools/perf/builtin-report.c | 6 ++++++
    2 files changed, 17 insertions(+)

    diff --git a/tools/perf/Documentation/perf-report.txt b/tools/perf/Documentation/perf-report.txt
    index 8dbe2119686a..b42bd38e5790 100644
    --- a/tools/perf/Documentation/perf-report.txt
    +++ b/tools/perf/Documentation/perf-report.txt
    @@ -476,6 +476,17 @@ include::itrace.txt[]
    This option extends the perf report to show reference callgraphs,
    which collected by reference event, in no callgraph event.

    +--stitch-lbr::
    + Show callgraph with stitched LBRs, which may have more complete
    + callgraph. The perf.data file must have been obtained using
    + perf record --call-graph lbr.
    + Disabled by default. In common cases with call stack overflows,
    + it can recreate better call stacks than the default lbr call stack
    + output. But this approach is not full proof. There can be cases
    + where it creates incorrect call stacks from incorrect matches.
    + The known limitations include exception handing such as
    + setjmp/longjmp will have calls/returns not match.
    +
    --socket-filter::
    Only report the samples on the processor socket that match with this filter

    diff --git a/tools/perf/builtin-report.c b/tools/perf/builtin-report.c
    index 585805f51f15..00c1d8a47b18 100644
    --- a/tools/perf/builtin-report.c
    +++ b/tools/perf/builtin-report.c
    @@ -84,6 +84,7 @@ struct report {
    bool header_only;
    bool nonany_branch_mode;
    bool group_set;
    + bool stitch_lbr;
    int max_stack;
    struct perf_read_values show_threads_values;
    struct annotation_options annotation_opts;
    @@ -267,6 +268,9 @@ static int process_sample_event(struct perf_tool *tool,
    return -1;
    }

    + if (rep->stitch_lbr)
    + al.thread->lbr_stitch_enable = true;
    +
    if (symbol_conf.hide_unresolved && al.sym == NULL)
    goto out_put;

    @@ -1229,6 +1233,8 @@ int cmd_report(int argc, const char **argv)
    "Show full source file name path for source lines"),
    OPT_BOOLEAN(0, "show-ref-call-graph", &symbol_conf.show_ref_callgraph,
    "Show callgraph from reference event"),
    + OPT_BOOLEAN(0, "stitch-lbr", &report.stitch_lbr,
    + "Enable LBR callgraph stitching approach"),
    OPT_INTEGER(0, "socket-filter", &report.socket_filter,
    "only show processor socket that match with this filter"),
    OPT_BOOLEAN(0, "raw-trace", &symbol_conf.raw_trace,
    --
    2.17.1
    \
     
     \ /
      Last update: 2019-11-19 15:36    [W:4.365 / U:0.228 seconds]
    ©2003-2020 Jasper Spaans|hosted at Digital Ocean and TransIP|Read the blog|Advertise on this site