lkml.org 
[lkml]   [2017]   [May]   [24]   [last100]   RSS Feed
Views: [wrap][no wrap]   [headers]  [forward] 
 
Messages in this thread
    Patch in this message
    /
    From
    Subject[PATCH 7/7] perf tools: Fix to put caller above callee in children mode
    Date
    The __hpp__sort_acc() sorts entries using callchain depth in order to
    put callers above in children mode. But it assumed the callchain order
    was callee-first. Now default (for children) is caller-first so the
    order of entries is reverted.

    For example, consider following case.

    $ perf report --no-children
    ..l
    # Overhead Command Shared Object Symbol
    # ........ ....... ................... ..........................
    #
    99.44% a.out a.out [.] main
    |
    ---main
    __libc_start_main
    _start

    Then children mode should show 'start' above '__libc_start_main' since
    it's the caller (parent) of the __libc_start_main. But it's reversed:

    # Children Self Command Shared Object Symbol
    # ........ ........ ....... ............... .....................
    #
    99.61% 0.00% a.out libc-2.25.so [.] __libc_start_main
    99.61% 0.00% a.out a.out [.] _start
    99.54% 99.44% a.out a.out [.] main

    This patch fixes it.

    # Children Self Command Shared Object Symbol
    # ........ ........ ....... ............... .....................
    #
    99.61% 0.00% a.out a.out [.] _start
    99.61% 0.00% a.out libc-2.25.so [.] __libc_start_main
    99.54% 99.44% a.out a.out [.] main

    Cc: Frederic Weisbecker <fweisbec@gmail.com>
    Cc: Milian Wolff <milian.wolff@kdab.com>
    Acked-by: Jiri Olsa <jolsa@kernel.org>
    Signed-off-by: Namhyung Kim <namhyung@kernel.org>
    ---
    tools/perf/ui/hist.c | 2 ++
    1 file changed, 2 insertions(+)

    diff --git a/tools/perf/ui/hist.c b/tools/perf/ui/hist.c
    index 59addd52d9cd..ddb2c6fbdf91 100644
    --- a/tools/perf/ui/hist.c
    +++ b/tools/perf/ui/hist.c
    @@ -210,6 +210,8 @@ static int __hpp__sort_acc(struct hist_entry *a, struct hist_entry *b,
    return 0;

    ret = b->callchain->max_depth - a->callchain->max_depth;
    + if (callchain_param.order == ORDER_CALLER)
    + ret = -ret;
    }
    return ret;
    }
    --
    2.13.0
    \
     
     \ /
      Last update: 2017-05-24 08:24    [W:4.472 / U:0.552 seconds]
    ©2003-2020 Jasper Spaans|hosted at Digital Ocean and TransIP|Read the blog|Advertise on this site