Messages in this thread | | | Date | Wed, 30 May 2007 16:44:33 -0500 | From | Matt Mackall <> | Subject | Re: [patch 9/9] Scheduler profiling - Use conditional calls |
| |
On Wed, May 30, 2007 at 10:00:34AM -0400, Mathieu Desnoyers wrote: > Use conditional calls with lower d-cache hit in optimized version as a > condition for scheduler profiling call. > > Signed-off-by: Mathieu Desnoyers <mathieu.desnoyers@polymtl.ca> > > --- > kernel/profile.c | 4 ++++ > kernel/sched.c | 4 +++- > 2 files changed, 7 insertions(+), 1 deletion(-) > > Index: linux-2.6-lttng/kernel/profile.c > =================================================================== > --- linux-2.6-lttng.orig/kernel/profile.c 2007-05-30 08:42:29.000000000 -0400 > +++ linux-2.6-lttng/kernel/profile.c 2007-05-30 08:45:22.000000000 -0400 > @@ -23,6 +23,7 @@ > #include <linux/profile.h> > #include <linux/highmem.h> > #include <linux/mutex.h> > +#include <linux/condcall.h> > #include <asm/sections.h> > #include <asm/semaphore.h> > #include <asm/irq_regs.h> > @@ -92,6 +93,8 @@ > printk(KERN_INFO "kernel profiling enabled (shift: %ld)\n", > prof_shift); > } > + if (prof_on) > + BUG_ON(cond_call_arm("profile_on")); > return 1; > } > __setup("profile=", profile_setup); > @@ -556,6 +559,7 @@ > return 0; > out_cleanup: > prof_on = 0; > + cond_call_disarm("profile_on"); > smp_mb(); > on_each_cpu(profile_nop, NULL, 0, 1); > for_each_online_cpu(cpu) { > Index: linux-2.6-lttng/kernel/sched.c > =================================================================== > --- linux-2.6-lttng.orig/kernel/sched.c 2007-05-30 08:43:02.000000000 -0400 > +++ linux-2.6-lttng/kernel/sched.c 2007-05-30 08:45:22.000000000 -0400 > @@ -59,6 +59,7 @@ > #include <linux/kprobes.h> > #include <linux/delayacct.h> > #include <linux/reciprocal_div.h> > +#include <linux/condcall.h> > > #include <asm/tlb.h> > #include <asm/unistd.h> > @@ -2990,7 +2991,8 @@ > print_irqtrace_events(prev); > dump_stack(); > } > - profile_hit(SCHED_PROFILING, __builtin_return_address(0)); > + cond_call(profile_on, > + profile_hit(SCHED_PROFILING, __builtin_return_address(0)));
I think we could do better here pretty trivially. profile hit still has an if (unlikely(prof_on == TYPE)). Shouldn't we just have a cond_call type for "sched_profiling" and cond_call profile_hits(type, ip, 1) directly?
-- Mathematics is the supreme nostalgia of our time. - To unsubscribe from this list: send the line "unsubscribe linux-kernel" in the body of a message to majordomo@vger.kernel.org More majordomo info at http://vger.kernel.org/majordomo-info.html Please read the FAQ at http://www.tux.org/lkml/
| |