All of lore.kernel.org
 help / color / mirror / Atom feed
From: Jiri Olsa <jolsa@kernel.org>
To: Arnaldo Carvalho de Melo <acme@kernel.org>
Cc: lkml <linux-kernel@vger.kernel.org>,
	David Ahern <dsahern@gmail.com>, Ingo Molnar <mingo@kernel.org>,
	Namhyung Kim <namhyung@kernel.org>,
	Peter Zijlstra <a.p.zijlstra@chello.nl>,
	"Liang, Kan" <kan.liang@intel.com>
Subject: [PATCH 04/25] perf stat record: Synthesize stat record data
Date: Thu,  5 Nov 2015 15:40:48 +0100	[thread overview]
Message-ID: <1446734469-11352-5-git-send-email-jolsa@kernel.org> (raw)
In-Reply-To: <1446734469-11352-1-git-send-email-jolsa@kernel.org>

Synthesizing needed stat record data for report/script:
  - cpu/thread maps
  - stat config

Tested-by: Kan Liang <kan.liang@intel.com>
Link: http://lkml.kernel.org/n/tip-wni1s2i2sq17g4vomjyda2yf@git.kernel.org
Signed-off-by: Jiri Olsa <jolsa@kernel.org>
---
 tools/perf/builtin-stat.c | 47 +++++++++++++++++++++++++++++++++++++++++++++++
 1 file changed, 47 insertions(+)

diff --git a/tools/perf/builtin-stat.c b/tools/perf/builtin-stat.c
index 2abf45d67ff2..8c24e88afd3c 100644
--- a/tools/perf/builtin-stat.c
+++ b/tools/perf/builtin-stat.c
@@ -196,6 +196,20 @@ static inline int nsec_counter(struct perf_evsel *evsel)
 	return 0;
 }
 
