Re: Efficient x86 and x86_64 NOP microbenchmarks

Previous message: [thread] [date] [author]
Next message: [thread] [date] [author]
From: Andi Kleen
Date: Wednesday, August 13, 2008 - 11:41 am

> So microbenchmarking this way will probably make some things look 

Must be careful to miss the big picture here.

We have two assumptions here in this thread:

- Normal alternative() nops are relatively infrequent, typically
in points with enough pipeline bubbles anyways, and it likely doesn't
matter how they are encode. And also they don't have an issue
with mult part instructions anyways because they're not patched
at runtime, so always the best known can be used.

- The one case where nops are very frequent and matter and multipart
is a problem is with ftrace noping out the call to mcount at runtime 
because that happens on every function entry.
Even there the overhead is not that big, but at least measurable 
in kernel builds.

Now the numbers have shown that just by not using frame pointer (
-pg right now implies frame pointer) you can get more benefit 
than what you lose from using non optimal nops.

So for me the best strategy would be to get rid of the frame pointer
and ignore the nops. This unfortunately would require going away
from -pg and instead post process gcc output to insert "call mcount"
manually. But the nice advantage of that is that you could actually 
set up a custom table of callers built in a ELF section and with
that you don't actually need the runtime patching (which is only
done currently because there's no global table of mcount calls),
but could do everything in stop_machine(). Without
runtime patching you also don't need single part nops. 

I think that would be the best option. I especially like it because
it would prevent forcing frame pointer which seems to be costlier
than any kinds of nosp.

-Andi

--
Previous message: [thread] [date] [author]
Next message: [thread] [date] [author]

