aboutsummaryrefslogtreecommitdiffstats
path: root/tools
diff options
context:
space:
mode:
authorAdrian Hunter <adrian.hunter@intel.com>2015-08-19 10:29:21 -0400
committerArnaldo Carvalho de Melo <acme@redhat.com>2015-08-19 13:15:26 -0400
commitcca8482c0651cea97aade58cc22109ce9fffbfa2 (patch)
treee7b40194ae6d42ceefa75ff51fcd33ea35331b1f /tools
parent5cb73340d92a716fd2776700742c3558206ae298 (diff)
perf tools: Fix buildid processing
After recording, 'perf record' post-processes the data to determine which buildids are needed. That processing must process the data in time order, if possible, because otherwise dependent events, like forks and mmaps, will not make sense. Signed-off-by: Adrian Hunter <adrian.hunter@intel.com> Tested-by: Jiri Olsa <jolsa@kernel.org> Cc: Linus Torvalds <torvalds@linux-foundation.org> Link: http://lkml.kernel.org/r/1439994561-27436-4-git-send-email-adrian.hunter@intel.com [ Moved the sample_id_add to after trying to open the events, use pr_warning ] Signed-off-by: Arnaldo Carvalho de Melo <acme@redhat.com>
Diffstat (limited to 'tools')
-rw-r--r--tools/perf/builtin-record.c11
1 files changed, 11 insertions, 0 deletions
diff --git a/tools/perf/builtin-record.c b/tools/perf/builtin-record.c
index de165a1b9240..20b56eb987f8 100644
--- a/tools/perf/builtin-record.c
+++ b/tools/perf/builtin-record.c
@@ -521,6 +521,15 @@ static int __cmd_record(struct record *rec, int argc, const char **argv)
521 goto out_child; 521 goto out_child;
522 } 522 }
523 523
524 /*
525 * Normally perf_session__new would do this, but it doesn't have the
526 * evlist.
527 */
528 if (rec->tool.ordered_events && !perf_evlist__sample_id_all(rec->evlist)) {
529 pr_warning("WARNING: No sample_id_all support, falling back to unordered processing\n");
530 rec->tool.ordered_events = false;
531 }
532
524 if (!rec->evlist->nr_groups) 533 if (!rec->evlist->nr_groups)
525 perf_header__clear_feat(&session->header, HEADER_GROUP_DESC); 534 perf_header__clear_feat(&session->header, HEADER_GROUP_DESC);
526 535
@@ -965,9 +974,11 @@ static struct record record = {
965 .tool = { 974 .tool = {
966 .sample = process_sample_event, 975 .sample = process_sample_event,
967 .fork = perf_event__process_fork, 976 .fork = perf_event__process_fork,
977 .exit = perf_event__process_exit,
968 .comm = perf_event__process_comm, 978 .comm = perf_event__process_comm,
969 .mmap = perf_event__process_mmap, 979 .mmap = perf_event__process_mmap,
970 .mmap2 = perf_event__process_mmap2, 980 .mmap2 = perf_event__process_mmap2,
981 .ordered_events = true,
971 }, 982 },
972}; 983};
973 984