[PATCHSET 0/7] perf tools: Support multiple keys in a single hierarchy level (v3)

From: Namhyung Kim
Date: Mon Mar 07 2016 - 09:36:41 EST


Hello,

This implements what Arnaldo suggested in previous discussion of
hierarchy patchset [1]. Originally each level in a hierarchy can have
a single sort key in it, but with this patches it's possible to have
more than one sort keys using a syntax similar to event grouping. I
added the struct perf_hpp_list_node and carry it to group output
formats (hpp_fmt) in a single level.

* Changes from v2)
- fix segfault on perf top (Arnaldo)
- add hpp_list_node->skip (Jiri)

* Changes from v1)
- use '{ }' to group sort keys (Arnaldo)
- cleanup hpp_list_node creation (Jiri)


Example below shows how 4 sort keys are used for 2 levels. As you can
see, the first level shows pid and comm of previous (switched) task
and the second level shows pid and comm of next task.

$ perf report --hierarchy -s '{prev_pid,prev_comm},{next_pid,next_comm}' \
--percent-limit 1 -i perf.data.sched
...
# Overhead prev_pid+prev_comm / next_pid+next_comm
# ........... .......................................
#
22.36% 0 swapper/0
9.48% 17773 transmission-gt
5.25% 109 kworker/0:1H
1.53% 6524 Xephyr
21.39% 17773 transmission-gt
9.52% 0 swapper/0
9.04% 0 swapper/2
1.78% 0 swapper/3


It's available on the 'perf/hierarchy-multi-v3' branch in my tree

git://git.kernel.org/pub/scm/linux/kernel/git/namhyung/linux-perf.git


Any feedbacks are welcome

Thanks,
Namhyung


[1] https://lkml.org/lkml/2016/2/24/1041


Namhyung Kim (7):
perf tools: Introduce perf_hpp__setup_hists_formats()
perf tools: Use own hpp_list for hierarchy mode
perf tools: Support multiple sort keys in a hierarchy level
perf tools: Fix indent for multiple hierarchy sort key
perf report: Use hierarchy hpp list on stdio
perf hists browser: Use hierarchy hpp list
perf report: Use hierarchy hpp list on gtk

tools/perf/ui/browsers/hists.c | 147 +++++++++++++++++++----------------
tools/perf/ui/gtk/hists.c | 73 +++++++++++-------
tools/perf/ui/hist.c | 69 +++++++++++++++++
tools/perf/ui/stdio/hist.c | 171 +++++++++++++++++++++--------------------
tools/perf/util/hist.c | 72 +++++++++++------
tools/perf/util/hist.h | 13 ++++
tools/perf/util/sort.c | 74 +++++++++++++++---
tools/perf/util/sort.h | 1 +
8 files changed, 408 insertions(+), 212 deletions(-)

--
2.7.2