On Mon, 9 Mar 2009, Steven Rostedt wrote: > > On Mon, 9 Mar 2009, Ingo Molnar wrote: > > > > tracing: optimize trace_printk() > > > > Impact: micro-optimization > > > > trace_printk() does this unconditionally: > > > > trace_printk_fmt = fmt; > > > > Where trace_printk_fmt is an entry into a global array. This is > > very SMP-unfriendly. > > > > So only write it once per bootup. > > > > Cc: Frederic Weisbecker <fweisbec@xxxxxxxxx> > > Cc: Steven Rostedt <rostedt@xxxxxxxxxxx> > > Cc: Peter Zijlstra <peterz@xxxxxxxxxxxxx> > > LKML-Reference: <1236356510-8381-5-git-send-email-fweisbec@xxxxxxxxx> > > Signed-off-by: Ingo Molnar <mingo@xxxxxxx> > > > > > > --- > > include/linux/kernel.h | 10 ++++++++-- > > 1 files changed, 8 insertions(+), 2 deletions(-) > > > > diff --git a/include/linux/kernel.h b/include/linux/kernel.h > > index 4e726b9..7742798 100644 > > --- a/include/linux/kernel.h > > +++ b/include/linux/kernel.h > > @@ -454,7 +454,10 @@ do { \ > > do { \ > > static const char *trace_printk_fmt \ > > __attribute__((section("__trace_printk_fmt"))); \ A I missed the semicolon. I wonder if we could make it a static init? -- Steve > > - trace_printk_fmt = fmt; \ > > + \ > > + if (!trace_printk_fmt) \ > > + trace_printk_fmt = fmt; \ > > + \ > > But this is a static init. That is, it is done at initialization and not > every time. > > The change actually slows down the system. > > > __trace_printk_check_format(fmt, ##args); \ > > __trace_printk(_THIS_IP_, trace_printk_fmt, ##args); \ > > } while (0) > > @@ -467,7 +470,10 @@ __trace_printk(unsigned long ip, const char *fmt, ...) > > do { \ > > static const char *trace_printk_fmt \ > > __attribute__((section("__trace_printk_fmt"))); \ > > - trace_printk_fmt = fmt; \ > > + \ > > + if (!trace_printk_fmt) \ > > + trace_printk_fmt = fmt; \ > > + \ > > Same here. > > -- Steve > > > __ftrace_vprintk(_THIS_IP_, trace_printk_fmt, vargs); \ > > } while (0) > > > > > -- To unsubscribe from this list: send the line "unsubscribe linux-tip-commits" in the body of a message to majordomo@xxxxxxxxxxxxxxx More majordomo info at http://vger.kernel.org/majordomo-info.html