From: Arnaldo Carvalho de Melo <acme@kernel.org>
To: Namhyung Kim <namhyung@kernel.org>
Cc: Peter Zijlstra <a.p.zijlstra@chello.nl>,
Ingo Molnar <mingo@kernel.org>, Paul Mackerras <paulus@samba.org>,
Namhyung Kim <namhyung.kim@lge.com>,
LKML <linux-kernel@vger.kernel.org>, Jiri Olsa <jolsa@redhat.com>,
Adrian Hunter <adrian.hunter@intel.com>,
David Ahern <dsahern@gmail.com>,
Stephane Eranian <eranian@google.com>
Subject: Re: [PATCH 6/8] perf record: Do not save pathname in ./debug/.build-id directory for vmlinux
Date: Tue, 4 Nov 2014 10:29:04 -0300 [thread overview]
Message-ID: <20141104132904.GE18464@kernel.org> (raw)
In-Reply-To: <1415063674-17206-7-git-send-email-namhyung@kernel.org>
Em Tue, Nov 04, 2014 at 10:14:32AM +0900, Namhyung Kim escreveu:
> When perf record finishes a session recording, it then pre-process
> samples in order to write build-id info from actually used DSOs.
> During this process it'll call map__load() for kernel map, and it ends
> up calling dso__load_vmlinux_path() which replaces dso->long_name.
Can't we achieve the same end result without introducing yet another
symbol_conf entry?
I think there are way too many there, we need to remove, not add :-\
I'll add this since it improve the end result, but if you don't beat me
to it I'll try to remove this symbol_conf entry while keeping the end
result you achieved with it.
- Arnaldo
> But this function checks kernel's build-id before searching vmlinux
> path so it'll have the cryptic name which can be confusing to users IMHO.
>
> This patch adds a flag to skip the build-id check during record, so
> it'll have a vmlinux path for the kernel dso->long_name.
>
> Before:
> # perf record -va sleep 3
> mmap size 528384B
> [ perf record: Woken up 1 times to write data ]
> [ perf record: Captured and wrote 0.196 MB perf.data (~8545 samples) ]
> Looking at the vmlinux_path (7 entries long)
> Using /home/namhyung/.debug/.build-id/f0/6e17aa50adf4d00b88925e03775de107611551 for symbols
>
> After:
> # perf record -va sleep 3
> mmap size 528384B
> [ perf record: Woken up 1 times to write data ]
> [ perf record: Captured and wrote 0.193 MB perf.data (~8432 samples) ]
> Looking at the vmlinux_path (7 entries long)
> Using /lib/modules/3.16.4-1-ARCH/build/vmlinux for symbols
> Cc: Adrian Hunter <adrian.hunter@intel.com>
> Signed-off-by: Namhyung Kim <namhyung@kernel.org>
> ---
> tools/perf/builtin-record.c | 11 +++++++++++
> tools/perf/util/symbol.c | 11 ++++++-----
> tools/perf/util/symbol.h | 1 +
> 3 files changed, 18 insertions(+), 5 deletions(-)
>
> diff --git a/tools/perf/builtin-record.c b/tools/perf/builtin-record.c
> index 5091a27e6d28..582c4da155ea 100644
> --- a/tools/perf/builtin-record.c
> +++ b/tools/perf/builtin-record.c
> @@ -200,6 +200,17 @@ static int process_buildids(struct record *rec)
> if (size == 0)
> return 0;
>
> + /*
> + * During this process, it'll load kernel map and replace the
> + * dso->long_name to a real pathname it found. In this case
> + * we prefer the vmlinux path like
> + * /lib/modules/3.16.4/build/vmlinux
> + *
> + * rather than build-id path (in debug directory).
> + * $HOME/.debug/.build-id/f0/6e17aa50adf4d00b88925e03775de107611551
> + */
> + symbol_conf.ignore_vmlinux_buildid = true;
> +
> return __perf_session__process_events(session, start,
> size - start,
> size, &build_id__mark_dso_hit_ops);
> diff --git a/tools/perf/util/symbol.c b/tools/perf/util/symbol.c
> index c69915c9d5bc..c24c5b83156c 100644
> --- a/tools/perf/util/symbol.c
> +++ b/tools/perf/util/symbol.c
> @@ -1511,12 +1511,10 @@ int dso__load_vmlinux_path(struct dso *dso, struct map *map,
> symbol_filter_t filter)
> {
> int i, err = 0;
> - char *filename;
> + char *filename = NULL;
>
> - pr_debug("Looking at the vmlinux_path (%d entries long)\n",
> - vmlinux_path__nr_entries + 1);
> -
> - filename = dso__build_id_filename(dso, NULL, 0);
> + if (!symbol_conf.ignore_vmlinux_buildid)
> + filename = dso__build_id_filename(dso, NULL, 0);
> if (filename != NULL) {
> err = dso__load_vmlinux(dso, map, filename, true, filter);
> if (err > 0)
> @@ -1524,6 +1522,9 @@ int dso__load_vmlinux_path(struct dso *dso, struct map *map,
> free(filename);
> }
>
> + pr_debug("Looking at the vmlinux_path (%d entries long)\n",
> + vmlinux_path__nr_entries + 1);
> +
> for (i = 0; i < vmlinux_path__nr_entries; ++i) {
> err = dso__load_vmlinux(dso, map, vmlinux_path[i], false, filter);
> if (err > 0)
> diff --git a/tools/perf/util/symbol.h b/tools/perf/util/symbol.h
> index eb2c19bf8d90..ded3ca7266de 100644
> --- a/tools/perf/util/symbol.h
> +++ b/tools/perf/util/symbol.h
> @@ -105,6 +105,7 @@ struct symbol_conf {
> unsigned short nr_events;
> bool try_vmlinux_path,
> ignore_vmlinux,
> + ignore_vmlinux_buildid,
> show_kernel_path,
> use_modules,
> sort_by_name,
> --
> 2.1.2
next prev parent reply other threads:[~2014-11-04 13:29 UTC|newest]
Thread overview: 43+ messages / expand[flat|nested] mbox.gz Atom feed top
2014-11-04 1:14 [PATCHSET 0/8] perf tools: Fix build-id matching on vmlinux (v6) Namhyung Kim
2014-11-04 1:14 ` [PATCH 1/8] perf tools: Preparation for compressed kernel module support Namhyung Kim
2014-11-04 10:58 ` Jiri Olsa
2014-11-07 5:29 ` [tip:perf/core] perf symbols: " tip-bot for Namhyung Kim
2014-11-04 1:14 ` [PATCH 2/8] perf tools: Add gzip decompression support for kernel module Namhyung Kim
2014-11-04 11:00 ` Jiri Olsa
2014-11-04 13:42 ` Arnaldo Carvalho de Melo
2014-11-05 2:59 ` Namhyung Kim
2014-11-07 5:30 ` [tip:perf/core] " tip-bot for Namhyung Kim
2014-11-04 14:15 ` [PATCH 2/8] " Arnaldo Carvalho de Melo
2014-11-05 3:04 ` Namhyung Kim
2014-11-04 1:14 ` [PATCH 3/8] perf tools: Rename dsos__write_buildid_table() Namhyung Kim
2014-11-07 5:30 ` [tip:perf/core] perf build-id: " tip-bot for Namhyung Kim
2014-11-04 1:14 ` [PATCH 4/8] perf build-id: Move build-id related functions to util/build-id.c Namhyung Kim
2014-11-07 5:30 ` [tip:perf/core] " tip-bot for Namhyung Kim
2014-11-04 1:14 ` [PATCH 5/8] perf tools: Move disable_buildid_cache() " Namhyung Kim
2014-11-04 1:14 ` [PATCH 6/8] perf record: Do not save pathname in ./debug/.build-id directory for vmlinux Namhyung Kim
2014-11-04 13:29 ` Arnaldo Carvalho de Melo [this message]
2014-11-05 2:54 ` Namhyung Kim
2014-11-07 5:30 ` [tip:perf/core] perf record: Do not save pathname in ./debug/ .build-id " tip-bot for Namhyung Kim
2014-11-04 1:14 ` [PATCH 7/8] perf tools: Fix build-id matching on vmlinux Namhyung Kim
2014-11-07 5:31 ` [tip:perf/core] " tip-bot for Namhyung Kim
2014-11-04 1:14 ` [PATCH 8/8] perf tools: Make vmlinux short name more like kallsyms short name Namhyung Kim
2014-11-07 5:31 ` [tip:perf/core] " tip-bot for Namhyung Kim
-- strict thread matches above, loose matches on Subject: below --
2014-11-03 7:27 [PATCHSET 0/8] perf tools: Fix build-id matching on vmlinux (v5) Namhyung Kim
2014-11-03 7:27 ` [PATCH 1/8] perf tools: Preparation for compressed kernel module support Namhyung Kim
2014-11-03 13:51 ` Jiri Olsa
2014-11-03 15:01 ` Namhyung Kim
2014-11-03 7:27 ` [PATCH 2/8] perf tools: Add gzip decompression support for kernel module Namhyung Kim
2014-11-03 13:54 ` Jiri Olsa
2014-11-03 15:02 ` Namhyung Kim
2014-11-03 7:27 ` [PATCH 3/8] perf tools: Get rid of unused dsos__hit_all() Namhyung Kim
2014-11-03 7:35 ` Adrian Hunter
2014-11-03 7:39 ` Namhyung Kim
2014-11-03 7:51 ` Adrian Hunter
2014-11-03 7:27 ` [PATCH 4/8] perf tools: Rename dsos__write_buildid_table() Namhyung Kim
2014-11-03 7:27 ` [PATCH 5/8] perf build-id: Move build-id related functions to util/build-id.c Namhyung Kim
2014-11-03 7:27 ` [PATCH 6/8] perf record: Do not save pathname in ./debug/.build-id directory for vmlinux Namhyung Kim
2014-11-03 7:27 ` [PATCH 7/8] perf tools: Fix build-id matching on vmlinux Namhyung Kim
2014-11-03 7:27 ` [PATCH 8/8] perf tools: Make vmlinux short name more like kallsyms short name Namhyung Kim
2014-09-22 8:04 [PATCH v4] perf tools: Fix build-id matching on vmlinux Namhyung Kim
2014-09-24 7:33 ` Ingo Molnar
2014-09-29 4:45 ` Namhyung Kim
Reply instructions:
You may reply publicly to this message via plain-text email
using any one of the following methods:
* Save the following mbox file, import it into your mail client,
and reply-to-all from there: mbox
Avoid top-posting and favor interleaved quoting:
https://en.wikipedia.org/wiki/Posting_style#Interleaved_style
* Reply using the --to, --cc, and --in-reply-to
switches of git-send-email(1):
git send-email \
--in-reply-to=20141104132904.GE18464@kernel.org \
--to=acme@kernel.org \
--cc=a.p.zijlstra@chello.nl \
--cc=adrian.hunter@intel.com \
--cc=dsahern@gmail.com \
--cc=eranian@google.com \
--cc=jolsa@redhat.com \
--cc=linux-kernel@vger.kernel.org \
--cc=mingo@kernel.org \
--cc=namhyung.kim@lge.com \
--cc=namhyung@kernel.org \
--cc=paulus@samba.org \
/path/to/YOUR_REPLY
https://kernel.org/pub/software/scm/git/docs/git-send-email.html
* If your mail client supports setting the In-Reply-To header
via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line
before the message body.
This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.