Re: [RFC/PATCHSET 00/17] perf tools: Add support for hierachy view (v2)

From: Arnaldo Carvalho de Melo
Date: Tue Jan 19 2016 - 15:59:54 EST


Em Sun, Jan 17, 2016 at 01:03:00AM +0900, Namhyung Kim escreveu:
> Hello,
>
> This is v2 attempt of my earlier patchset [1]. This patchset
> implements a new feature that collects hist entries in a hierachical
> manner. That means lower-level entries belong to an upper-level
> entry. The entry hierachy is built on the sort keys given, so users
> can set it whatever they want. It only shows top-level entries first,
> and user can expand/collapse it dynamically.
>
> This time I implemented it for every output browser including TUI.
> A screenshot on TUI looks like below:
>
> For normal output:
>
> $ perf report --tui
> Samples: 3K of event 'cycles:pp', Event count (approx.): 1695979674
> Overhead Command Shared Object Symbol
> ------------------------------------------------------------------------
> - 7.57% swapper [kernel.vmlinux] [k] intel_idle
> intel_idle
> cpuidle_enter_state
> cpuidle_enter
> call_cpuidle
> + cpu_startup_entry
> + 1.16 firefox firefox [.] 0x00000000000019433
> + 0.97% firefox libpthread-2.22.so [.] pthread_mutex_lock
> ...
>
>
> With hierarchy view,

Ok, tested, this is really nice, I think it should be the default, from
where to drill down, we could have a '--no-hierarchy', Ingo?

I'll took a quick look patch by patch, seems ok, will try to look deeper
to get this merged soon,

keep up the great work!

- Arnaldo

> $ perf report --tui --hierarchy
> Samples: 3K of event 'cycles:pp', Event count (approx.): 1695979674
> Overhead Command / Shared Object / Symbol
> -------------------------------------------------------------------
> + 76.30% firefox
> - 9.95% swapper
> - 9.51% [kernel.vmlinux]
> - 7.57 [k] intel_idle
> intel_idle
> cpuidle_enter_state
> cpuidle_enter
> call_cpuidle
> + cpu_startup_entry
> + 0.15% [k] __schedule
> + 0.12% [k] menu_select
> ...
> + 0.34% [sdhci]
> + 0.06% [e1000e]
> ...
> + 5.65% Xorg
> + 5.42% Socket Thread
> ...
>
> As you can see, overhead of an upper level entry is the sum of
> overhead of lower level entries. The entries are aligned by its order
> of matching sort keys.
>
> This is available from 'perf/hierarchy-v2' branch in my tree:
>
> git://git.kernel.org/pub/scm/linux/kernel/git/namhyung-perf.git
>
>
> Any comments are welcome, thanks!
> Namhyung
>
>
> Cc: Don Zickus <dzickus@xxxxxxxxxx>
> Cc: Pekka Enberg <penberg@xxxxxxxxxx>
> Cc: Moinuddin Quadri <moin18@xxxxxxxxx>
>
>
> [1] https://lkml.org/lkml/2013/5/21/24
>
>
> Namhyung Kim (17):
> perf hists: Basic support of hierarchical report view
> perf hists: Resort hist entries with hierarchy
> perf hists: Add helper functions for hierarchy mode
> perf hists: Cleanup filtering functions
> perf hists: Support filtering in hierarchy mode
> perf ui/stdio: Implement hierarchy output mode
> perf ui/stdio: Align column header for hierarchy output
> perf hists browser: Fix context menu item
> perf hists browser: Count number of hierarchy entries
> perf hists browser: Support collapsing/expanding whole entries in
> hierarchy
> perf hists browser: Factor out hist_browser__show_callchain()
> perf hists browser: Implement hierarchy output
> perf hists browser: Align column header in hierarchy mode
> perf ui/gtk: Implement hierarchy output mode
> perf report: Add --hierarchy option
> perf hists: Support decaying in hierarchy mode
> perf top: Add --hierarchy option
>
> tools/perf/Documentation/perf-report.txt | 3 +
> tools/perf/Documentation/perf-top.txt | 3 +
> tools/perf/Documentation/tips.txt | 1 +
> tools/perf/builtin-report.c | 17 +
> tools/perf/builtin-top.c | 15 +
> tools/perf/ui/browsers/hists.c | 590 ++++++++++++++++++++++++++-----
> tools/perf/ui/gtk/hists.c | 161 ++++++++-
> tools/perf/ui/hist.c | 14 +
> tools/perf/ui/stdio/hist.c | 182 +++++++++-
> tools/perf/util/hist.c | 470 ++++++++++++++++++++----
> tools/perf/util/hist.h | 11 +
> tools/perf/util/sort.c | 116 ++++++
> tools/perf/util/sort.h | 16 +-
> tools/perf/util/symbol.h | 3 +-
> 14 files changed, 1437 insertions(+), 165 deletions(-)
>
> --
> 2.6.4