linux/tools/perf/util
Frederic Weisbecker 6d4818c524 perf tools: Fix display of first level of callchains
The callchain stdio mode display was written using a sorted by symbol
report. In this mode we have only one callchain root per hist so we
forgot to handle cases where we have multiple callchain root, as in per
dso sorting for example.

Fix this by handling these roots like any other branch, with the hist as
the parent.

Before:

     1.97%  libpthread-2.12.1.so
            |
            --- __libc_write
                create_worker
                bench_sched_messaging
                cmd_bench
                run_builtin
                main
                __libc_start_main

            |
            --- __libc_read
                create_worker
                bench_sched_messaging
                cmd_bench
                run_builtin
                main
                __libc_start_main

After:

     1.97%  libpthread-2.12.1.so
            |
            |--36.97%-- __libc_write
            |          create_worker
            |          bench_sched_messaging
            |          cmd_bench
            |          run_builtin
            |          main
            |          __libc_start_main
            |
            |--31.47%-- __libc_read
            |          create_worker
            |          bench_sched_messaging
            |          cmd_bench
            |          run_builtin
            |          main
            |          __libc_start_main
           ...

Single roots keep their entry without percentage because they have
the same overhead than the hist they refer to. ie: 100% in fractal
mode and the percentage of the hist in graph mode:

     0.00%  [k] reschedule_interrupt
            |
            --- default_idle
                amd_e400_idle
                cpu_idle
                start_secondary

