Re: heads up/RFC: 'perf trace' using ordered_events

From: Arnaldo Carvalho de Melo
Date: Mon Mar 09 2015 - 09:21:37 EST


Em Sat, Mar 07, 2015 at 02:45:24PM +0200, Adrian Hunter escreveu:
> On 4/03/2015 3:07 a.m., Arnaldo Carvalho de Melo wrote:
> >Em Wed, Mar 04, 2015 at 10:01:23AM +0900, Namhyung Kim escreveu:
> >>On Tue, Mar 03, 2015 at 01:49:40PM -0300, Arnaldo Carvalho de Melo wrote:
> >>> Just a preview, but this is something David had mentioned at some
> >>>point, a major problem with 'perf trace' was that it wasn't using
> >>>'perf_session' event reordering mechanism, so I've been working on making it
> >>>use it, refactoring the ordered_events code so that it can be used by tools
> >>>that don't deal with perf.data files.

> >>At a conceptual level, I think event processing should be done with
> >>session. Even if perf trace does not do anything with a data file it
> >>can have a (live) session like perf top does. This way we can avoid

> >perf top is another one I want to move away from perf_session, as it
> >doesn't use any perf.data file, but needs to have events ordered.

> >But then I really need to look at what you done in your patchset,
> >probably I am missing something (or a lot).

> The change appears to conflict substantially with the patches I have for
> adding instruction tracing support. I will send them again soon, so you
> can see what I mean.

Ok, I'll check your patchkit

> My first thought would be that iterating over events from an event
> source would be the natural abstraction which would not differentiate
> from where the events came. i.e. it should not matter if the back end
> is a perf.data file, pipe, or mmap.

> Generally there is a need for a top level data structure. It avoids having
> to use global variables and reduces the number of parameters that get
> passed around.

I agree with that, that is why perf_session was introduced in the first
place :-)

But that was long ago, when the main use case was for processing
perf.data files, as time went on it was being stuffed with many other
things.

What I've been trying to do is to better separate those things into
multiple classes, so that tools can use parts of it as they see fit.

My recent work on ordered_samples was with the intent of using that
reordering class in 'trace', but as I went on doing that I think it is
too tied to the design of perf.data, with its shortcomings.

And then I've been trying to do it in a way that the existing API isn't
changed too much, keeping assumptions existing tools have.

For trace I need to take advantage of the fact that each mmap is ordered
already and then just sort by the timestamp in the mmap head, etc.

In retrospect, the perf.data file should have kept that ordering, i.e.
have one file per mmap, that would be saved in parallel, without any of
those PERF_RECORD_FINISHED_ROUND records.

But I have to experiment with that, leaving the existing code around to
deal with older files.

- Arnaldo
--
To unsubscribe from this list: send the line "unsubscribe linux-kernel" in
the body of a message to majordomo@xxxxxxxxxxxxxxx
More majordomo info at http://vger.kernel.org/majordomo-info.html
Please read the FAQ at http://www.tux.org/lkml/