Groups | Search | Server Info | Keyboard shortcuts | Login | Register [http] [https] [nntp] [nntps]
Groups > linux.kernel > #1236400
| From | Jiri Olsa <jolsa@kernel.org> |
|---|---|
| Newsgroups | linux.kernel |
| Subject | [PATCH 21/45] perf stat record: Synthesize stat record data |
| Date | 2015-09-30 16:30 +0200 |
| Message-ID | <qeqyn-7BV-47@gated-at.bofh.it> (permalink) |
| References | <qeqoF-7qA-3@gated-at.bofh.it> |
| Organization | linux.* mail to news gateway |
Synthesizing needed stat record data for report/script:
- cpu/thread maps
- stat config
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 a81896b2307b..fa5299db0d2d 100644
--- a/tools/perf/builtin-stat.c
+++ b/tools/perf/builtin-stat.c
@@ -191,6 +191,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
@@ -277,6 +291,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;
@@ -357,6 +400,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
--
To unsubscribe from this list: send the line "unsubscribe linux-kernel" in
the body of a message to majordomo@vger.kernel.org
More majordomo info at http://vger.kernel.org/majordomo-info.html
Please read the FAQ at http://www.tux.org/lkml/
Back to linux.kernel | Previous | Next — Previous in thread | Next in thread | Find similar | Unroll thread
[PATCHv2 00/45] perf stat: Add scripting support Jiri Olsa <jolsa@kernel.org> - 2015-09-30 16:20 +0200
[PATCH 44/45] perf script: Add python support for stat events Jiri Olsa <jolsa@kernel.org> - 2015-09-30 16:20 +0200
[PATCH 40/45] perf script: Process stat config event Jiri Olsa <jolsa@kernel.org> - 2015-09-30 16:20 +0200
[PATCH 05/45] perf tools: Add cpu_map event synthesize function Jiri Olsa <jolsa@kernel.org> - 2015-09-30 16:20 +0200
[PATCH 29/45] perf tools: Add data arg to cpu_map__build_map callback Jiri Olsa <jolsa@kernel.org> - 2015-09-30 16:20 +0200
[PATCH 34/45] perf stat report: Add support to initialize aggr_map from file Jiri Olsa <jolsa@kernel.org> - 2015-09-30 16:20 +0200
[PATCH 30/45] perf stat report: Cache aggregated map entries in extra cpumap Jiri Olsa <jolsa@kernel.org> - 2015-09-30 16:20 +0200
[PATCH 09/45] perf tools: Add stat config event read function Jiri Olsa <jolsa@kernel.org> - 2015-09-30 16:30 +0200
[PATCH 18/45] perf stat: Add AGGR_UNSET mode Jiri Olsa <jolsa@kernel.org> - 2015-09-30 16:30 +0200
[PATCH 11/45] perf tools: Add stat event synthesize function Jiri Olsa <jolsa@kernel.org> - 2015-09-30 16:30 +0200
[PATCH 17/45] perf stat: Rename perf_stat struct into perf_stat_evsel Jiri Olsa <jolsa@kernel.org> - 2015-09-30 16:30 +0200
[PATCH 23/45] perf stat record: Add pipe support for record command Jiri Olsa <jolsa@kernel.org> - 2015-09-30 16:30 +0200
[PATCH 12/45] perf tools: Add stat event read function Jiri Olsa <jolsa@kernel.org> - 2015-09-30 16:30 +0200
[PATCH 02/45] perf tools: Add thread_map event synthesize function Jiri Olsa <jolsa@kernel.org> - 2015-09-30 16:30 +0200
[PATCH 14/45] perf tools: Add stat round event synthesize function Jiri Olsa <jolsa@kernel.org> - 2015-09-30 16:30 +0200
[PATCH 15/45] perf tools: Introduce stat feature Jiri Olsa <jolsa@kernel.org> - 2015-09-30 16:30 +0200
[PATCH 04/45] perf tools: Add cpu_map event Jiri Olsa <jolsa@kernel.org> - 2015-09-30 16:30 +0200
[PATCH 22/45] perf stat record: Store events IDs in perf data file Jiri Olsa <jolsa@kernel.org> - 2015-09-30 16:30 +0200
[PATCH 08/45] perf tools: Add stat config event synthesize function Jiri Olsa <jolsa@kernel.org> - 2015-09-30 16:30 +0200
[PATCH 19/45] perf stat record: Add record command Jiri Olsa <jolsa@kernel.org> - 2015-09-30 16:30 +0200
[PATCH 21/45] perf stat record: Synthesize stat record data Jiri Olsa <jolsa@kernel.org> - 2015-09-30 16:30 +0200
RE: [PATCHv2 00/45] perf stat: Add scripting support "Liang, Kan" <kan.liang@intel.com> - 2015-09-30 23:20 +0200
Re: [PATCHv2 00/45] perf stat: Add scripting support Jiri Olsa <jolsa@redhat.com> - 2015-09-30 23:40 +0200
Re: [PATCHv2 00/45] perf stat: Add scripting support Jiri Olsa <jolsa@redhat.com> - 2015-09-30 23:40 +0200
csiph-web