Re: [PATCH] tracing: Cleanup the convoluted softirq tracepoints

From: Steven Rostedt
Date: Tue Oct 19 2010 - 19:05:23 EST


On Tue, 2010-10-19 at 15:49 -0700, H. Peter Anvin wrote:
> On 10/19/2010 03:41 PM, Mathieu Desnoyers wrote:
> >>
> >> OK, first of all, there are some serious WTFs here:
> >>
> >> # define JUMP_LABEL_INITIAL_NOP ".byte 0xe9 \n\t .long 0\n\t"
> >>
> >> A jump instruction is one of the worst possible NOPs. Why are we doing
> >> this?
> >
> > This code is dynamically patched at boot time (and module load time) with a
> > better nop, just like the function tracer does.
> >
>
> That's just ridiculous... start out with something sane and you at least
> have the chance of not having to patch it.

Yep we can fix this. Jason?



> > So if we were executing tracepoints in a maze of jumps, we could argue that
> > instruction throughput is the most important there. However, if we expect the
> > common case to be surrounded by some non-ALU instructions, latency tends to
> > become the most important criterion.
> >
> > But I feel I might be missing something important that distinguish "jcc" from
> > "jmp".
>
> NOP has a latency of 0.5-1.0 cycle/insns, *but has no consumers*.
>
> JMP/Jcc does have a consumer -- the IP -- and actually measuring shows
> that it is much, much worse than NOP and other dummy instructions.

But how does JMP vs Jcc compare?

-- Steve


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