Messages in current thread:
[PATCH 0/5] ftrace: to kill a daemon, Steven Rostedt, (Thu Aug 7, 11:20 am)
Re: [PATCH 0/5] ftrace: to kill a daemon, Mathieu Desnoyers, (Thu Aug 7, 11:47 am)
Re: [PATCH 0/5] ftrace: to kill a daemon, Steven Rostedt, (Thu Aug 7, 1:42 pm)
Re: [PATCH 0/5] ftrace: to kill a daemon, Jeremy Fitzhardinge, (Thu Aug 7, 2:11 pm)
Re: [PATCH 0/5] ftrace: to kill a daemon, Steven Rostedt, (Thu Aug 7, 2:29 pm)
Re: [PATCH 0/5] ftrace: to kill a daemon, Roland McGrath, (Thu Aug 7, 3:26 pm)
Re: [PATCH 0/5] ftrace: to kill a daemon, Steven Rostedt, (Thu Aug 7, 6:21 pm)
Re: [PATCH 0/5] ftrace: to kill a daemon, Steven Rostedt, (Thu Aug 7, 6:24 pm)
Re: [PATCH 0/5] ftrace: to kill a daemon, Steven Rostedt, (Thu Aug 7, 6:56 pm)
Re: [PATCH 0/5] ftrace: to kill a daemon, Sam Ravnborg, (Thu Aug 7, 9:54 pm)
Re: [PATCH 0/5] ftrace: to kill a daemon, Peter Zijlstra, (Fri Aug 8, 12:22 am)
Re: [PATCH 0/5] ftrace: to kill a daemon, Steven Rostedt, (Fri Aug 8, 4:31 am)
Re: [PATCH 0/5] ftrace: to kill a daemon, Mathieu Desnoyers, (Fri Aug 8, 10:22 am)
Re: [PATCH 0/5] ftrace: to kill a daemon, Steven Rostedt, (Fri Aug 8, 10:36 am)
Re: [PATCH 0/5] ftrace: to kill a daemon, Mathieu Desnoyers, (Fri Aug 8, 10:46 am)
Re: [PATCH 0/5] ftrace: to kill a daemon, Steven Rostedt, (Fri Aug 8, 11:13 am)
Re: [PATCH 0/5] ftrace: to kill a daemon, Peter Zijlstra, (Fri Aug 8, 11:15 am)
Re: [PATCH 0/5] ftrace: to kill a daemon, Mathieu Desnoyers, (Fri Aug 8, 11:21 am)
Re: [PATCH 0/5] ftrace: to kill a daemon, Steven Rostedt, (Fri Aug 8, 11:41 am)
Re: [PATCH 0/5] ftrace: to kill a daemon, Linus Torvalds, (Fri Aug 8, 12:04 pm)
Re: [PATCH 0/5] ftrace: to kill a daemon, Mathieu Desnoyers, (Fri Aug 8, 12:05 pm)
Re: [PATCH 0/5] ftrace: to kill a daemon, Jeremy Fitzhardinge, (Fri Aug 8, 12:08 pm)
Re: [PATCH 0/5] ftrace: to kill a daemon, Steven Rostedt, (Fri Aug 8, 4:38 pm)
Re: [PATCH 0/5] ftrace: to kill a daemon, Andi Kleen, (Fri Aug 8, 5:23 pm)
Re: [PATCH 0/5] ftrace: to kill a daemon, Steven Rostedt, (Fri Aug 8, 5:30 pm)
Re: [PATCH 0/5] ftrace: to kill a daemon, Steven Rostedt, (Fri Aug 8, 5:36 pm)
Re: [PATCH 0/5] ftrace: to kill a daemon, Jeremy Fitzhardinge, (Fri Aug 8, 5:47 pm)
Re: [PATCH 0/5] ftrace: to kill a daemon, Linus Torvalds, (Fri Aug 8, 5:51 pm)
Re: [PATCH 0/5] ftrace: to kill a daemon, Steven Rostedt, (Fri Aug 8, 5:51 pm)
Re: [PATCH 0/5] ftrace: to kill a daemon, Roland McGrath, (Fri Aug 8, 5:53 pm)
Re: [PATCH 0/5] ftrace: to kill a daemon, Andi Kleen, (Fri Aug 8, 6:13 pm)
Re: [PATCH 0/5] ftrace: to kill a daemon, Andi Kleen, (Fri Aug 8, 6:19 pm)
Re: [PATCH 0/5] ftrace: to kill a daemon, Steven Rostedt, (Fri Aug 8, 6:25 pm)
Re: [PATCH 0/5] ftrace: to kill a daemon, Steven Rostedt, (Fri Aug 8, 6:30 pm)
Re: [PATCH 0/5] ftrace: to kill a daemon, Andi Kleen, (Fri Aug 8, 6:55 pm)
Re: [PATCH 0/5] ftrace: to kill a daemon, Steven Rostedt, (Fri Aug 8, 7:03 pm)
Re: [PATCH 0/5] ftrace: to kill a daemon, Andi Kleen, (Fri Aug 8, 7:23 pm)
Re: [PATCH 0/5] ftrace: to kill a daemon, Steven Rostedt, (Fri Aug 8, 9:12 pm)
Re: [PATCH 0/5] ftrace: to kill a daemon, Abhishek Sagar, (Sat Aug 9, 2:48 am)
Re: [PATCH 0/5] ftrace: to kill a daemon, Steven Rostedt, (Sat Aug 9, 6:01 am)
Re: [PATCH 0/5] ftrace: to kill a daemon, Abhishek Sagar, (Sat Aug 9, 8:01 am)
Re: [PATCH 0/5] ftrace: to kill a daemon, Steven Rostedt, (Sat Aug 9, 8:37 am)
Re: [PATCH 0/5] ftrace: to kill a daemon, Abhishek Sagar, (Sat Aug 9, 10:14 am)
Re: [PATCH 0/5] ftrace: to kill a daemon, Rusty Russell, (Sun Aug 10, 7:41 pm)
Re: [PATCH 0/5] ftrace: to kill a daemon, Steven Rostedt, (Mon Aug 11, 5:33 am)
Re: [PATCH 0/5] ftrace: to kill a daemon, Mathieu Desnoyers, (Mon Aug 11, 11:21 am)
Re: [PATCH 0/5] ftrace: to kill a daemon, Steven Rostedt, (Mon Aug 11, 12:28 pm)
Re: [PATCH 0/5] ftrace: to kill a daemon, Mathieu Desnoyers, (Tue Aug 12, 11:31 pm)
Re: [PATCH 0/5] ftrace: to kill a daemon, Mathieu Desnoyers, (Wed Aug 13, 8:38 am)
Efficient x86 and x86_64 NOP microbenchmarks, Mathieu Desnoyers, (Wed Aug 13, 10:52 am)
Re: Efficient x86 and x86_64 NOP microbenchmarks, Linus Torvalds, (Wed Aug 13, 11:27 am)
Re: Efficient x86 and x86_64 NOP microbenchmarks, Andi Kleen, (Wed Aug 13, 11:41 am)
Re: Efficient x86 and x86_64 NOP microbenchmarks, Avi Kivity, (Wed Aug 13, 11:45 am)
Re: Efficient x86 and x86_64 NOP microbenchmarks, Andi Kleen, (Wed Aug 13, 11:51 am)
Re: Efficient x86 and x86_64 NOP microbenchmarks, Avi Kivity, (Wed Aug 13, 11:56 am)
Re: Efficient x86 and x86_64 NOP microbenchmarks, Mathieu Desnoyers, (Wed Aug 13, 12:16 pm)
Re: Efficient x86 and x86_64 NOP microbenchmarks, Mathieu Desnoyers, (Wed Aug 13, 12:30 pm)
Re: Efficient x86 and x86_64 NOP microbenchmarks, Andi Kleen, (Wed Aug 13, 12:37 pm)
Re: Efficient x86 and x86_64 NOP microbenchmarks, Mathieu Desnoyers, (Wed Aug 13, 1:01 pm)
[RFC PATCH] x86 alternatives : fix LOCK_PREFIX race with p ..., Mathieu Desnoyers, (Wed Aug 13, 4:41 pm)
Re: [RFC PATCH] x86 alternatives : fix LOCK_PREFIX race wi ..., Mathieu Desnoyers, (Wed Aug 13, 6:13 pm)
Re: [RFC PATCH] x86 alternatives : fix LOCK_PREFIX race wi ..., Jeremy Fitzhardinge, (Wed Aug 13, 6:22 pm)
Re: [RFC PATCH] x86 alternatives : fix LOCK_PREFIX race wi ..., Mathieu Desnoyers, (Wed Aug 13, 6:49 pm)
Re: [RFC PATCH] x86 alternatives : fix LOCK_PREFIX race wi ..., Jeremy Fitzhardinge, (Wed Aug 13, 8:35 pm)
Re: [RFC PATCH] x86 alternatives : fix LOCK_PREFIX race wi ..., Mathieu Desnoyers, (Thu Aug 14, 8:18 am)
Re: [RFC PATCH] x86 alternatives : fix LOCK_PREFIX race wi ..., Mathieu Desnoyers, (Thu Aug 14, 9:58 am)
Re: [RFC PATCH] x86 alternatives : fix LOCK_PREFIX race wi ..., Jeremy Fitzhardinge, (Thu Aug 14, 10:04 am)
Re: [RFC PATCH] x86 alternatives : fix LOCK_PREFIX race wi ..., Jeremy Fitzhardinge, (Thu Aug 14, 10:05 am)
Re: [RFC PATCH] x86 alternatives : fix LOCK_PREFIX race wi ..., Jeremy Fitzhardinge, (Thu Aug 14, 10:28 am)
Re: [RFC PATCH] x86 alternatives : fix LOCK_PREFIX race wi ..., Mathieu Desnoyers, (Thu Aug 14, 10:30 am)
Re: [RFC PATCH] x86 alternatives : fix LOCK_PREFIX race wi ..., Jeremy Fitzhardinge, (Thu Aug 14, 10:43 am)
Re: [RFC PATCH] x86 alternatives : fix LOCK_PREFIX race wi ..., Mathieu Desnoyers, (Thu Aug 14, 10:46 am)
Re: [RFC PATCH] x86 alternatives : fix LOCK_PREFIX race wi ..., Jeremy Fitzhardinge, (Thu Aug 14, 10:49 am)
Re: [RFC PATCH] x86 alternatives : fix LOCK_PREFIX race wi ..., Mathieu Desnoyers, (Thu Aug 14, 10:55 am)
Re: [RFC PATCH] x86 alternatives : fix LOCK_PREFIX race wi ..., Mathieu Desnoyers, (Thu Aug 14, 11:09 am)
Re: [RFC PATCH] x86 alternatives : fix LOCK_PREFIX race wi ..., Mathieu Desnoyers, (Thu Aug 14, 11:53 am)
Re: [RFC PATCH] x86 alternatives : fix LOCK_PREFIX race wi ..., Jeremy Fitzhardinge, (Thu Aug 14, 12:29 pm)
Re: [RFC PATCH] x86 alternatives : fix LOCK_PREFIX race wi ..., Mathieu Desnoyers, (Thu Aug 14, 12:49 pm)
Re: [RFC PATCH] x86 alternatives : fix LOCK_PREFIX race wi ..., Mathieu Desnoyers, (Thu Aug 14, 1:31 pm)
Re: [RFC PATCH] x86 alternatives : fix LOCK_PREFIX race wi ..., Jeremy Fitzhardinge, (Thu Aug 14, 2:46 pm)
Re: Efficient x86 and x86_64 NOP microbenchmarks, Steven Rostedt, (Fri Aug 15, 2:34 pm)
Re: Efficient x86 and x86_64 NOP microbenchmarks, Andi Kleen, (Fri Aug 15, 2:51 pm)