Re: [RFC][PATCH 0/9] perf trace: support for general-purposescripting

From: Ingo Molnar
Date: Tue Oct 06 2009 - 08:55:53 EST



* Frédéric Weisbecker <fweisbec@xxxxxxxxx> wrote:

> 2009/10/6 Tom Zanussi <tzanussi@xxxxxxxxx>:
> > Hi,
> >
> > This patchset defines a generic interface for processing the binary
> > output of 'perf trace' and making it directly available to
> > user-defined scripts written in general-purpose scripting languages
> > such as Perl or Python.  It also builds a general-purpose Perl
> > scripting trace processor on top of the new interface and provides a
> > few example scripts that exercise the basic functionality.
> >
> > The main motivation behind it is to provide a more efficient and
> > powerful alternative to the popular method of parsing the ascii trace
> > output in order to extract useful information from it.  To avoid the
> > overhead and complexity of all that, this patchset provides a
> > direct-to-script-interpreter pathway for doing the same thing, but in
> > a more regularized fashion, one that takes advantage of all the event
> > meta-info provided by the tracing infrustructure, such as the
> > event/field info contained in the 'format files' designed for that
> > purpose.
>
>
> That's really a great thing! I was also hesitating to implement a
> python interface to perf in order to quickly plug post processing
> tools. But your patchset does that in a much more generic way that I
> imagined: we can support other languages, we have well defined
> callbacks to process the events...
>
> Really nice, I hope we can give it a try in -tip soon.

Agreed! There's a few details to be improved and the license needs to be
kernel compatible but all in one, this is really great stuff! Ad-hoc
scripting based on the binary data stream is a quite powerful concept
IMO.

We might be able to inject more complete data structures into the
scripting space as well in the future, if the C side grows them. I.e. we
could have a healthy mixture of fast C code that provides not just a
dumb stream of records but also metadata and higher level data
structures, plus scripting.

One open question would be compatibility. I think initially we dont want
to provide format guarantees and script guarantees - this area is still
too fluid to pin down random details.

Ingo
--
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/