All of lore.kernel.org
 help / color / mirror / Atom feed
From: tip-bot for Jin Yao <tipbot@zytor.com>
To: linux-tip-commits@vger.kernel.org
Cc: jolsa@kernel.org, tglx@linutronix.de, acme@redhat.com,
	peterz@infradead.org, kan.liang@intel.com, hpa@zytor.com,
	yao.jin@linux.intel.com, mingo@kernel.org,
	alexander.shishkin@linux.intel.com, ak@linux.intel.com,
	linux-kernel@vger.kernel.org
Subject: [tip:perf/core] perf stat: Extend rbtree to support per-thread shadow stats
Date: Thu, 28 Dec 2017 07:22:28 -0800	[thread overview]
Message-ID: <tip-49cd456af1dcb13ff3e94cb997c82968ae86722a@git.kernel.org> (raw)
In-Reply-To: <1512482591-4646-3-git-send-email-yao.jin@linux.intel.com>

Commit-ID:  49cd456af1dcb13ff3e94cb997c82968ae86722a
Gitweb:     https://git.kernel.org/tip/49cd456af1dcb13ff3e94cb997c82968ae86722a
Author:     Jin Yao <yao.jin@linux.intel.com>
AuthorDate: Tue, 5 Dec 2017 22:03:02 +0800
Committer:  Arnaldo Carvalho de Melo <acme@redhat.com>
CommitDate: Wed, 27 Dec 2017 12:15:42 -0300

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

Previously the rbtree was used to link generic metrics.

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>
Acked-by: Jiri Olsa <jolsa@kernel.org>
Cc: Alexander Shishkin <alexander.shishkin@linux.intel.com>
Cc: Andi Kleen <ak@linux.intel.com>
Cc: Kan Liang <kan.liang@intel.com>
Cc: Peter Zijlstra <peterz@infradead.org>
Link: http://lkml.kernel.org/r/1512482591-4646-3-git-send-email-yao.jin@linux.intel.com
Signed-off-by: Arnaldo Carvalho de Melo <acme@redhat.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 93aac27..528be3e 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)

  reply	other threads:[~2017-12-28 15:24 UTC|newest]

Thread overview: 25+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2017-12-05 14:03 [PATCH v6 00/11] perf stat: Enable '--per-thread' on all thread Jin Yao
2017-12-05 10:21 ` Jiri Olsa
2017-12-05 12:21   ` Jin, Yao
2017-12-05 14:03 ` [PATCH v6 01/11] perf util: Define a structure for per-thread shadow stats Jin Yao
2017-12-28 15:21   ` [tip:perf/core] perf stat: " tip-bot for Jin Yao
2017-12-05 14:03 ` [PATCH v6 02/11] perf stat: Extend rbtree to support " Jin Yao
2017-12-28 15:22   ` tip-bot for Jin Yao [this message]
2017-12-05 14:03 ` [PATCH v6 03/11] perf util: Create the runtime_stat init/exit function Jin Yao
2017-12-28 15:22   ` [tip:perf/core] perf stat: " tip-bot for Jin Yao
2017-12-05 14:03 ` [PATCH v6 04/11] perf util: Update per-thread shadow stats Jin Yao
2017-12-28 15:23   ` [tip:perf/core] perf stat: " tip-bot for Jin Yao
2017-12-05 14:03 ` [PATCH v6 05/11] perf util: Print " Jin Yao
2017-12-28 15:23   ` [tip:perf/core] perf stat: " tip-bot for Jin Yao
2017-12-05 14:03 ` [PATCH v6 06/11] perf util: Remove a set of shadow stats static variables Jin Yao
2017-12-28 15:24   ` [tip:perf/core] perf stat: " tip-bot for Jin Yao
2017-12-05 14:03 ` [PATCH v6 07/11] perf stat: Allocate shadow stats buffer for threads Jin Yao
2017-12-28 15:24   ` [tip:perf/core] " tip-bot for Jin Yao
2017-12-05 14:03 ` [PATCH v6 08/11] perf stat: Update or print per-thread stats Jin Yao
2017-12-28 15:25   ` [tip:perf/core] " tip-bot for Jin Yao
2017-12-05 14:03 ` [PATCH v6 09/11] perf util: Enumerate all threads from /proc Jin Yao
2017-12-28 15:25   ` [tip:perf/core] perf thread_map: " tip-bot for Jin Yao
2017-12-05 14:03 ` [PATCH v6 10/11] perf stat: Remove --per-thread pid/tid limitation Jin Yao
2017-12-28 15:25   ` [tip:perf/core] " tip-bot for Jin Yao
2017-12-05 14:03 ` [PATCH v6 11/11] perf stat: Resort '--per-thread' result Jin Yao
2017-12-28 15:26   ` [tip:perf/core] " tip-bot for 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=tip-49cd456af1dcb13ff3e94cb997c82968ae86722a@git.kernel.org \
    --to=tipbot@zytor.com \
    --cc=acme@redhat.com \
    --cc=ak@linux.intel.com \
    --cc=alexander.shishkin@linux.intel.com \
    --cc=hpa@zytor.com \
    --cc=jolsa@kernel.org \
    --cc=kan.liang@intel.com \
    --cc=linux-kernel@vger.kernel.org \
    --cc=linux-tip-commits@vger.kernel.org \
    --cc=mingo@kernel.org \
    --cc=peterz@infradead.org \
    --cc=tglx@linutronix.de \
    --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.