* [PATCH] Only process_die notifier in ia64_do_page_fault if KPROBES
@ 2005-08-25 20:14 Christoph Lameter
2005-08-30 23:05 ` [PATCH] Only process_die notifier in ia64_do_page_fault if KPROBES is configured Luck, Tony
0 siblings, 1 reply; 8+ messages in thread
From: Christoph Lameter @ 2005-08-25 20:14 UTC (permalink / raw)
To: linux-ia64; +Cc: linux-mm, prasanna
ia64_do_page_fault is a path critical for system performance. The code to call
notify_die() should not be compiled into that critical path if the system
is not configured to use KPROBES.
Signed-off-by: Christoph Lameter <clameter@sgi.com>
Index: linux-2.6.13-rc7/arch/ia64/mm/fault.c
=================================--- linux-2.6.13-rc7.orig/arch/ia64/mm/fault.c 2005-08-23 20:39:14.000000000 -0700
+++ linux-2.6.13-rc7/arch/ia64/mm/fault.c 2005-08-25 13:04:57.000000000 -0700
@@ -103,12 +103,16 @@ ia64_do_page_fault (unsigned long addres
goto bad_area_no_up;
#endif
+#ifdef CONFIG_KPROBES
/*
- * This is to handle the kprobes on user space access instructions
+ * This is to handle the kprobes on user space access instructions.
+ * This is a path criticial for system performance. So only
+ * process this notifier if we are compiled with kprobes support.
*/
if (notify_die(DIE_PAGE_FAULT, "page fault", regs, code, TRAP_BRKPT,
SIGSEGV) = NOTIFY_STOP)
return;
+#endif
down_read(&mm->mmap_sem);
^ permalink raw reply [flat|nested] 8+ messages in thread
* Re: [PATCH] Only process_die notifier in ia64_do_page_fault if
2005-08-30 0:19 ` Rusty Lynch
@ 2005-08-30 3:28 ` Christoph Lameter
2005-08-30 11:18 ` [PATCH] Only process_die notifier in ia64_do_page_fault if KPROBES is configured Matthew Wilcox
1 sibling, 0 replies; 8+ messages in thread
From: Christoph Lameter @ 2005-08-30 3:28 UTC (permalink / raw)
To: Rusty Lynch
Cc: Andi Kleen, Rusty Lynch, linux-mm, prasanna, linux-ia64,
linux-kernel, anil.s.keshavamurthy
On Mon, 29 Aug 2005, Rusty Lynch wrote:
> So, assuming inlining the notifier_call_chain would address Christoph's
> conserns, is the following patch something like what you are sugesting?
> This would make all the kdebug.h::notify_die() calls use the inline version.
Please do not generate any code if the feature cannot ever be
used (CONFIG_KPROBES off). With this patch we still have lots of
unnecessary code being executed on each page fault.
^ permalink raw reply [flat|nested] 8+ messages in thread
* RE: [PATCH] Only process_die notifier in ia64_do_page_fault if KPROBES is configured.
2005-08-25 20:14 [PATCH] Only process_die notifier in ia64_do_page_fault if KPROBES Christoph Lameter
@ 2005-08-30 23:05 ` Luck, Tony
2005-08-30 23:38 ` Andi Kleen
0 siblings, 1 reply; 8+ messages in thread
From: Luck, Tony @ 2005-08-30 23:05 UTC (permalink / raw)
To: Christoph Lameter, Rusty Lynch
Cc: Andi Kleen, Lynch, Rusty, linux-mm, prasanna, linux-ia64,
linux-kernel, Keshavamurthy, Anil S
>Please do not generate any code if the feature cannot ever be
>used (CONFIG_KPROBES off). With this patch we still have lots of
>unnecessary code being executed on each page fault.
I can (eventually) wrap this call inside the #ifdef CONFIG_KPROBES.
But I'd like to keep following leads on making the overhead as
low as possible for those people that do have KPROBES configured
(which may be most people if OS distributors ship kernels with
this enabled).
-Tony
^ permalink raw reply [flat|nested] 8+ messages in thread
* Re: [PATCH] Only process_die notifier in ia64_do_page_fault if KPROBES is configured.
2005-08-30 23:05 ` [PATCH] Only process_die notifier in ia64_do_page_fault if KPROBES is configured Luck, Tony
@ 2005-08-30 23:38 ` Andi Kleen
2005-08-30 23:54 ` [PATCH] Only process_die notifier in ia64_do_page_fault if Christoph Lameter
2005-08-30 23:56 ` [PATCH] Only process_die notifier in ia64_do_page_fault if David S. Miller
0 siblings, 2 replies; 8+ messages in thread
From: Andi Kleen @ 2005-08-30 23:38 UTC (permalink / raw)
To: Luck, Tony
Cc: Christoph Lameter, Rusty Lynch, Lynch, Rusty, linux-mm, prasanna,
linux-ia64, linux-kernel, Keshavamurthy, Anil S
On Wednesday 31 August 2005 01:05, Luck, Tony wrote:
> >Please do not generate any code if the feature cannot ever be
> >used (CONFIG_KPROBES off). With this patch we still have lots of
> >unnecessary code being executed on each page fault.
>
> I can (eventually) wrap this call inside the #ifdef CONFIG_KPROBES.
At least the original die notifiers were designed as a generic debugger
interface, not a kprobes specific thing. So I don't think it's a good idea.
Given most debuggers don't need the early page fault hook and it's
mostly needed for a special case in kprobes, but it doesn't seem nice to only
offer a subset of the hooks with specific config options.
Also with the inline the test should be essentially a single test of
a global variable and jump. Hardly a big performance issue, no?
-Andi
^ permalink raw reply [flat|nested] 8+ messages in thread
* Re: [PATCH] Only process_die notifier in ia64_do_page_fault if
2005-08-30 23:38 ` Andi Kleen
@ 2005-08-30 23:54 ` Christoph Lameter
2005-08-31 0:05 ` [PATCH] Only process_die notifier in ia64_do_page_fault if KPROBES is configured Andi Kleen
2005-08-30 23:56 ` [PATCH] Only process_die notifier in ia64_do_page_fault if David S. Miller
1 sibling, 1 reply; 8+ messages in thread
From: Christoph Lameter @ 2005-08-30 23:54 UTC (permalink / raw)
To: Andi Kleen
Cc: Luck, Tony, Rusty Lynch, Lynch, Rusty, linux-mm, prasanna,
linux-ia64, linux-kernel, Keshavamurthy, Anil S
On Wed, 31 Aug 2005, Andi Kleen wrote:
> Also with the inline the test should be essentially a single test of
> a global variable and jump. Hardly a big performance issue, no?
There are multiple effects of this code.
- Additional cacheline in use in the page fault handler
increasing the cache foot print.
- There are registers in use for checking the global variable.
- The compilers will reserve registers for the code that is never
executed which may affect other elements of performance. From the
register perspective a function call may be better on ia64.
Certainly not a big effect (if we make sure the compiler knows that
this test mostly fails and insure that the variable is in
__mostly_read) but this is a frequently executed code path and the code
is there without purpose if CONFIG_KPROBES is off.
It wont get too bad unless lots of other people have similar ideas about
fixing their race conditions using similar methods. But we will be setting
a bad precedent if we allow this.
^ permalink raw reply [flat|nested] 8+ messages in thread
* Re: [PATCH] Only process_die notifier in ia64_do_page_fault if
2005-08-30 23:38 ` Andi Kleen
2005-08-30 23:54 ` [PATCH] Only process_die notifier in ia64_do_page_fault if Christoph Lameter
@ 2005-08-30 23:56 ` David S. Miller
1 sibling, 0 replies; 8+ messages in thread
From: David S. Miller @ 2005-08-30 23:56 UTC (permalink / raw)
To: ak
Cc: tony.luck, clameter, rusty, rusty.lynch, linux-mm, prasanna,
linux-ia64, linux-kernel, anil.s.keshavamurthy
From: Andi Kleen <ak@suse.de>
Subject: Re: [PATCH] Only process_die notifier in ia64_do_page_fault if KPROBES is configured.
Date: Wed, 31 Aug 2005 01:38:08 +0200
> On Wednesday 31 August 2005 01:05, Luck, Tony wrote:
> > >Please do not generate any code if the feature cannot ever be
> > >used (CONFIG_KPROBES off). With this patch we still have lots of
> > >unnecessary code being executed on each page fault.
> >
> > I can (eventually) wrap this call inside the #ifdef CONFIG_KPROBES.
>
> At least the original die notifiers were designed as a generic debugger
> interface, not a kprobes specific thing. So I don't think it's a good idea.
Me neither, I think a way too big deal is being made about
about this by the ia64 folks. Just put the dang hook in
there unconditionally already :-)
^ permalink raw reply [flat|nested] 8+ messages in thread
* Re: [PATCH] Only process_die notifier in ia64_do_page_fault if KPROBES is configured.
2005-08-30 23:54 ` [PATCH] Only process_die notifier in ia64_do_page_fault if Christoph Lameter
@ 2005-08-31 0:05 ` Andi Kleen
0 siblings, 0 replies; 8+ messages in thread
From: Andi Kleen @ 2005-08-31 0:05 UTC (permalink / raw)
To: Christoph Lameter
Cc: Luck, Tony, Rusty Lynch, Lynch, Rusty, linux-mm, prasanna,
linux-ia64, linux-kernel, Keshavamurthy, Anil S
On Wednesday 31 August 2005 01:54, Christoph Lameter wrote:
> Certainly not a big effect (if we make sure the compiler knows that
> this test mostly fails and insure that the variable is in
> __mostly_read)
Currently neither, but that could be easily fixed.
> but this is a frequently executed code path and the code
> is there without purpose if CONFIG_KPROBES is off.
Well if you really worry about it then it might be better to do some dynamic
code patching to make generic and distribution kernels too.
> It wont get too bad unless lots of other people have similar ideas about
> fixing their race conditions using similar methods. But we will be setting
> a bad precedent if we allow this.
Agreed on the general direction, but I didn't see an alternative
for kprobes for this. Well actually the hook could be maybe
right now moved into the part before kernel oops which is much less
frequently executed, but then it'll likely move up again once
kprobes support user space probes.
-Andi
^ permalink raw reply [flat|nested] 8+ messages in thread
* Re: [PATCH] Only process_die notifier in ia64_do_page_fault if
2005-08-30 11:18 ` [PATCH] Only process_die notifier in ia64_do_page_fault if KPROBES is configured Matthew Wilcox
@ 2005-09-19 18:22 ` Christoph Lameter
0 siblings, 0 replies; 8+ messages in thread
From: Christoph Lameter @ 2005-09-19 18:22 UTC (permalink / raw)
To: Matthew Wilcox
Cc: Rusty Lynch, Andi Kleen, Rusty Lynch, linux-mm, prasanna,
linux-ia64, linux-kernel, anil.s.keshavamurthy
On Tue, 30 Aug 2005, Matthew Wilcox wrote:
> On Mon, Aug 29, 2005 at 05:19:05PM -0700, Rusty Lynch wrote:
> > So, assuming inlining the notifier_call_chain would address Christoph's
> > conserns, is the following patch something like what you are sugesting?
> > This would make all the kdebug.h::notify_die() calls use the inline version.
>
> I think we need something more like this ...
>
> include/linux/notifier.h:
> +static inline int notifier_call_chain(struct notifier_block **n,
> + unsigned long val, void *v)
> +{
> + if (n)
> + return __notifier_call_chain(n, val, v);
> + return NOTIFY_DONE;
> +}
> kernel/sys.c:
> -int notifier_call_chain(struct notifier_block **n, unsigned long val, void *v)
> +int __notifier_call_chain(struct notifier_block **n, unsigned long val, void *v)
> -EXPORT_SYMBOL(notifier_call_chain);
> +EXPORT_SYMBOL(__notifier_call_chain);
>
> That way everyone gets both the quick test and the global size reduction.
And then do
#ifndef CONFIG_KPROBES
#define ia64die_chain 0
#endif
in include/asm-ia64/kdebug.h?
Otherwise we still check a notifier chain that cannot ever be
activated.
But then the patch is essentially the same as the last one I proposed.
^ permalink raw reply [flat|nested] 8+ messages in thread
end of thread, other threads:[~2005-09-19 18:22 UTC | newest]
Thread overview: 8+ messages (download: mbox.gz follow: Atom feed
-- links below jump to the message on this page --
2005-08-25 20:14 [PATCH] Only process_die notifier in ia64_do_page_fault if KPROBES Christoph Lameter
2005-08-30 23:05 ` [PATCH] Only process_die notifier in ia64_do_page_fault if KPROBES is configured Luck, Tony
2005-08-30 23:38 ` Andi Kleen
2005-08-30 23:54 ` [PATCH] Only process_die notifier in ia64_do_page_fault if Christoph Lameter
2005-08-31 0:05 ` [PATCH] Only process_die notifier in ia64_do_page_fault if KPROBES is configured Andi Kleen
2005-08-30 23:56 ` [PATCH] Only process_die notifier in ia64_do_page_fault if David S. Miller
[not found] <200508262246.j7QMkEoT013490@linux.jf.intel.com>
2005-08-26 23:05 ` Re:[PATCH] Only process_die notifier in ia64_do_page_fault if KPROBES Christoph Lameter
2005-08-27 0:24 ` [PATCH] Only process_die notifier in ia64_do_page_fault if KPROBES is configured Andi Kleen
2005-08-30 0:19 ` Rusty Lynch
2005-08-30 3:28 ` [PATCH] Only process_die notifier in ia64_do_page_fault if Christoph Lameter
2005-08-30 11:18 ` [PATCH] Only process_die notifier in ia64_do_page_fault if KPROBES is configured Matthew Wilcox
2005-09-19 18:22 ` [PATCH] Only process_die notifier in ia64_do_page_fault if Christoph Lameter
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox