Re: [BUG] msr-trace.h:42 suspicious rcu_dereference_check() usage!

From: Steven Rostedt
Date: Mon Nov 21 2016 - 13:22:30 EST


On Mon, 21 Nov 2016 10:06:54 -0800
Andi Kleen <andi@xxxxxxxxxxxxxx> wrote:

> > And a popf can be much more expensive than any of these. You should
> > know, not all instructions are equal.
> >
> > Using perf, I've seen popf take up almst 30% of a function the size of
> > this.
>
> In any case it's a small fraction of the 600+ instructions which are currently
> executed for every enabled trace point.
>
> If ftrace was actually optimized code this would make some sense, but it
> clearly isn't ...

It tries to be optimized. I "unoptimized" it a while back to pull out
all the inlines that were done in the tracepoint itself. That is, the
trace_<tracepoint>() function is inlined in the code itself. By
breaking that up a bit, I was able to save a bunch of text because the
tracepoints were bloating the kernel tremendously.

There can be more optimization done too. But just because it's not
optimized to the best it can be (which should be our goal) is not
excuse to bloat it more with popf!

-- Steve