stable.vger.kernel.org archive mirror
 help / color / mirror / Atom feed
From: Arnaldo Carvalho de Melo <acme@kernel.org>
To: Namhyung Kim <namhyung@kernel.org>
Cc: Adrian Hunter <adrian.hunter@intel.com>,
	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>,
	David Ahern <dsahern@gmail.com>,
	Stephane Eranian <eranian@google.com>,
	Andi Kleen <andi@firstfloor.org>,
	stable@vger.kernel.org
Subject: Re: [PATCH v2] perf tools: Fix build-id matching on vmlinux
Date: Fri, 19 Sep 2014 13:48:50 -0300	[thread overview]
Message-ID: <20140919164850.GD32694@kernel.org> (raw)
In-Reply-To: <1411141366.1680.15.camel@leonhard>

Em Sat, Sep 20, 2014 at 12:42:46AM +0900, Namhyung Kim escreveu:
> 2014-09-19 (금), 11:16 -0300, Arnaldo Carvalho de Melo:
> > Em Fri, Sep 19, 2014 at 03:26:25PM +0900, Namhyung Kim escreveu:
> > > On Fri, 12 Sep 2014 11:11:16 -0300, Arnaldo Carvalho de Melo wrote:
> > > > Em Fri, Sep 12, 2014 at 03:14:51PM +0900, Namhyung Kim escreveu:
> > > >> On Fri, 5 Sep 2014 12:44:02 -0300, Arnaldo Carvalho de Melo wrote:
> > > > Humm, take a look at machine__write_buildid_table() -> write_buildid(),
> > > > we already seem to set build_id_event.header.misc suitably, no?
> >  
> > > AFAIK the PERF_RECORD_MISC_KERNEL is set for both of kernel image and
> > > modules so we cannot distinguish a kernel from others (without checking
> > > names).
> > 
> > Ok, not perfect, but I think we improve the situation by using this
> > piece of information while looking if the file ends in .ko, in which
> > case we can mark it as a kernel module, if it doesn't end in .ko, we
> > have a kernel.
> > 
> > Better than today, probably good enough, no?
> 
> Yep, I'll check .ko suffix in v3.

Thanks!

> > > >> > That or to put the build-id into the synthesized kernel mmap
> > > >> > event. Which is better, because:

> > > >> > That leads to another problem that needs to get solved eventually: We
> > > >> > need to have the build-id into PERF_RECORD_MMAP, because we're now using
> > > >> > just the mmap filename as the key, not the contents, and for long
> > > >> > running sessions, DSOs can get updated, etc.
> > 
> > > >> But it'd require a realtime processing of events at record time.
> > 
> > > > Been there, done that, backtracked, yes, we can't do that at 'record
> > > > time', else we would be adding way too much noise to the recording
> > > > phase.
> > 
> > > > The idea is for the _kernel_ to do that, would take sizeof(buildid)
> > > > (about 20 bytes) on the per-DSO structure in the kernel.
> > 
> > > > When ELF loading it, stashing the contents of an ELF session
> > > > (.note.gnu.build-id) somewhere accessible at PERF_RECORD_MMAP3
> > > > generation time.
> > 
> > > > Doing that at the time we load the DSO from disk should add negligible
> > > > overhead.
> > 
> > > > With that we would not need to go over all the perf.data stream to
> > > > generate the build-id table after all record sessions, they would be at
> > > > the struct map already.
> >  
> > > Yes, it'll solve the problem and simplifies the perf record.  However I
> > > suspect it's not acceptable to keep such info in the kernel only for the
> > > sake of perf.
> > 
> > Hey, perf is a crucial part of development, even if it was the sole
> > user, I think this would be acceptable.
> > 
> > But this is not perf specific at all, any other tool that needs to map
> > from sample to a symtab _needs_ this, there is no other way to, on a
> > system with running apps and its libraries, to safely go from DSO
> > pathname to its corresponding binary.
> > 
> > Also this enables one to unambiguously describe a running environment
> > without packing tons of duplicated payloads for multiple workload runs,
> > be it for profiling or for any other problem characterization task.
> > 
> > And we have build-ids available for quite a while in all DSOs in the
> > system.
> > 
> > I bet gdb, systemtap, etc would be glad to use this if available.
> 
> Hmm.. okay then.  But IIUC kernel only knows about an executable (and
> dynamic linker) at load time not libraries as they're loaded by the
> linker.  So kernel needs to check whether a file is an ELF and has
> build-id for every file, right?

Yes, when it figures out it is an ELF file and invokes this DSO loading
routines, there is where we should insert the code that will read/store
the build id so that when we emit the PERF_RECORD_MMAP3 we can read it.
 
- Arnaldo

      reply	other threads:[~2014-09-19 16:48 UTC|newest]

Thread overview: 14+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2014-09-05  4:59 [PATCH v2] perf tools: Fix build-id matching on vmlinux Namhyung Kim
2014-09-05  7:22 ` Adrian Hunter
2014-09-05 14:11   ` Arnaldo Carvalho de Melo
2014-09-05 15:16     ` Namhyung Kim
2014-09-05 15:44       ` Arnaldo Carvalho de Melo
2014-09-07 20:24         ` Stephane Eranian
2014-09-08 13:38           ` Arnaldo Carvalho de Melo
2014-09-12  6:28             ` Namhyung Kim
2014-09-12  6:14         ` Namhyung Kim
2014-09-12 14:11           ` Arnaldo Carvalho de Melo
2014-09-19  6:26             ` Namhyung Kim
2014-09-19 14:16               ` Arnaldo Carvalho de Melo
2014-09-19 15:42                 ` Namhyung Kim
2014-09-19 16:48                   ` Arnaldo Carvalho de Melo [this message]

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=20140919164850.GD32694@kernel.org \
    --to=acme@kernel.org \
    --cc=a.p.zijlstra@chello.nl \
    --cc=adrian.hunter@intel.com \
    --cc=andi@firstfloor.org \
    --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 \
    --cc=stable@vger.kernel.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 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).