* [PATCH] perf record: Add --buildid-all option @ 2016-01-11 13:37 Namhyung Kim 2016-01-11 13:38 ` [PATCH RESEND] " Namhyung Kim 2016-01-13 9:41 ` [tip:perf/urgent] " tip-bot for Namhyung Kim 0 siblings, 2 replies; 7+ messages in thread From: Namhyung Kim @ 2016-01-11 13:37 UTC (permalink / raw) To: Arnaldo Carvalho de Melo Cc: Ingo Molnar, Peter Zijlstra, Jiri Olsa, LKML, David Ahern, Adrian Hunter, Andi Kleen, Stephane Eranian 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. 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 | 26 ++++++++++++++++++++------ 2 files changed, 23 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..319712a4e02b 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, + "Record build-id of all DSOs regardless of hits"), OPT_END() }; @@ -1255,6 +1261,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 ^ permalink raw reply related [flat|nested] 7+ messages in thread
* [PATCH RESEND] perf record: Add --buildid-all option 2016-01-11 13:37 [PATCH] perf record: Add --buildid-all option Namhyung Kim @ 2016-01-11 13:38 ` Namhyung Kim 2016-01-12 12:28 ` Adrian Hunter 2016-01-12 15:00 ` Arnaldo Carvalho de Melo 2016-01-13 9:41 ` [tip:perf/urgent] " tip-bot for Namhyung Kim 1 sibling, 2 replies; 7+ messages in thread From: Namhyung Kim @ 2016-01-11 13:38 UTC (permalink / raw) To: Arnaldo Carvalho de Melo Cc: Ingo Molnar, Peter Zijlstra, Jiri Olsa, LKML, David Ahern, Adrian Hunter, Andi Kleen, Stephane Eranian 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. 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 ^ permalink raw reply related [flat|nested] 7+ messages in thread
* Re: [PATCH RESEND] perf record: Add --buildid-all option 2016-01-11 13:38 ` [PATCH RESEND] " Namhyung Kim @ 2016-01-12 12:28 ` Adrian Hunter 2016-01-12 14:35 ` Arnaldo Carvalho de Melo 2016-01-12 15:00 ` Arnaldo Carvalho de Melo 1 sibling, 1 reply; 7+ messages in thread From: Adrian Hunter @ 2016-01-12 12:28 UTC (permalink / raw) To: Namhyung Kim, Arnaldo Carvalho de Melo Cc: Ingo Molnar, Peter Zijlstra, Jiri Olsa, LKML, David Ahern, Andi Kleen, Stephane Eranian On 11/01/16 15:38, Namhyung Kim wrote: > 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. > > 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; I wonder, if we are not processing samples, could the processing could be much simpler? All we need to do is read all the MMAP events, in any order, and create DSOs - no need to create threads or map-groups etc etc. ^ permalink raw reply [flat|nested] 7+ messages in thread
* Re: [PATCH RESEND] perf record: Add --buildid-all option 2016-01-12 12:28 ` Adrian Hunter @ 2016-01-12 14:35 ` Arnaldo Carvalho de Melo 2016-01-13 8:47 ` Adrian Hunter 0 siblings, 1 reply; 7+ messages in thread From: Arnaldo Carvalho de Melo @ 2016-01-12 14:35 UTC (permalink / raw) To: Adrian Hunter Cc: Namhyung Kim, Ingo Molnar, Peter Zijlstra, Jiri Olsa, LKML, David Ahern, Andi Kleen, Stephane Eranian Em Tue, Jan 12, 2016 at 02:28:22PM +0200, Adrian Hunter escreveu: > On 11/01/16 15:38, Namhyung Kim wrote: > > 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. > > > > 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; > > I wonder, if we are not processing samples, could the processing could be > much simpler? > All we need to do is read all the MMAP events, in any order, and create DSOs > - no need to > create threads or map-groups etc etc. Right, if that was the overhead, have you ever measured this? - Arnaldo ^ permalink raw reply [flat|nested] 7+ messages in thread
* Re: [PATCH RESEND] perf record: Add --buildid-all option 2016-01-12 14:35 ` Arnaldo Carvalho de Melo @ 2016-01-13 8:47 ` Adrian Hunter 0 siblings, 0 replies; 7+ messages in thread From: Adrian Hunter @ 2016-01-13 8:47 UTC (permalink / raw) To: Arnaldo Carvalho de Melo Cc: Namhyung Kim, Ingo Molnar, Peter Zijlstra, Jiri Olsa, LKML, David Ahern, Andi Kleen, Stephane Eranian On 12/01/16 16:35, Arnaldo Carvalho de Melo wrote: > Em Tue, Jan 12, 2016 at 02:28:22PM +0200, Adrian Hunter escreveu: >> On 11/01/16 15:38, Namhyung Kim wrote: >>> 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. >>> >>> 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; >> >> I wonder, if we are not processing samples, could the processing could be >> much simpler? >> All we need to do is read all the MMAP events, in any order, and create DSOs >> - no need to >> create threads or map-groups etc etc. > > Right, if that was the overhead, have you ever measured this? No, it was just a thought. ^ permalink raw reply [flat|nested] 7+ messages in thread
* Re: [PATCH RESEND] perf record: Add --buildid-all option 2016-01-11 13:38 ` [PATCH RESEND] " Namhyung Kim 2016-01-12 12:28 ` Adrian Hunter @ 2016-01-12 15:00 ` Arnaldo Carvalho de Melo 1 sibling, 0 replies; 7+ messages in thread From: Arnaldo Carvalho de Melo @ 2016-01-12 15:00 UTC (permalink / raw) To: Namhyung Kim Cc: Ingo Molnar, Peter Zijlstra, Jiri Olsa, LKML, David Ahern, Adrian Hunter, Andi Kleen, Stephane Eranian 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 ^ permalink raw reply [flat|nested] 7+ messages in thread
* [tip:perf/urgent] perf record: Add --buildid-all option 2016-01-11 13:37 [PATCH] perf record: Add --buildid-all option Namhyung Kim 2016-01-11 13:38 ` [PATCH RESEND] " Namhyung Kim @ 2016-01-13 9:41 ` tip-bot for Namhyung Kim 1 sibling, 0 replies; 7+ messages in thread From: tip-bot for Namhyung Kim @ 2016-01-13 9:41 UTC (permalink / raw) To: linux-tip-commits Cc: acme, eranian, peterz, adrian.hunter, hpa, linux-kernel, mingo, namhyung, tglx, andi, jolsa, dsahern Commit-ID: 6156681b73f2fffe56493e9a50518c0cbfcd8ba3 Gitweb: http://git.kernel.org/tip/6156681b73f2fffe56493e9a50518c0cbfcd8ba3 Author: Namhyung Kim <namhyung@kernel.org> AuthorDate: Mon, 11 Jan 2016 22:37:09 +0900 Committer: Arnaldo Carvalho de Melo <acme@redhat.com> CommitDate: Tue, 12 Jan 2016 12:42:07 -0300 perf record: Add --buildid-all option 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. Signed-off-by: Namhyung Kim <namhyung@kernel.org> Cc: Adrian Hunter <adrian.hunter@intel.com> Cc: Andi Kleen <andi@firstfloor.org> Cc: David Ahern <dsahern@gmail.com> Cc: Jiri Olsa <jolsa@kernel.org> Cc: Peter Zijlstra <peterz@infradead.org> Cc: Stephane Eranian <eranian@google.com> Link: http://lkml.kernel.org/r/1452519429-31779-1-git-send-email-namhyung@kernel.org Signed-off-by: Arnaldo Carvalho de Melo <acme@redhat.com> --- tools/perf/Documentation/perf-record.txt | 3 +++ tools/perf/builtin-record.c | 26 ++++++++++++++++++++------ 2 files changed, 23 insertions(+), 6 deletions(-) diff --git a/tools/perf/Documentation/perf-record.txt b/tools/perf/Documentation/perf-record.txt index 3a1a32f..fbceb63 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 dc4e0ad..319712a 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, + "Record build-id of all DSOs regardless of hits"), OPT_END() }; @@ -1255,6 +1261,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; ^ permalink raw reply related [flat|nested] 7+ messages in thread
end of thread, other threads:[~2016-01-13 9:42 UTC | newest] Thread overview: 7+ messages (download: mbox.gz follow: Atom feed -- links below jump to the message on this page -- 2016-01-11 13:37 [PATCH] perf record: Add --buildid-all option Namhyung Kim 2016-01-11 13:38 ` [PATCH RESEND] " Namhyung Kim 2016-01-12 12:28 ` Adrian Hunter 2016-01-12 14:35 ` Arnaldo Carvalho de Melo 2016-01-13 8:47 ` Adrian Hunter 2016-01-12 15:00 ` Arnaldo Carvalho de Melo 2016-01-13 9:41 ` [tip:perf/urgent] " tip-bot for Namhyung Kim
This is a public inbox, see mirroring instructions for how to clone and mirror all data and code used for this inbox; as well as URLs for NNTP newsgroup(s).