All of lore.kernel.org
 help / color / mirror / Atom feed
From: Arnaldo Carvalho de Melo <acme@kernel.org>
To: Jin Yao <yao.jin@linux.intel.com>
Cc: jolsa@kernel.org, peterz@infradead.org, mingo@redhat.com,
	alexander.shishkin@linux.intel.com, Linux-kernel@vger.kernel.org,
	ak@linux.intel.com, kan.liang@intel.com, yao.jin@intel.com
Subject: Re: [PATCH v5 03/12] perf util: Extend rbtree to support shadow stats
Date: Fri, 1 Dec 2017 11:10:01 -0300	[thread overview]
Message-ID: <20171201141001.GW3298@kernel.org> (raw)
In-Reply-To: <1512125856-22056-4-git-send-email-yao.jin@linux.intel.com>

Em Fri, Dec 01, 2017 at 06:57:27PM +0800, Jin Yao escreveu:
> Previously the rbtree was used to link generic metrics.

Try to make the one line subject more descriptive, I'm changing it to:

perf stat: Extend rbtree to support per-thread shadow stats

- Arnaldo
 
> This patches adds new ctx/type/stat into rbtree keys because we
> will use this rbtree to maintain shadow metrics to replace original
> a couple of static arrays for supporting per-thread shadow stats.
> 
> Signed-off-by: Jin Yao <yao.jin@linux.intel.com>
> ---
>  tools/perf/util/stat-shadow.c | 27 +++++++++++++++++++++++++++
>  1 file changed, 27 insertions(+)
> 
> diff --git a/tools/perf/util/stat-shadow.c b/tools/perf/util/stat-shadow.c
> index 5853901..c53b80d 100644
> --- a/tools/perf/util/stat-shadow.c
> +++ b/tools/perf/util/stat-shadow.c
> @@ -45,7 +45,10 @@ struct stats walltime_nsecs_stats;
>  struct saved_value {
>  	struct rb_node rb_node;
>  	struct perf_evsel *evsel;
> +	enum stat_type type;
> +	int ctx;
>  	int cpu;
> +	struct runtime_stat *stat;
>  	struct stats stats;
>  };
>  
> @@ -58,6 +61,30 @@ static int saved_value_cmp(struct rb_node *rb_node, const void *entry)
>  
>  	if (a->cpu != b->cpu)
>  		return a->cpu - b->cpu;
> +
> +	/*
> +	 * Previously the rbtree was used to link generic metrics.
> +	 * The keys were evsel/cpu. Now the rbtree is extended to support
> +	 * per-thread shadow stats. For shadow stats case, the keys
> +	 * are cpu/type/ctx/stat (evsel is NULL). For generic metrics
> +	 * case, the keys are still evsel/cpu (type/ctx/stat are 0 or NULL).
> +	 */
> +	if (a->type != b->type)
> +		return a->type - b->type;
> +
> +	if (a->ctx != b->ctx)
> +		return a->ctx - b->ctx;
> +
> +	if (a->evsel == NULL && b->evsel == NULL) {
> +		if (a->stat == b->stat)
> +			return 0;
> +
> +		if ((char *)a->stat < (char *)b->stat)
> +			return -1;
> +
> +		return 1;
> +	}
> +
>  	if (a->evsel == b->evsel)
>  		return 0;
>  	if ((char *)a->evsel < (char *)b->evsel)
> -- 
> 2.7.4

  reply	other threads:[~2017-12-01 14:10 UTC|newest]

Thread overview: 27+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2017-12-01 10:57 [PATCH v5 00/12] perf stat: Enable '--per-thread' on all thread Jin Yao
2017-12-01 10:57 ` [PATCH v5 01/12] perf util: Create rblist__exit() function Jin Yao
2017-12-06 16:36   ` [tip:perf/core] perf rblist: " tip-bot for Jin Yao
2017-12-01 10:57 ` [PATCH v5 02/12] perf util: Define a structure for runtime shadow stats Jin Yao
2017-12-01 14:02   ` Arnaldo Carvalho de Melo
2017-12-02  4:39     ` Jin, Yao
2017-12-01 10:57 ` [PATCH v5 03/12] perf util: Extend rbtree to support " Jin Yao
2017-12-01 14:10   ` Arnaldo Carvalho de Melo [this message]
2017-12-02  4:40     ` Jin, Yao
2017-12-01 10:57 ` [PATCH v5 04/12] perf util: Add rbtree node_delete ops Jin Yao
2017-12-01 14:14   ` Arnaldo Carvalho de Melo
2017-12-01 18:29     ` Andi Kleen
2017-12-06 16:37   ` [tip:perf/core] perf stat: Add rbtree node_delete op tip-bot for Jin Yao
2017-12-01 10:57 ` [PATCH v5 05/12] perf util: Create the runtime_stat init/exit function Jin Yao
2017-12-01 10:57 ` [PATCH v5 06/12] perf util: Update and print per-thread shadow stats Jin Yao
2017-12-01 14:21   ` Arnaldo Carvalho de Melo
2017-12-02  4:46     ` Jin, Yao
2017-12-01 10:57 ` [PATCH v5 07/12] perf util: Remove a set of shadow stats static variables Jin Yao
2017-12-01 10:57 ` [PATCH v5 08/12] perf stat: Allocate shadow stats buffer for threads Jin Yao
2017-12-01 10:57 ` [PATCH v5 09/12] perf stat: Update or print per-thread stats Jin Yao
2017-12-01 10:57 ` [PATCH v5 10/12] perf util: Reuse thread_map__new_by_uid to enumerate threads from /proc Jin Yao
2017-12-01 14:44   ` Arnaldo Carvalho de Melo
2017-12-01 15:02     ` Arnaldo Carvalho de Melo
2017-12-02  4:53       ` Jin, Yao
2017-12-02  4:47     ` Jin, Yao
2017-12-01 10:57 ` [PATCH v5 11/12] perf stat: Remove --per-thread pid/tid limitation Jin Yao
2017-12-01 10:57 ` [PATCH v5 12/12] perf stat: Resort '--per-thread' result Jin Yao

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=20171201141001.GW3298@kernel.org \
    --to=acme@kernel.org \
    --cc=Linux-kernel@vger.kernel.org \
    --cc=ak@linux.intel.com \
    --cc=alexander.shishkin@linux.intel.com \
    --cc=jolsa@kernel.org \
    --cc=kan.liang@intel.com \
    --cc=mingo@redhat.com \
    --cc=peterz@infradead.org \
    --cc=yao.jin@intel.com \
    --cc=yao.jin@linux.intel.com \
    /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.