Re: [RFC/PATCH 00/14] perf record: Add support to store data in directory

From: Stephane Eranian
Date: Thu Feb 14 2019 - 16:31:13 EST


On Thu, Feb 14, 2019 at 6:00 AM Arnaldo Carvalho de Melo
<acme@xxxxxxxxxx> wrote:
>
> Em Thu, Feb 14, 2019 at 02:26:38PM +0100, Jiri Olsa escreveu:
> > On Thu, Feb 14, 2019 at 09:57:59AM -0300, Arnaldo Carvalho de Melo wrote:
> > > But with the build id in the MMAPs we wouldn't need to scan anything at
> > > 'perf record' time, just at 'perf archive' time, where we would scan
> > > everything, and as soon as we find a hit, we add that DSO to the list of
> > > things we need to put in the tarball.
>
> > ok.. it might little change the expected behavour in that you will not
> > have .debug cache populated until you run perf archive.. some profile
> > data might stop report after you reinstall the binary..
>
Today perf record does collect the buildids once monitor is completed,
it does one
pass over the perf.data file looking for MMAP records, or at least in
the version I am
more familiar with.

> Well, nothing prevents us from continuing to, in 'perf record', go thru
> the perf.data just collected to populate the .debug cache, its just that
> we would do it just for that, for populating the cache, we wouldn't
> _have_ to do that for collecting the buildids.

Sure, for compatibility reasons.
In pipe mode, this would also avoid the need for perf inject -b -i -,
which is a win.

perf archive is useful if you do not have a way to locate the binary using only
the buildid on the analysis machine.
>
> > on the other hand '.debug' cache would stop growing uncontrolably..
> > so I think I'd be ok with this
>
I agree!

> That is another problem, and one that has to be solved in a way similar
> to ccache's --max-size option.
>
> The .debug cache is useful for various workflows, but may get in the way
> for some others, which is why we have ways to disable it.
>
Correct.

> For instance, when working on some project it is handy to have copies of
> binaries saved so that older perf.data files can find a file that was
> rewritten by the compiler when doing changes in it, etc.
>
> With the .debug cache and if using -g, we can get the older copy of the
> binary _and_ its sources, annotation for older versions continue to
> work, etc.
>
> - Arnaldo