From: Thomas Gleixner <tglx@linutronix.de>
To: Steven Rostedt <rostedt@goodmis.org>
Cc: Mathieu Desnoyers <mathieu.desnoyers@efficios.com>,
Koki Sanagi <sanagi.koki@jp.fujitsu.com>,
Peter Zijlstra <peterz@infradead.org>,
Ingo Molnar <mingo@elte.hu>,
Frederic Weisbecker <fweisbec@gmail.com>,
nhorman@tuxdriver.com, scott.a.mcmillan@intel.com,
laijs@cn.fujitsu.com, "H. Peter Anvin" <hpa@zytor.com>,
LKML <linux-kernel@vger.kernel.org>,
eric.dumazet@gmail.com, kaneshige.kenji@jp.fujitsu.com,
David Miller <davem@davemloft.net>,
izumi.taku@jp.fujitsu.com, kosaki.motohiro@jp.fujitsu.com,
Heiko Carstens <heiko.carstens@de.ibm.com>,
"Luck, Tony" <tony.luck@intel.com>
Subject: Re: [PATCH] tracing: Cleanup the convoluted softirq tracepoints
Date: Wed, 20 Oct 2010 00:04:31 +0200 (CEST) [thread overview]
Message-ID: <alpine.LFD.2.00.1010192359480.6815@localhost6.localdomain6> (raw)
In-Reply-To: <1287523439.16971.433.camel@gandalf.stny.rr.com>
On Tue, 19 Oct 2010, Steven Rostedt wrote:
> On Tue, 2010-10-19 at 23:07 +0200, Thomas Gleixner wrote:
> > On Tue, 19 Oct 2010, Steven Rostedt wrote:
> > > On Tue, 2010-10-19 at 21:49 +0200, Thomas Gleixner wrote:
> > > > So that saves _TWO_ bytes of text and replaces:
> > > >
> > > > - 1e: 83 3d 00 00 00 00 00 cmpl $0x0,0x0(%rip) # 25 <test+0x25>
> > > > - 25: 74 4d je 74 <test+0x74>
> > > > + 1e: e9 00 00 00 00 jmpq 23 <test+0x23>
> > > > + 23: eb 4d jmp 72 <test+0x72>
> > > >
> > > > So it trades a conditional vs. two jumps ? WTF ??
> > >
> > > Well, the one jmpq is noped out, and the jmp is non conditional. I've
> >
> > What are you smoking ?
>
> What? Are you saying that conditional jumps are just as fast as non
> conditional ones?
>
> >
> > In case the trace point is enabled the jmpq is there, so it jumps to
> > 23 and jumps from there to 72.
>
> No, when we dynamically enable the tracepoint, it will jump to 25, not
> 23. That's what the goto part is about. We add the do_trace label to the
> table, and we make it point to that location. If we did it as you say,
> then tracepoints would never be enabled.
>
> This is not unlike what we do with the function tracer. The original
> code points to mcount which simply is:
>
> mcount:
> retq
>
> And when we enable the callers, we have it jump to a different function.
>
> >
> > In case the trace point is disabled the jmpq is noped out, so it jumps
> > to 72 directly.
>
> That is correct.
>
> >
> > > always thought a non conditional jmp was faster than a conditional one,
> >
> > I always thought, that at least some of the stuff which comes from
> > tracing folks makes some sense.
>
> Is it still not making sense?
>
> >
> > > since there's no need to go into the branch prediction logic. The CPU
> > > can simply skip to the code to jump next. Of counse, this pollutes the
> > > I$.
> >
> > We might consult Mathieu for further useless blurb on how CPUs work
> > around broken code.
>
> The code worked fine before, it just was not very pretty.
>
> But it seemed that gcc for you inlined the code in the wrong spot.
> Perhaps it's not a good idea to have the something like h - softirq_vec
> in the parameter of the tracepoint. Not saying that your change is not
> worth it. It is, because h - softirq_vec is used by others now too.
Crap, crap, crap. This has nothing to do with the arguments of that
trace point, it's a compiler problem and you are just hoping that GCC
will do the right thing.
That's the complete wrong assumption and as Jason confirmed GCC is not
up to it at all.
hpa just posted code which does the _RIGHT_ _THING_ independent of any
compiler madness and you tracer folks just missed it.
Your jump label optimization made code even worse for todays common
compilers. Just admit it and fix that mess you created or simply
disable it.
Thanks,
tglx
next prev parent reply other threads:[~2010-10-19 22:05 UTC|newest]
Thread overview: 93+ messages / expand[flat|nested] mbox.gz Atom feed top
2010-08-23 9:41 [PATCH v4 0/5] netdev: show a process of packets Koki Sanagi
2010-08-23 9:42 ` [PATCH v4 1/5] irq: add tracepoint to softirq_raise Koki Sanagi
2010-09-03 15:29 ` Frederic Weisbecker
2010-09-03 15:39 ` Steven Rostedt
2010-09-03 15:42 ` Frederic Weisbecker
2010-09-03 15:43 ` Steven Rostedt
2010-09-03 15:50 ` Frederic Weisbecker
2010-09-06 1:46 ` Koki Sanagi
2010-09-08 8:33 ` [tip:perf/core] irq: Add " tip-bot for Lai Jiangshan
2010-09-08 11:25 ` [sparc build bug] " Ingo Molnar
2010-09-08 12:26 ` [PATCH] irq: Fix circular headers dependency Frederic Weisbecker
2010-09-09 19:54 ` [tip:perf/core] " tip-bot for Frederic Weisbecker
2010-10-18 9:44 ` [sparc build bug] Re: [tip:perf/core] irq: Add tracepoint to softirq_raise Peter Zijlstra
2010-10-18 10:11 ` Peter Zijlstra
2010-10-18 10:26 ` Heiko Carstens
2010-10-18 10:48 ` Peter Zijlstra
2010-10-19 10:58 ` Koki Sanagi
2010-10-19 11:25 ` Peter Zijlstra
2010-10-19 13:00 ` [PATCH] tracing: Cleanup the convoluted softirq tracepoints Thomas Gleixner
2010-10-19 13:08 ` Peter Zijlstra
2010-10-19 13:22 ` Mathieu Desnoyers
2010-10-19 13:41 ` Thomas Gleixner
2010-10-19 13:54 ` Steven Rostedt
2010-10-19 14:07 ` Thomas Gleixner
2010-10-19 14:28 ` Mathieu Desnoyers
2010-10-19 19:49 ` Thomas Gleixner
2010-10-19 20:55 ` Steven Rostedt
2010-10-19 21:07 ` Thomas Gleixner
2010-10-19 21:23 ` Steven Rostedt
2010-10-19 21:48 ` H. Peter Anvin
2010-10-19 22:23 ` Steven Rostedt
2010-10-19 22:26 ` H. Peter Anvin
2010-10-19 22:27 ` Peter Zijlstra
2010-10-19 23:39 ` H. Peter Anvin
2010-10-19 23:45 ` Steven Rostedt
2010-10-20 0:43 ` Jason Baron
2010-10-19 22:41 ` Mathieu Desnoyers
2010-10-19 22:49 ` H. Peter Anvin
2010-10-19 23:05 ` Steven Rostedt
2010-10-19 23:09 ` H. Peter Anvin
2010-10-20 15:27 ` Jason Baron
2010-10-20 15:41 ` Mathieu Desnoyers
2010-10-25 21:54 ` H. Peter Anvin
2010-10-25 22:01 ` Mathieu Desnoyers
2010-10-25 22:12 ` H. Peter Anvin
2010-10-25 22:19 ` H. Peter Anvin
2010-10-25 22:55 ` Mathieu Desnoyers
2010-10-26 0:39 ` Steven Rostedt
2010-10-26 1:14 ` Mathieu Desnoyers
2010-10-19 22:04 ` Thomas Gleixner [this message]
2010-10-19 22:33 ` Steven Rostedt
2010-10-21 16:18 ` Thomas Gleixner
2010-10-21 17:05 ` Steven Rostedt
2010-10-21 19:56 ` Thomas Gleixner
2010-10-25 22:31 ` H. Peter Anvin
2010-10-19 21:45 ` Thomas Gleixner
2010-10-19 22:14 ` Steven Rostedt
2010-10-19 21:16 ` David Daney
2010-10-19 21:32 ` Jason Baron
2010-10-19 21:38 ` David Daney
2010-10-19 21:47 ` Steven Rostedt
2010-10-19 21:28 ` Jason Baron
2010-10-19 21:55 ` Thomas Gleixner
2010-10-19 22:17 ` Thomas Gleixner
2010-10-20 1:36 ` Steven Rostedt
2010-10-20 1:52 ` Jason Baron
2010-10-25 22:32 ` H. Peter Anvin
2010-10-19 22:38 ` Jason Baron
2010-10-19 22:44 ` H. Peter Anvin
2010-10-19 22:56 ` Steven Rostedt
2010-10-19 22:57 ` H. Peter Anvin
2010-10-19 14:46 ` Steven Rostedt
2010-10-19 14:00 ` Mathieu Desnoyers
2010-10-21 14:52 ` [tip:perf/core] " tip-bot for Thomas Gleixner
2010-08-23 9:43 ` [PATCH v4 2/5] napi: convert trace_napi_poll to TRACE_EVENT Koki Sanagi
2010-08-24 3:52 ` David Miller
2010-09-08 8:34 ` [tip:perf/core] napi: Convert " tip-bot for Neil Horman
2010-08-23 9:45 ` [PATCH v4 3/5] netdev: add tracepoints to netdev layer Koki Sanagi
2010-08-24 3:53 ` David Miller
2010-09-08 8:34 ` [tip:perf/core] netdev: Add " tip-bot for Koki Sanagi
2010-08-23 9:46 ` [PATCH v4 4/5] skb: add tracepoints to freeing skb Koki Sanagi
2010-08-24 3:53 ` David Miller
2010-09-08 8:35 ` [tip:perf/core] skb: Add " tip-bot for Koki Sanagi
2010-08-23 9:47 ` [PATCH v4 5/5] perf:add a script shows a process of packet Koki Sanagi
2010-08-24 3:53 ` David Miller
2010-09-07 16:57 ` Frederic Weisbecker
2010-09-08 8:35 ` [tip:perf/core] perf: Add a script to show packets processing tip-bot for Koki Sanagi
2010-08-30 23:50 ` [PATCH v4 0/5] netdev: show a process of packets Steven Rostedt
2010-09-03 2:10 ` Koki Sanagi
2010-09-03 2:17 ` David Miller
2010-09-03 2:55 ` Koki Sanagi
2010-09-03 4:46 ` Frederic Weisbecker
2010-09-03 5:12 ` Koki Sanagi
Reply instructions:
You may reply publicly to this message via plain-text email
using any one of the following methods:
* Save the following mbox file, import it into your mail client,
and reply-to-all from there: mbox
Avoid top-posting and favor interleaved quoting:
https://en.wikipedia.org/wiki/Posting_style#Interleaved_style
* Reply using the --to, --cc, and --in-reply-to
switches of git-send-email(1):
git send-email \
--in-reply-to=alpine.LFD.2.00.1010192359480.6815@localhost6.localdomain6 \
--to=tglx@linutronix.de \
--cc=davem@davemloft.net \
--cc=eric.dumazet@gmail.com \
--cc=fweisbec@gmail.com \
--cc=heiko.carstens@de.ibm.com \
--cc=hpa@zytor.com \
--cc=izumi.taku@jp.fujitsu.com \
--cc=kaneshige.kenji@jp.fujitsu.com \
--cc=kosaki.motohiro@jp.fujitsu.com \
--cc=laijs@cn.fujitsu.com \
--cc=linux-kernel@vger.kernel.org \
--cc=mathieu.desnoyers@efficios.com \
--cc=mingo@elte.hu \
--cc=nhorman@tuxdriver.com \
--cc=peterz@infradead.org \
--cc=rostedt@goodmis.org \
--cc=sanagi.koki@jp.fujitsu.com \
--cc=scott.a.mcmillan@intel.com \
--cc=tony.luck@intel.com \
/path/to/YOUR_REPLY
https://kernel.org/pub/software/scm/git/docs/git-send-email.html
* If your mail client supports setting the In-Reply-To header
via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line
before the message body.
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox
all inboxes | Powered by JetHome®