All of lore.kernel.org
 help / color / mirror / Atom feed
* [PATCH 1/2] perf hists browser: Print overhead percent value for first-level callchain
@ 2014-11-24  8:13 Namhyung Kim
  2014-11-24  8:13 ` [PATCH 2/2] perf tools: Collapse first level callchain entry if it has sibling Namhyung Kim
                   ` (2 more replies)
  0 siblings, 3 replies; 15+ messages in thread
From: Namhyung Kim @ 2014-11-24  8:13 UTC (permalink / raw)
  To: Arnaldo Carvalho de Melo
  Cc: Peter Zijlstra, Ingo Molnar, Paul Mackerras, Namhyung Kim,
	Namhyung Kim, LKML, Jiri Olsa, Andi Kleen, David Ahern,
	Frederic Weisbecker

Currently perf report on TUI doesn't print percent for first-level
callchain entry.  I guess it (wrongly) assumes that there's only a
single callchain in the first level.  This patch fixes it by handling
the first level callchains same as others - if it's not 100% it should
print the percent value.  Also it'll affect other callchains in the
other way around - if it's 100% (single callchain) it should not print
the percentage.

Before:
  -   30.95%     6.84%  abc2     abc2              [.] a
     - a
        - 70.00% c
           - 100.00% apic_timer_interrupt
                smp_apic_timer_interrupt
                local_apic_timer_interrupt
                hrtimer_interrupt
                ...
        + 30.00% b
     + __libc_start_main

After:
  -   30.95%     6.84%  abc2     abc2              [.] a
     - 77.90% a
        - 70.00% c
           - apic_timer_interrupt
             smp_apic_timer_interrupt
             local_apic_timer_interrupt
             hrtimer_interrupt
             ...
        + 30.00% b
     + 22.10% __libc_start_main

Cc: Frederic Weisbecker <fweisbec@gmail.com>
Signed-off-by: Namhyung Kim <namhyung@kernel.org>
---
 tools/perf/ui/browsers/hists.c | 14 ++++++++++++--
 1 file changed, 12 insertions(+), 2 deletions(-)

diff --git a/tools/perf/ui/browsers/hists.c b/tools/perf/ui/browsers/hists.c
index 12c17c5a3d68..8d22905a4687 100644
--- a/tools/perf/ui/browsers/hists.c
+++ b/tools/perf/ui/browsers/hists.c
@@ -542,8 +542,11 @@ static int hist_browser__show_callchain(struct hist_browser *browser,
 	struct rb_node *node;
 	int first_row = row, offset = level * LEVEL_OFFSET_STEP;
 	u64 new_total;
+	bool need_percent;
 
 	node = rb_first(root);
+	need_percent = !!rb_next(node);
+
 	while (node) {
 		struct callchain_node *child = rb_entry(node, struct callchain_node, rb_node);
 		struct rb_node *next = rb_next(node);
@@ -560,7 +563,7 @@ static int hist_browser__show_callchain(struct hist_browser *browser,
 
 			if (first)
 				first = false;
-			else if (level > 1)
+			else if (need_percent)
 				extra_offset = LEVEL_OFFSET_STEP;
 
 			folded_sign = callchain_list__folded(chain);
@@ -573,7 +576,7 @@ static int hist_browser__show_callchain(struct hist_browser *browser,
 			str = callchain_list__sym_name(chain, bf, sizeof(bf),
 						       browser->show_dso);
 
-			if (was_first && level > 1) {
+			if (was_first && need_percent) {
 				double percent = cumul * 100.0 / total;
 
 				if (asprintf(&alloc_str, "%2.2f%% %s", percent, str) < 0)
@@ -790,6 +793,13 @@ static int hist_browser__show_entry(struct hist_browser *browser,
 			.is_current_entry = current_entry,
 		};
 
+		if (callchain_param.mode == CHAIN_GRAPH_REL) {
+			if (symbol_conf.cumulate_callchain)
+				total = entry->stat_acc->period;
+			else
+				total = entry->stat.period;
+		}
+
 		printed += hist_browser__show_callchain(browser,
 					&entry->sorted_chain, 1, row, total,
 					hist_browser__show_callchain_entry, &arg,
-- 
2.1.2


^ permalink raw reply related	[flat|nested] 15+ messages in thread

end of thread, other threads:[~2014-12-08  6:49 UTC | newest]

Thread overview: 15+ messages (download: mbox.gz follow: Atom feed
-- links below jump to the message on this page --
2014-11-24  8:13 [PATCH 1/2] perf hists browser: Print overhead percent value for first-level callchain Namhyung Kim
2014-11-24  8:13 ` [PATCH 2/2] perf tools: Collapse first level callchain entry if it has sibling Namhyung Kim
2014-12-08  6:48   ` [tip:perf/core] " tip-bot for Namhyung Kim
2014-11-24 14:52 ` probe + report for following branch history. was Re: [PATCH 1/2] perf hists browser: Print overhead percent value for first-level callchain Arnaldo Carvalho de Melo
2014-11-24 15:23   ` Arnaldo Carvalho de Melo
2014-11-24 15:25     ` Arnaldo Carvalho de Melo
2014-11-24 15:32       ` Arnaldo Carvalho de Melo
2014-11-24 15:48         ` perf/branch-history branch build broken with NO_DEMANGLE=1 " Arnaldo Carvalho de Melo
2014-11-24 21:23           ` Arnaldo Carvalho de Melo
2014-11-24 22:52             ` Andi Kleen
2014-11-25  1:17               ` Arnaldo Carvalho de Melo
2014-11-27 15:42               ` perf report --branch-history segfaul " Arnaldo Carvalho de Melo
2014-11-27 18:25                 ` Andi Kleen
2014-11-27  1:12   ` probe + report for following branch history. was Re: [PATCH 1/2] perf " Namhyung Kim
2014-12-08  6:48 ` [tip:perf/core] " tip-bot for Namhyung Kim

This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.