Thread (4 messages) 4 messages, 1 author, 2012-08-08

Re: [PATCH] perf: Add a new sort order: SORT_INCLUSIVE (v6)

From: Arun Sharma <hidden>
Date: 2012-08-08 19:17:27
Also in: lkml
Subsystem: performance events subsystem, the rest · Maintainers: Peter Zijlstra, Ingo Molnar, Arnaldo Carvalho de Melo, Namhyung Kim, Linus Torvalds

On 3/30/12 10:43 PM, Arun Sharma wrote:
[ Meant to include v6 ChangeLog as well. Technical difficulties.. ]

v6 ChangeLog:

rebased to tip:perf/core and fixed a minor problem in computing
the total period in hists__remove_entry_filter(). Needed to
use period_self instead of period.
This patch breaks perf top (symptom: percentages > 100%). Fixed by the 
following patch.

Namhyung: if you're still working on forward porting this, please add 
this fix to your queue.

  -Arun

commit 75a1c409a529c9741f8a2f493868d1fc7ce7e06d
Author: Arun Sharma [off-list ref]
Date:   Wed Aug 8 11:47:02 2012 -0700

    perf: update period_self as well on collapsing
       When running perf top, we have a series of incoming samples,
    which get aggregated in various user specified ways.
       Suppose function "foo" had the following samples:
    101, 103, 99, 105, ...
       ->period for the corresponding entry looks as follows:
    101, 204, 303, 408, ...
       However, due to this bug, ->period_self contains:
    101, 103, 99, 105, ...
       and therefore breaks the invariant period == period_self
    in the default mode (no sort inclusive).
       Since total_period is computed by summing up period_self,
       period/total_period can be > 100%
       Fix the bug by updating period_self as well.
       Signed-off-by: Arun Sharma [off-list ref]
diff --git a/tools/perf/util/hist.c b/tools/perf/util/hist.c
index a2a8d91..adc891e 100644
--- a/tools/perf/util/hist.c
+++ b/tools/perf/util/hist.c
@@ -462,6 +462,7 @@ static bool hists__collapse_insert_entry(struct 
hists *hists,

		if (!cmp) {
			iter->period += he->period;
+			iter->period_self += he->period_self;
			iter->nr_events += he->nr_events;
			if (symbol_conf.use_callchain) {
				callchain_cursor_reset(&hists->callchain_cursor);
Keyboard shortcuts
hback out one level
jnext message in thread
kprevious message in thread
ldrill in
Escclose help / fold thread tree
?toggle this help