+static int process_synthesized_event(struct perf_tool *tool __maybe_unused,
+				     union perf_event *event,
+				     struct perf_sample *sample __maybe_unused,
+				     struct machine *machine __maybe_unused)
+{
+	if (perf_data_file__write(&perf_stat.file, event, event->header.size) < 0) {
+		pr_err("failed to write perf data, error: %m\n");
+		return -1;
+	}
+
+	perf_stat.bytes_written += event->header.size;
+	return 0;
+}
+
 /*
  * Read out the results of a single counter:
  * do not aggregate counts across CPUs in system-wide mode
@@ -282,6 +296,35 @@ static void workload_exec_failed_signal(int signo __maybe_unused, siginfo_t *inf
 	workload_exec_errno = info->si_value.sival_int;
 }
 
+static int perf_stat_synthesize_config(void)
+{
+	int err;
+
+	err = perf_event__synthesize_thread_map2(NULL, evsel_list->threads,
+						process_synthesized_event,
+						NULL);
+	if (err < 0) {
+		pr_err("Couldn't synthesize thread map.\n");
+		return err;
+	}
+
+	err = perf_event__synthesize_cpu_map(NULL, evsel_list->cpus,
+					     process_synthesized_event, NULL);
+	if (err < 0) {
+		pr_err("Couldn't synthesize thread map.\n");
+		return err;
+	}
+
+	err = perf_event__synthesize_stat_config(NULL, &stat_config,
+						 process_synthesized_event, NULL);
+	if (err < 0) {
+		pr_err("Couldn't synthesize config.\n");
+		return err;
+	}
+
+	return 0;
+}
+
 static int __run_perf_stat(int argc, const char **argv)
 {
 	int interval = stat_config.interval;
@@ -362,6 +405,10 @@ static int __run_perf_stat(int argc, const char **argv)
 						 fd, false);
 		if (err < 0)
 			return err;
+
+		err = perf_stat_synthesize_config();
+		if (err < 0)
+			return err;
 	}
 
 	/*
-- 
2.4.3


  parent reply	other threads:[~2015-11-05 14:41 UTC|newest]

Thread overview: 52+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2015-11-05 14:40 [PATCHv6 00/25] perf stat: Add scripting support Jiri Olsa
2015-11-05 14:40 ` [PATCH 01/25] perf stat: Make stat options global Jiri Olsa
2015-11-08  7:31   ` [tip:perf/urgent] " tip-bot for Jiri Olsa
2015-11-05 14:40 ` [PATCH 02/25] perf stat record: Add record command Jiri Olsa
2015-11-05 20:51   ` Arnaldo Carvalho de Melo
2015-11-06  8:24     ` Jiri Olsa
2015-11-06 13:33       ` Arnaldo Carvalho de Melo
2015-11-06 14:13         ` Jiri Olsa
2015-11-05 14:40 ` [PATCH 03/25] perf stat record: Initialize record features Jiri Olsa
2015-12-18  9:08   ` [tip:perf/core] " tip-bot for Jiri Olsa
2015-11-05 14:40 ` Jiri Olsa [this message]
2015-12-18  9:09   ` [tip:perf/core] perf stat record: Synthesize stat record data tip-bot for Jiri Olsa
2015-11-05 14:40 ` [PATCH 05/25] perf stat record: Store events IDs in perf data file Jiri Olsa
2015-12-18  9:09   ` [tip:perf/core] perf evlist: Export id_add_fd() tip-bot for Jiri Olsa
2015-12-18  9:09   ` [tip:perf/core] perf stat record: Store events IDs in perf data file tip-bot for Jiri Olsa
2015-11-05 14:40 ` [PATCH 06/25] perf stat record: Add pipe support for record command Jiri Olsa
2015-12-18  9:10   ` [tip:perf/core] " tip-bot for Jiri Olsa
2015-11-05 14:40 ` [PATCH 07/25] perf stat record: Write stat events on record Jiri Olsa
2015-12-18  9:10   ` [tip:perf/core] " tip-bot for Jiri Olsa
2015-11-05 14:40 ` [PATCH 08/25] perf stat record: Write stat round " Jiri Olsa
2015-12-18  9:10   ` [tip:perf/core] " tip-bot for Jiri Olsa
2015-11-05 14:40 ` [PATCH 09/25] perf stat record: Do not allow record with multiple runs mode Jiri Olsa
2015-12-18  9:11   ` [tip:perf/core] " tip-bot for Jiri Olsa
2015-11-05 14:40 ` [PATCH 10/25] perf stat record: Synthesize event update events Jiri Olsa
2015-12-18  9:11   ` [tip:perf/core] " tip-bot for Jiri Olsa
2015-11-05 14:40 ` [PATCH 11/25] perf stat report: Add report command Jiri Olsa
2015-12-18  9:11   ` [tip:perf/core] " tip-bot for Jiri Olsa
2015-11-05 14:40 ` [PATCH 12/25] perf stat report: Process cpu/threads maps Jiri Olsa
2015-12-18  9:12   ` [tip:perf/core] " tip-bot for Jiri Olsa
2015-11-05 14:40 ` [PATCH 13/25] perf stat report: Process stat config event Jiri Olsa
2015-12-18  9:12   ` [tip:perf/core] " tip-bot for Jiri Olsa
2015-11-05 14:40 ` [PATCH 14/25] perf stat report: Add support to initialize aggr_map from file Jiri Olsa
2015-12-18  9:12   ` [tip:perf/core] " tip-bot for Jiri Olsa
2015-11-05 14:40 ` [PATCH 15/25] perf stat report: Process stat and stat round events Jiri Olsa
2015-12-18  9:13   ` [tip:perf/core] " tip-bot for Jiri Olsa
2015-11-05 14:41 ` [PATCH 16/25] perf stat report: Process event update events Jiri Olsa
2015-12-18  9:13   ` [tip:perf/core] " tip-bot for Jiri Olsa
2015-11-05 14:41 ` [PATCH 17/25] perf stat report: Move csv_sep initialization before report command Jiri Olsa
2015-12-17 18:57   ` Arnaldo Carvalho de Melo
2015-12-17 19:46     ` Jiri Olsa
2015-12-18  9:13   ` [tip:perf/core] " tip-bot for Jiri Olsa
2015-11-05 14:41 ` [PATCH 18/25] perf stat report: Allow to override aggr_mode Jiri Olsa
2015-12-18  9:14   ` [tip:perf/core] " tip-bot for Jiri Olsa
2015-11-05 14:41 ` [PATCH 19/25] perf script: Process cpu/threads maps Jiri Olsa
2015-11-05 14:41 ` [PATCH 20/25] perf script: Process stat config event Jiri Olsa
2015-11-05 14:41 ` [PATCH 21/25] perf script: Add process_stat/process_stat_interval scripting interface Jiri Olsa
2015-11-05 14:41 ` [PATCH 22/25] perf script: Add stat default handlers Jiri Olsa
2015-11-05 14:41 ` [PATCH 23/25] perf script: Display stat events by default Jiri Olsa
2015-11-05 14:41 ` [PATCH 24/25] perf script: Add python support for stat events Jiri Olsa
2015-11-05 14:41 ` [PATCH 25/25] perf script: Add stat-cpi.py script Jiri Olsa
2015-12-02 13:51 ` [PATCHv6 00/25] perf stat: Add scripting support Liang, Kan
2015-12-02 13:59   ` Jiri Olsa

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=1446734469-11352-5-git-send-email-jolsa@kernel.org \
    --to=jolsa@kernel.org \
    --cc=a.p.zijlstra@chello.nl \
    --cc=acme@kernel.org \
    --cc=dsahern@gmail.com \
    --cc=kan.liang@intel.com \
    --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.