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
next prev parent 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.