Groups | Search | Server Info | Keyboard shortcuts | Login | Register [http] [https] [nntp] [nntps]
Groups > linux.kernel > #1304792
| From | Arnaldo Carvalho de Melo <acme@kernel.org> |
|---|---|
| Newsgroups | linux.kernel |
| Subject | [PATCH 23/59] perf script: Process cpu/threads maps |
| Date | 2016-01-08 19:10 +0100 |
| Message-ID | <qOJE6-21e-21@gated-at.bofh.it> (permalink) |
| References | <qOJE5-21e-1@gated-at.bofh.it> |
| Organization | linux.* mail to news gateway |
From: Jiri Olsa <jolsa@kernel.org>
Adding processing of cpu/threads maps. Configuring session's evlist with
these maps.
Signed-off-by: Jiri Olsa <jolsa@kernel.org>
Tested-by: Kan Liang <kan.liang@intel.com>
Cc: David Ahern <dsahern@gmail.com>
Cc: Namhyung Kim <namhyung@kernel.org>
Cc: Peter Zijlstra <a.p.zijlstra@chello.nl>
Link: http://lkml.kernel.org/r/1452028152-26762-3-git-send-email-jolsa@kernel.org
Signed-off-by: Arnaldo Carvalho de Melo <acme@redhat.com>
---
tools/perf/builtin-script.c | 67 +++++++++++++++++++++++++++++++++++++++++++++
1 file changed, 67 insertions(+)
diff --git a/tools/perf/builtin-script.c b/tools/perf/builtin-script.c
index bcc3542d9df5..aa6d7cf87dab 100644
--- a/tools/perf/builtin-script.c
+++ b/tools/perf/builtin-script.c
@@ -18,7 +18,11 @@
#include "util/sort.h"
#include "util/data.h"
#include "util/auxtrace.h"
+#include "util/cpumap.h"
+#include "util/thread_map.h"
+#include "util/stat.h"
#include <linux/bitmap.h>
+#include "asm/bug.h"
static char const *script_name;
static char const *generate_script_lang;
@@ -606,6 +610,9 @@ struct perf_script {
bool show_task_events;
bool show_mmap_events;
bool show_switch_events;
+ bool allocated;
+ struct cpu_map *cpus;
+ struct thread_map *threads;
};
static void process_event(struct perf_script *script __maybe_unused, union perf_event *event,
@@ -1682,6 +1689,63 @@ static void script__setup_sample_type(struct perf_script *script)
}
}
+static int set_maps(struct perf_script *script)
+{
+ struct perf_evlist *evlist = script->session->evlist;
+
+ if (!script->cpus || !script->threads)
+ return 0;
+
+ if (WARN_ONCE(script->allocated, "stats double allocation\n"))
+ return -EINVAL;
+
+ perf_evlist__set_maps(evlist, script->cpus, script->threads);
+
+ if (perf_evlist__alloc_stats(evlist, true))
+ return -ENOMEM;
+
+ script->allocated = true;
+ return 0;
+}
+
+static
+int process_thread_map_event(struct perf_tool *tool,
+ union perf_event *event,
+ struct perf_session *session __maybe_unused)
+{
+ struct perf_script *script = container_of(tool, struct perf_script, tool);
+
+ if (script->threads) {
+ pr_warning("Extra thread map event, ignoring.\n");
+ return 0;
+ }
+
+ script->threads = thread_map__new_event(&event->thread_map);
+ if (!script->threads)
+ return -ENOMEM;
+
+ return set_maps(script);
+}
+
+static
+int process_cpu_map_event(struct perf_tool *tool __maybe_unused,
+ union perf_event *event,
+ struct perf_session *session __maybe_unused)
+{
+ struct perf_script *script = container_of(tool, struct perf_script, tool);
+
+ if (script->cpus) {
+ pr_warning("Extra cpu map event, ignoring.\n");
+ return 0;
+ }
+
+ script->cpus = cpu_map__new_data(&event->cpu_map.data);
+ if (!script->cpus)
+ return -ENOMEM;
+
+ return set_maps(script);
+}
+
int cmd_script(int argc, const char **argv, const char *prefix __maybe_unused)
{
bool show_full_info = false;
@@ -1710,6 +1774,8 @@ int cmd_script(int argc, const char **argv, const char *prefix __maybe_unused)
.auxtrace_info = perf_event__process_auxtrace_info,
.auxtrace = perf_event__process_auxtrace,
.auxtrace_error = perf_event__process_auxtrace_error,
+ .thread_map = process_thread_map_event,
+ .cpu_map = process_cpu_map_event,
.ordered_events = true,
.ordering_requires_timestamps = true,
},
@@ -2063,6 +2129,7 @@ int cmd_script(int argc, const char **argv, const char *prefix __maybe_unused)
flush_scripting();
out_delete:
+ perf_evlist__free_stats(session->evlist);
perf_session__delete(session);
if (script_started)
--
2.1.0
Back to linux.kernel | Previous | Next — Previous in thread | Next in thread | Find similar | Unroll thread
[GIT PULL 00/59] perf/core improvements and fixes Arnaldo Carvalho de Melo <acme@kernel.org> - 2016-01-08 19:10 +0100
[PATCH 24/59] perf script: Process stat config event Arnaldo Carvalho de Melo <acme@kernel.org> - 2016-01-08 19:10 +0100
[PATCH 40/59] tools lib: Sync tools/lib/find_bit.c with the kernel Arnaldo Carvalho de Melo <acme@kernel.org> - 2016-01-08 19:10 +0100
[PATCH 49/59] perf tools: Add overhead/overhead_children keys defaults via string Arnaldo Carvalho de Melo <acme@kernel.org> - 2016-01-08 19:10 +0100
[PATCH 39/59] tools lib: Move find_next_bit.c to tools/lib/ Arnaldo Carvalho de Melo <acme@kernel.org> - 2016-01-08 19:10 +0100
[PATCH 42/59] perf top: Decay periods in callchains Arnaldo Carvalho de Melo <acme@kernel.org> - 2016-01-08 19:10 +0100
[PATCH 15/59] tools build feature: Fix feature_check_display_code typo Arnaldo Carvalho de Melo <acme@kernel.org> - 2016-01-08 19:10 +0100
[PATCH 23/59] perf script: Process cpu/threads maps Arnaldo Carvalho de Melo <acme@kernel.org> - 2016-01-08 19:10 +0100
[PATCH 43/59] perf report: Change default to use event group view Arnaldo Carvalho de Melo <acme@kernel.org> - 2016-01-08 19:10 +0100
[PATCH 05/59] perf tools: Pass evlist to setup_sorting() Arnaldo Carvalho de Melo <acme@kernel.org> - 2016-01-08 19:10 +0100
[PATCH 10/59] perf tools: Support shortcuts for events in dynamic sort keys Arnaldo Carvalho de Melo <acme@kernel.org> - 2016-01-08 19:10 +0100
[PATCH 13/59] perf tools: Add 'trace_fields' dynamic sort key Arnaldo Carvalho de Melo <acme@kernel.org> - 2016-01-08 19:10 +0100
[PATCH 59/59] perf evlist: Add --trace-fields option to show trace fields Arnaldo Carvalho de Melo <acme@kernel.org> - 2016-01-08 19:10 +0100
[PATCH 52/59] perf report: Show random usage tip on the help line Arnaldo Carvalho de Melo <acme@kernel.org> - 2016-01-08 19:10 +0100
[PATCH 48/59] perf tools: Remove list entry from struct sort_entry Arnaldo Carvalho de Melo <acme@kernel.org> - 2016-01-08 19:10 +0100
[PATCH 14/59] perf tools: Make 'trace' or 'trace_fields' sort key default for tracepoint events Arnaldo Carvalho de Melo <acme@kernel.org> - 2016-01-08 19:10 +0100
[PATCH 25/59] perf script: Add process_stat/process_stat_interval scripting interface Arnaldo Carvalho de Melo <acme@kernel.org> - 2016-01-08 19:10 +0100
[PATCH 41/59] tools lib: Move bitmap.[ch] from tools/perf/ to tools/{lib,include}/ Arnaldo Carvalho de Melo <acme@kernel.org> - 2016-01-08 19:10 +0100
[PATCH 02/59] perf hist: Save raw_data/size for tracepoint events Arnaldo Carvalho de Melo <acme@kernel.org> - 2016-01-08 19:10 +0100
[PATCH 08/59] perf tools: Add 'trace' sort key Arnaldo Carvalho de Melo <acme@kernel.org> - 2016-01-08 19:10 +0100
[PATCH 09/59] perf report/top: Add --raw-trace option Arnaldo Carvalho de Melo <acme@kernel.org> - 2016-01-08 19:10 +0100
[PATCH 45/59] perf tools: Add missing headers in perf's MANIFEST Arnaldo Carvalho de Melo <acme@kernel.org> - 2016-01-08 19:10 +0100
[PATCH 57/59] perf libdw: Check for mmaps also in MAP__VARIABLE tree Arnaldo Carvalho de Melo <acme@kernel.org> - 2016-01-08 19:20 +0100
[PATCH 56/59] perf unwind: Check for mmaps also in MAP__VARIABLE tree Arnaldo Carvalho de Melo <acme@kernel.org> - 2016-01-08 19:20 +0100
[PATCH 53/59] perf evlist: Make perf_evlist__open() open evsels with their cpus and threads (like perf record does) Arnaldo Carvalho de Melo <acme@kernel.org> - 2016-01-08 19:20 +0100
[PATCH 58/59] perf record: Store data mmaps for dwarf unwind Arnaldo Carvalho de Melo <acme@kernel.org> - 2016-01-08 19:20 +0100
[PATCH 47/59] perf tools: Include all tools/lib directory for tags/cscope/TAGS targets Arnaldo Carvalho de Melo <acme@kernel.org> - 2016-01-08 19:20 +0100
[PATCH 54/59] perf evlist: Remove perf_evlist__(enable|disable)_event functions Arnaldo Carvalho de Melo <acme@kernel.org> - 2016-01-08 19:20 +0100
[PATCH 51/59] perf hists: Export a couple of hist functions Arnaldo Carvalho de Melo <acme@kernel.org> - 2016-01-08 19:20 +0100
[PATCH 12/59] perf tools: Skip dynamic fields not defined for current event Arnaldo Carvalho de Melo <acme@kernel.org> - 2016-01-08 19:20 +0100
[PATCH 03/59] tools lib traceevent: Factor out and export print_event_field[s]() Arnaldo Carvalho de Melo <acme@kernel.org> - 2016-01-08 19:20 +0100
[PATCH 38/59] perf tests: Give a bit more information on the CQM test failure path Arnaldo Carvalho de Melo <acme@kernel.org> - 2016-01-08 19:20 +0100
[PATCH 37/59] perf tests: No need to set attr.sample_freq for tracking !PERF_RECORD_SAMPLE Arnaldo Carvalho de Melo <acme@kernel.org> - 2016-01-08 19:20 +0100
[PATCH 11/59] perf tools: Support '<event>.*' dynamic sort key Arnaldo Carvalho de Melo <acme@kernel.org> - 2016-01-08 19:20 +0100
[PATCH 04/59] perf top: Create the evlist sooner Arnaldo Carvalho de Melo <acme@kernel.org> - 2016-01-08 19:20 +0100
[PATCH 46/59] perf script: Align event name properly Arnaldo Carvalho de Melo <acme@kernel.org> - 2016-01-08 19:20 +0100
[PATCH 50/59] perf diff: Use perf_hpp__register_sort_field interface Arnaldo Carvalho de Melo <acme@kernel.org> - 2016-01-08 19:20 +0100
[PATCH 18/59] tools build feature: Use value assignment form for FEATURE-DUMP file Arnaldo Carvalho de Melo <acme@kernel.org> - 2016-01-08 19:20 +0100
[PATCH 35/59] perf test: No need for setting attr.sample_freq on the RECORD test Arnaldo Carvalho de Melo <acme@kernel.org> - 2016-01-08 19:20 +0100
[PATCH 33/59] perf evlist: Introduce perf_evlist__new_dummy constructor Arnaldo Carvalho de Melo <acme@kernel.org> - 2016-01-08 19:20 +0100
[PATCH 36/59] perf python: Add missing files to binding link list Arnaldo Carvalho de Melo <acme@kernel.org> - 2016-01-08 19:20 +0100
[PATCH 55/59] perf unwind: Use find_map function in access_dso_mem Arnaldo Carvalho de Melo <acme@kernel.org> - 2016-01-08 19:20 +0100
[PATCH 19/59] perf build: Use FEATURE-DUMP in bpf subproject Arnaldo Carvalho de Melo <acme@kernel.org> - 2016-01-08 19:30 +0100
[PATCH 28/59] perf cpumap: Fix cpu conversion in cpu_map__from_entries Arnaldo Carvalho de Melo <acme@kernel.org> - 2016-01-08 19:30 +0100
[PATCH 29/59] perf script: Display stat events by default Arnaldo Carvalho de Melo <acme@kernel.org> - 2016-01-08 19:30 +0100
[PATCH 07/59] perf tools: Try to show pretty printed output for dynamic sort keys Arnaldo Carvalho de Melo <acme@kernel.org> - 2016-01-08 19:30 +0100
[PATCH 16/59] tools build feature: Move dwarf post unwind choice output into perf Arnaldo Carvalho de Melo <acme@kernel.org> - 2016-01-08 19:30 +0100
[PATCH 20/59] perf tools: Add all matching dynamic sort keys for field name Arnaldo Carvalho de Melo <acme@kernel.org> - 2016-01-08 19:30 +0100
[PATCH 26/59] perf script: Add stat default handlers Arnaldo Carvalho de Melo <acme@kernel.org> - 2016-01-08 19:30 +0100
[PATCH 44/59] perf tools: Do not show trace command if it's not compiled in Arnaldo Carvalho de Melo <acme@kernel.org> - 2016-01-08 19:30 +0100
[PATCH 27/59] perf script: Add python support for stat events Arnaldo Carvalho de Melo <acme@kernel.org> - 2016-01-08 19:30 +0100
[PATCH 21/59] perf report: Add documentation for dynamic sort keys Arnaldo Carvalho de Melo <acme@kernel.org> - 2016-01-08 19:30 +0100
[PATCH 30/59] perf script: Add stat-cpi.py script Arnaldo Carvalho de Melo <acme@kernel.org> - 2016-01-08 19:30 +0100
[PATCH 34/59] perf test: Use "dummy" events in the PERF_RECORD_ test Arnaldo Carvalho de Melo <acme@kernel.org> - 2016-01-08 19:30 +0100
[PATCH 17/59] tools build feature: Introduce feature_assign macro Arnaldo Carvalho de Melo <acme@kernel.org> - 2016-01-08 19:30 +0100
[PATCH 31/59] perf pmu: fix alias->snapshot missing initialization bug Arnaldo Carvalho de Melo <acme@kernel.org> - 2016-01-08 19:30 +0100
[PATCH 32/59] perf tests: No need to set attr.sample_freq in the perf time to TSC test Arnaldo Carvalho de Melo <acme@kernel.org> - 2016-01-08 19:30 +0100
[PATCH 01/59] perf hist: Pass struct sample to __hists__add_entry() Arnaldo Carvalho de Melo <acme@kernel.org> - 2016-01-08 19:30 +0100
[PATCH 06/59] perf tools: Add dynamic sort key for tracepoint events Arnaldo Carvalho de Melo <acme@kernel.org> - 2016-01-08 19:30 +0100
[PATCH 22/59] perf stat record: Keep sample_type 0 for pipe session Arnaldo Carvalho de Melo <acme@kernel.org> - 2016-01-08 19:30 +0100
Re: [GIT PULL 00/59] perf/core improvements and fixes Ingo Molnar <mingo@kernel.org> - 2016-01-09 17:30 +0100
csiph-web