tracedump -> libapitrace + tracedump

José Fonseca jose.r.fonseca at gmail.com
Tue Sep 6 17:29:38 PDT 2011


On Tue, Sep 6, 2011 at 6:17 PM, Alon Levy <alevy at redhat.com> wrote:
> Hi,
>
>  Recently you removed the python tracedumper in favor of maitaing a single
> dump format parsing code base. I think that's a good decision. However, I
> find python writing much easier, so I was thinking of keeping the
> one-code-base idea by splitting tracedump into a library for reading the dump
> (with a C api for easy reuse by python runtime for instance) and having
> tracedump use that. Performance should not be affected. Would a patch like
> this be accepted?

Hi Alon,

Thanks for your feedback and interest.

I have the same feeling towards Python, and I think that exposing the
ability to parse traces to python via an extension module would be
nice.  I'd accept such patch, but beware to not over-engineering such
bindings:

- they must have relatively low-maintenance overhead, or they will
eventually face the same fate as the python trace parsing code
(delete/reverted after getting broken by a major feature elsewhere)

- in particular, maintaining a C API (as opposed to C++) seems a
distraction if the end goal is to operate with Python

- from my experience, Python was extremely slow just to walk over a
big trace directly, so even if you succeed all the above, it's still
difficult to write more than mere proof-of-concept
trace-manipulating-tools in python

Another approach worth considering, is to add support to tracedump to
write every call/arg in JSON format (or another ubiquitous
machine-parseble format), and then base upon that to implement parsing
traces in Python. Essentially, that achieves full flexibility of
python scripting language, without worrying about the re-implementing
trace binary parsing, at the expense of a relative performance
reduction. We could add further tracedump options to grep only
calls/frames of interest. This also has the extra bonus that it could
be easily used by other languages too.


Jose


More information about the apitrace mailing list