Messages in this thread | | | Date | Tue, 12 Jan 2016 12:00:29 -0300 | From | Arnaldo Carvalho de Melo <> | Subject | Re: [PATCH RESEND] perf record: Add --buildid-all option |
| |
Em Mon, Jan 11, 2016 at 10:38:38PM +0900, Namhyung Kim escreveu: > The --buildid-all option is to record build-id of all DSOs in the file. > It might be very costly to postprocess samples to find which DSO hits.
Applied.
> Cc: Adrian Hunter <adrian.hunter@intel.com> > Cc: Andi Kleen <andi@firstfloor.org> > Cc: Stephane Eranian <eranian@google.com> > Signed-off-by: Namhyung Kim <namhyung@kernel.org> > --- > tools/perf/Documentation/perf-record.txt | 3 +++ > tools/perf/builtin-record.c | 32 ++++++++++++++++++++++++++------ > 2 files changed, 29 insertions(+), 6 deletions(-) > > diff --git a/tools/perf/Documentation/perf-record.txt b/tools/perf/Documentation/perf-record.txt > index 3a1a32f5479f..fbceb631387c 100644 > --- a/tools/perf/Documentation/perf-record.txt > +++ b/tools/perf/Documentation/perf-record.txt > @@ -338,6 +338,9 @@ Options passed to clang when compiling BPF scriptlets. > Specify vmlinux path which has debuginfo. > (enabled when BPF prologue is on) > > +--buildid-all:: > +Record build-id of all DSOs regardless whether it's actually hit or not. > + > SEE ALSO > -------- > linkperf:perf-stat[1], linkperf:perf-list[1] > diff --git a/tools/perf/builtin-record.c b/tools/perf/builtin-record.c > index dc4e0adf5c5b..a42cb2955697 100644 > --- a/tools/perf/builtin-record.c > +++ b/tools/perf/builtin-record.c > @@ -50,6 +50,7 @@ struct record { > int realtime_prio; > bool no_buildid; > bool no_buildid_cache; > + bool buildid_all; > unsigned long long samples; > }; > > @@ -362,6 +363,13 @@ static int process_buildids(struct record *rec) > */ > symbol_conf.ignore_vmlinux_buildid = true; > > + /* > + * If --buildid-all is given, it marks all DSO regardless of hits, > + * so no need to process samples. > + */ > + if (rec->buildid_all) > + rec->tool.sample = NULL; > + > return perf_session__process_events(session); > } > > @@ -756,12 +764,8 @@ out_child: > > if (!rec->no_buildid) { > process_buildids(rec); > - /* > - * We take all buildids when the file contains > - * AUX area tracing data because we do not decode the > - * trace because it would take too long. > - */ > - if (rec->opts.full_auxtrace) > + > + if (rec->buildid_all) > dsos__hit_all(rec->session); > } > perf_session__write_header(rec->session, rec->evlist, fd, true); > @@ -1138,6 +1142,8 @@ struct option __record_options[] = { > "options passed to clang when compiling BPF scriptlets"), > OPT_STRING(0, "vmlinux", &symbol_conf.vmlinux_name, > "file", "vmlinux pathname"), > + OPT_BOOLEAN(0, "buildid-all", &record.buildid_all, > + "collect build-id of all DSOs regardless of hits"), > OPT_END() > }; > > @@ -1193,6 +1199,12 @@ int cmd_record(int argc, const char **argv, const char *prefix __maybe_unused) > return -EINVAL; > } > > + if (rec->no_buildid && rec->buildid_all) { > + parse_options_usage(record_usage, record_options, "B", 1); > + parse_options_usage(NULL, record_options, "buildid-all", 0); > + return -EINVAL; > + } > + > if (!rec->itr) { > rec->itr = auxtrace_record__init(rec->evlist, &err); > if (err) > @@ -1255,6 +1267,14 @@ int cmd_record(int argc, const char **argv, const char *prefix __maybe_unused) > if (err) > goto out_symbol_exit; > > + /* > + * We take all buildids when the file contains > + * AUX area tracing data because we do not decode the > + * trace because it would take too long. > + */ > + if (rec->opts.full_auxtrace) > + rec->buildid_all = true; > + > if (record_opts__config(&rec->opts)) { > err = -EINVAL; > goto out_symbol_exit; > -- > 2.6.4
| |