Re: [PATCH 1/4] tracing: move __DO_TRACE out of line

Mathieu Desnoyers
2009-04-17T16:10:27Z

* Ingo Molnar (mingo@elte.hu) wrote:
>
> * Jeremy Fitzhardinge <jeremy@goop.org> wrote:
>
> > From: Jeremy Fitzhardinge <jeremy.fitzhardinge@citrix.com>
> >
> > Mainly simplify linux/tracepoint.h's include dependencies (removes
> > rcupdate.h), but it can't help with icache locality, since it
> > definitely moves the code out of line, rather than relying on gcc
> > to do it.
>
> > --- a/include/linux/tracepoint.h
> > +++ b/include/linux/tracepoint.h
> > @@ -15,7 +15,6 @@
> > */
> >
> > #include <linux/types.h>
> > -#include <linux/rcupdate.h>
>
> nice!
>
> > +#define DEFINE_DO_TRACE(name, proto, args) \
> > + void __do_trace_##name(struct tracepoint *tp, TP_PROTO(proto)) \
> > + { \
>
> that needs to be marked notrace, otherwise the function tracer
> becomes noisy. (or even lockupy.)
>

I guess I'll have to put it more clearly : I am all for minimizing
tracepoint header dependency, but I'll be nacking this kind of
out-of-lining patch. Taking a function call, and moving it out-of-line
(thus duplicating the function call for nothing) seems *really*
pointless and will hurt tracer performance.

If thread_info.h is now so big that it needs a cleanup, I guess we'll
just have to do it.

Mathieu

> Ingo

--
Mathieu Desnoyers
OpenPGP key fingerprint: 8CD5 52C3 8E3C 4140 715F BA06 3F25 A8FE 3BAE 9A68