All of lore.kernel.org
 help / color / mirror / Atom feed
From: Arnaldo Carvalho de Melo <acme@kernel.org>
To: Namhyung Kim <namhyung@kernel.org>
Cc: Ingo Molnar <mingo@kernel.org>,
	Peter Zijlstra <a.p.zijlstra@chello.nl>,
	Jiri Olsa <jolsa@kernel.org>, LKML <linux-kernel@vger.kernel.org>,
	Andi Kleen <andi@firstfloor.org>
Subject: Re: [PATCH 2/7] perf hist: Introduce hists__match_hierarchy()
Date: Mon, 12 Sep 2016 11:25:30 -0300	[thread overview]
Message-ID: <20160912142530.GC4897@kernel.org> (raw)
In-Reply-To: <20160912061958.16656-3-namhyung@kernel.org>

Em Mon, Sep 12, 2016 at 03:19:53PM +0900, Namhyung Kim escreveu:
> The hists__match_hierarchy() is to find matching hist entries in a
> group.  It needs to search all matching children in the hierarchy.

Can you please enrich this changeset log? Define "matching", an example
of how the output of a hierarchy + group would help people trying to
understand the changes you're making, for instance.

- Arnaldo
 
> Signed-off-by: Namhyung Kim <namhyung@kernel.org>
> ---
>  tools/perf/util/hist.c | 51 ++++++++++++++++++++++++++++++++++++++++++++++++++
>  1 file changed, 51 insertions(+)
> 
> diff --git a/tools/perf/util/hist.c b/tools/perf/util/hist.c
> index de15dbcdcecf..be3f5ce31303 100644
> --- a/tools/perf/util/hist.c
> +++ b/tools/perf/util/hist.c
> @@ -2174,6 +2174,51 @@ static struct hist_entry *hists__find_entry(struct hists *hists,
>  	return NULL;
>  }
>  
> +static struct hist_entry *hists__find_hierarchy_entry(struct rb_root *root,
> +						      struct hist_entry *he)
> +{
> +	struct rb_node *n = root->rb_node;
> +
> +	while (n) {
> +		struct hist_entry *iter;
> +		struct perf_hpp_fmt *fmt;
> +		int64_t cmp = 0;
> +
> +		iter = rb_entry(n, struct hist_entry, rb_node_in);
> +		perf_hpp_list__for_each_sort_list(he->hpp_list, fmt) {
> +			cmp = fmt->collapse(fmt, iter, he);
> +			if (cmp)
> +				break;
> +		}
> +
> +		if (cmp < 0)
> +			n = n->rb_left;
> +		else if (cmp > 0)
> +			n = n->rb_right;
> +		else
> +			return iter;
> +	}
> +
> +	return NULL;
> +}
> +
> +static void hists__match_hierarchy(struct rb_root *leader_root,
> +				   struct rb_root *other_root)
> +{
> +	struct rb_node *nd;
> +	struct hist_entry *pos, *pair;
> +
> +	for (nd = rb_first(leader_root); nd; nd = rb_next(nd)) {
> +		pos  = rb_entry(nd, struct hist_entry, rb_node_in);
> +		pair = hists__find_hierarchy_entry(other_root, pos);
> +
> +		if (pair) {
> +			hist_entry__add_pair(pair, pos);
> +			hists__match_hierarchy(&pos->hroot_in, &pair->hroot_in);
> +		}
> +	}
> +}
> +
>  /*
>   * Look for pairs to link to the leader buckets (hist_entries):
>   */
> @@ -2183,6 +2228,12 @@ void hists__match(struct hists *leader, struct hists *other)
>  	struct rb_node *nd;
>  	struct hist_entry *pos, *pair;
>  
> +	if (symbol_conf.report_hierarchy) {
> +		/* hierarchy report always collapses entries */
> +		return hists__match_hierarchy(&leader->entries_collapsed,
> +					      &other->entries_collapsed);
> +	}
> +
>  	if (hists__has(leader, need_collapse))
>  		root = &leader->entries_collapsed;
>  	else
> -- 
> 2.9.3

  reply	other threads:[~2016-09-12 14:25 UTC|newest]

Thread overview: 20+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2016-09-12  6:19 [PATCHSET 0/7] perf tools: Support hierarchy report with event group (v1) Namhyung Kim
2016-09-12  6:19 ` [PATCH 1/7] perf hists browser: Fix event group display Namhyung Kim
2016-09-12 14:23   ` Arnaldo Carvalho de Melo
2016-09-20 21:37   ` [tip:perf/core] " tip-bot for Namhyung Kim
2016-09-12  6:19 ` [PATCH 2/7] perf hist: Introduce hists__match_hierarchy() Namhyung Kim
2016-09-12 14:25   ` Arnaldo Carvalho de Melo [this message]
2016-09-12 23:59     ` Namhyung Kim
2016-09-12  6:19 ` [PATCH 3/7] perf hist: Introduce hists__link_hierarchy() Namhyung Kim
2016-09-12  6:19 ` [PATCH 4/7] perf hist: Initialize hierachy tree explicitly Namhyung Kim
2016-09-12 14:22   ` Arnaldo Carvalho de Melo
2016-09-13  0:09     ` Namhyung Kim
2016-09-12  6:19 ` [PATCH 5/7] perf ui/stdio: Reset output width for hierarchy Namhyung Kim
2016-09-12 14:27   ` Arnaldo Carvalho de Melo
2016-09-13  1:00     ` Namhyung Kim
2016-09-12  6:19 ` [PATCH 6/7] perf ui/tui: " Namhyung Kim
2016-09-12 14:27   ` Arnaldo Carvalho de Melo
2016-09-13  1:01     ` Namhyung Kim
2016-09-12  6:19 ` [PATCH 7/7] perf report: Enable group view with hierarchy Namhyung Kim
2016-09-12 14:28   ` Arnaldo Carvalho de Melo
2016-09-13  1:06     ` Namhyung Kim

Reply instructions:

You may reply publicly to this message via plain-text email
using any one of the following methods:

* Save the following mbox file, import it into your mail client,
  and reply-to-all from there: mbox

  Avoid top-posting and favor interleaved quoting:
  https://en.wikipedia.org/wiki/Posting_style#Interleaved_style

* Reply using the --to, --cc, and --in-reply-to
  switches of git-send-email(1):

  git send-email \
    --in-reply-to=20160912142530.GC4897@kernel.org \
    --to=acme@kernel.org \
    --cc=a.p.zijlstra@chello.nl \
    --cc=andi@firstfloor.org \
    --cc=jolsa@kernel.org \
    --cc=linux-kernel@vger.kernel.org \
    --cc=mingo@kernel.org \
    --cc=namhyung@kernel.org \
    /path/to/YOUR_REPLY

  https://kernel.org/pub/software/scm/git/docs/git-send-email.html

* If your mail client supports setting the In-Reply-To header
  via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line before the message body.
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.