Groups | Search | Server Info | Keyboard shortcuts | Login | Register [http] [https] [nntp] [nntps]


Groups > linux.kernel > #1307510

Re: [PATCH RESEND] perf record: Add --buildid-all option

From Arnaldo Carvalho de Melo <acme@kernel.org>
Newsgroups linux.kernel
Subject Re: [PATCH RESEND] perf record: Add --buildid-all option
Date 2016-01-12 16:10 +0100
Message-ID <qQ8K6-2Id-5@gated-at.bofh.it> (permalink)
References <qPKRs-30B-1@gated-at.bofh.it> <qPKRs-30B-5@gated-at.bofh.it>
Organization linux.* mail to news gateway

Show all headers | View raw


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

Back to linux.kernel | Previous | Next — Previous in thread | Next in thread | Find similar | Unroll thread


Thread

[PATCH] perf record: Add --buildid-all option Namhyung Kim <namhyung@kernel.org> - 2016-01-11 14:40 +0100
  [PATCH RESEND] perf record: Add --buildid-all option Namhyung Kim <namhyung@kernel.org> - 2016-01-11 14:40 +0100
    Re: [PATCH RESEND] perf record: Add --buildid-all option Adrian Hunter <adrian.hunter@intel.com> - 2016-01-12 13:40 +0100
      Re: [PATCH RESEND] perf record: Add --buildid-all option Arnaldo Carvalho de Melo <acme@kernel.org> - 2016-01-12 15:40 +0100
        Re: [PATCH RESEND] perf record: Add --buildid-all option Adrian Hunter <adrian.hunter@intel.com> - 2016-01-13 10:00 +0100
    Re: [PATCH RESEND] perf record: Add --buildid-all option Arnaldo Carvalho de Melo <acme@kernel.org> - 2016-01-12 16:10 +0100
  [tip:perf/urgent] perf record: Add --buildid-all option tip-bot for Namhyung Kim <tipbot@zytor.com> - 2016-01-13 10:50 +0100

csiph-web