Reported-by: Benjamin Herrenschmidt <benh@kernel.crashing.org>
Signed-off-by: Frederic Weisbecker <fweisbec@gmail.com>
Cc: Benjamin Herrenschmidt <benh@kernel.crashing.org>
Cc: David Ahern <dsahern@gmail.com>
Cc: Ingo Molnar <mingo@kernel.org>
Cc: Jiri Olsa <jolsa@redhat.com>
Cc: Peter Zijlstra <peterz@infradead.org>
Cc: Stephane Eranian <eranian@google.com>
Link: http://lkml.kernel.org/r/1332526010-15400-1-git-send-email-fweisbec@gmail.com
Signed-off-by: Arnaldo Carvalho de Melo <acme@redhat.com>
2012-03-26 15:14:40 -03:00
..
gtk perf report: Add a simple GTK2-based 'perf report' browser 2012-03-19 15:13:29 -03:00
include Merge branch 'perf/urgent' into perf/core 2012-03-22 15:09:08 -03:00
scripting-engines perf tools: Remove unnecessary ctype.h inclusion 2012-01-30 18:37:35 -02:00
ui Merge branch 'perf/urgent' into perf/core 2012-03-22 15:09:08 -03:00
abspath.c
alias.c
annotate.c perf annotate: Add missing newline on error message 2012-03-05 10:15:50 -03:00
annotate.h perf symbols: Add nr_events to symbol_conf 2011-11-28 10:37:11 -02:00
bitmap.c perf tools: Add bitmap_or function into bitmap object 2012-02-13 23:28:10 -02:00
build-id.c perf tools: Rename perf_event_ops to perf_tool 2011-11-28 10:39:28 -02:00
build-id.h perf tools: Rename perf_event_ops to perf_tool 2011-11-28 10:39:28 -02:00
cache.h perf report: Add a simple GTK2-based 'perf report' browser 2012-03-19 15:13:29 -03:00
callchain.c perf tools: Kill event_t typedef, use 'union perf_event' instead 2011-01-29 16:25:37 -02:00
callchain.h perf tools: Pass tool context in the the perf_event_ops functions 2011-11-28 10:38:56 -02:00
cgroup.c perf tools: Eliminate duplicate code and use PATH_MAX consistently 2011-11-28 10:11:04 -02:00
cgroup.h perf tool: Add cgroup support 2011-02-16 13:30:48 +01:00
color.c perf tools: Use scnprintf where applicable 2012-03-14 12:36:19 -03:00
color.h
config.c perf tools: Remove stale git headlines from top comment 2011-12-20 13:43:36 -02:00
cpumap.c perf tools: Add fprintf methods for thread_map and cpu_map classes 2012-01-24 19:46:48 -02:00
cpumap.h perf tools: Add fprintf methods for thread_map and cpu_map classes 2012-01-24 19:46:48 -02:00
ctype.c perf tools: ctype.c only wants util.h 2012-02-13 23:17:40 -02:00
debug.c perf ui browser: Handle K_RESIZE in dialog windows 2011-10-26 13:15:07 -02:00
debug.h perf ui browser: Handle K_RESIZE in dialog windows 2011-10-26 13:15:07 -02:00
debugfs.c perf tools: Remove unused functions from debugfs object 2012-02-13 23:25:38 -02:00
debugfs.h perf tools: Remove unused functions from debugfs object 2012-02-13 23:25:38 -02:00
dwarf-aux.c perf probe: Filter out redundant inline-instances 2011-08-12 09:34:35 -03:00
dwarf-aux.h perf probe: Search concrete out-of-line instances 2011-08-12 09:32:10 -03:00
environment.c
event.c perf tools: Ensure comm string is properly terminated 2012-02-29 18:29:45 -03:00
event.h perf tools: Add code to support PERF_SAMPLE_BRANCH_STACK 2012-03-09 08:26:04 +01:00
evlist.c perf tools: Do not disable members of group event 2012-03-16 16:29:33 -03:00
evlist.h perf tools: Allow multiple threads or processes in record, stat, top 2012-02-13 22:54:11 -02:00
evsel.c perf diff: Fix to work with new hists design 2012-03-22 15:12:09 -03:00
evsel.h perf diff: Fix to work with new hists design 2012-03-22 15:12:09 -03:00
exec_cmd.c perf tools: Makefile: Remove various and sundry cruft 2011-02-18 07:43:06 -02:00
exec_cmd.h
generate-cmdlist.sh
header.c perf tools: Fix various casting issues for 32 bits 2012-03-22 15:11:18 -03:00
header.h perf record: Add HEADER_BRANCH_STACK tag 2012-03-09 08:26:08 +01:00
help.c
help.h
hist.c perf tools: Fix display of first level of callchains 2012-03-26 15:14:40 -03:00
hist.h perf report: Add a simple GTK2-based 'perf report' browser 2012-03-19 15:13:29 -03:00
hweight.c
levenshtein.c
levenshtein.h
map.c perf script: Add option resolving vmlinux path 2012-01-30 18:13:07 -02:00
map.h perf script: Unify the expressions indicating "unknown" 2012-01-30 17:57:57 -02:00
pager.c
parse-events-bison.c perf tools: Fix modifier to be applied on correct events 2012-03-22 15:11:38 -03:00
parse-events-bison.h perf tools: Fix modifier to be applied on correct events 2012-03-22 15:11:38 -03:00
parse-events-flex.c perf tools: Add config options support for event parsing 2012-03-16 14:26:06 -03:00
parse-events-flex.h perf tools: Add config options support for event parsing 2012-03-16 14:26:06 -03:00
parse-events.c perf tools: Fix modifier to be applied on correct events 2012-03-22 15:11:38 -03:00
parse-events.h perf tools: Fix modifier to be applied on correct events 2012-03-22 15:11:38 -03:00
parse-events.l perf tools: Add config options support for event parsing 2012-03-16 14:26:06 -03:00
parse-events.y perf tools: Fix modifier to be applied on correct events 2012-03-22 15:11:38 -03:00
parse-options.c
parse-options.h perf options: add OPT_CALLBACK_DEFAULT_NOOPT 2010-12-06 15:33:29 -02:00
path.c perf tools: add test for strlcpy() 2010-08-21 11:22:47 -03:00
PERF-VERSION-GEN perf: clear out make flags when calling kernel make kernelver 2011-06-15 22:12:55 +02:00
pmu-bison.c perf tools: Add perf pmu object to access pmu format definition 2012-03-16 14:29:35 -03:00
pmu-bison.h perf tools: Add perf pmu object to access pmu format definition 2012-03-16 14:29:35 -03:00
pmu-flex.c perf tools: Add perf pmu object to access pmu format definition 2012-03-16 14:29:35 -03:00
pmu-flex.h perf tools: Add perf pmu object to access pmu format definition 2012-03-16 14:29:35 -03:00
pmu.c perf tools: Add perf pmu object to access pmu format definition 2012-03-16 14:29:35 -03:00
pmu.h perf tools: Add perf pmu object to access pmu format definition 2012-03-16 14:29:35 -03:00
pmu.l perf tools: Add perf pmu object to access pmu format definition 2012-03-16 14:29:35 -03:00
pmu.y perf tools: Add perf pmu object to access pmu format definition 2012-03-16 14:29:35 -03:00
probe-event.c Merge branch 'perf/urgent' into perf/core 2012-03-05 09:20:08 +01:00
probe-event.h perf probe: Add probed module in front of function 2011-07-15 16:19:08 -04:00
probe-finder.c Merge branch 'perf/urgent' into perf/core 2012-03-05 09:20:08 +01:00
probe-finder.h perf tools: Eliminate duplicate code and use PATH_MAX consistently 2011-11-28 10:11:04 -02:00
pstack.c
pstack.h
python-ext-sources perf tools: Allow multiple threads or processes in record, stat, top 2012-02-13 22:54:11 -02:00
python.c perf tools: Introduce per user view 2012-01-24 19:47:37 -02:00
quote.c
quote.h
run-command.c
run-command.h
session.c perf diff: Fix to work with new hists design 2012-03-22 15:12:09 -03:00
session.h perf tools: Add code to support PERF_SAMPLE_BRANCH_STACK 2012-03-09 08:26:04 +01:00
setup.py perf tools: Fix build dependency of perf python extension 2012-02-13 18:01:25 -02:00
sigchain.c
sigchain.h
sort.c Merge branch 'perf/urgent' into perf/core 2012-03-22 15:09:08 -03:00
sort.h perf report: Enable TUI in branch view mode 2012-03-09 08:26:08 +01:00
strbuf.c perf tools: Use scnprintf where applicable 2012-03-14 12:36:19 -03:00
strbuf.h
strfilter.c perf: Fix missing strndup declaration 2011-03-04 01:17:18 +01:00
strfilter.h perf tools: Add strfilter for general purpose string filter 2011-01-28 09:19:38 -02:00
string.c perf probe: Move strtailcmp to string.c 2011-07-15 16:00:47 -04:00
strlist.c
strlist.h
svghelper.c perf timechart: Fix black idle boxes in the title 2011-02-28 08:56:14 +01:00
svghelper.h
symbol.c perf tools: Get rid of ctype.h in symbol.c 2012-02-13 23:22:50 -02:00
symbol.h perf report: Enable TUI in branch view mode 2012-03-09 08:26:08 +01:00
sysfs.c perf tools: Add sysfs mountpoint interface 2012-02-13 23:27:15 -02:00
sysfs.h perf tools: Add sysfs mountpoint interface 2012-02-13 23:27:15 -02:00
thread_map.c perf tools: fix broken perf record -a mode 2012-02-21 15:05:43 -02:00
thread_map.h perf tools: Allow multiple threads or processes in record, stat, top 2012-02-13 22:54:11 -02:00
thread.c perf session: Move threads to struct machine 2011-11-28 10:35:31 -02:00
thread.h perf tools: Resolve machine earlier and pass it to perf_event_ops 2011-11-28 10:39:12 -02:00
tool.h perf tools: Save some loops using perf_evlist__id2evsel 2011-11-28 17:57:40 -02:00
top.c perf tools: Allow multiple threads or processes in record, stat, top 2012-02-13 22:54:11 -02:00
top.h perf tools: Handle kernels that don't support attr.exclude_{guest,host} 2012-03-03 12:19:56 -03:00
trace-event-info.c perf tools: Fix compile error on x86_64 Ubuntu 2012-01-08 13:34:55 -02:00
trace-event-parse.c perf tools: Simplify event_read_id exit path 2012-03-22 15:10:42 -03:00
trace-event-read.c perf tools: Remove unnecessary ctype.h inclusion 2012-01-30 18:37:35 -02:00
trace-event-scripting.c perf tools: Remove unnecessary ctype.h inclusion 2012-01-30 18:37:35 -02:00
trace-event.h perf tools: Resolve machine earlier and pass it to perf_event_ops 2011-11-28 10:39:12 -02:00
types.h perf tools: Fix 64 bit integer format strings 2011-01-22 23:41:57 -02:00
usage.c perf tools: Allow multiple threads or processes in record, stat, top 2012-02-13 22:54:11 -02:00
util.c perf tools: Change perf_guest default back to false 2012-03-03 12:13:41 -03:00
util.h perf tools: Implement islower/isupper macro into util.h 2012-02-13 23:15:43 -02:00
values.c perf tools: Fix a memory leak on perf_read_values_destroy 2011-12-20 13:41:34 -02:00
values.h
wrapper.c
xyarray.c perf tools: Introduce event selectors 2011-01-03 16:39:04 -02:00
xyarray.h perf tools: Introduce event selectors 2011-01-03 16:39:04 -02:00