Messages in this thread | | | Subject | Re: [PATCH] slub: reduce total stack usage of slab_err & object_err | From | Richard Kennedy <> | Date | Tue, 30 Sep 2008 17:20:38 +0100 |
| |
On Tue, 2008-09-30 at 10:38 -0500, Christoph Lameter wrote: > Richard Kennedy wrote: > > reduce the total stack usage of slab_err & object_err. > > > > Introduce a new function to display a simple slab bug message, and call > > this when vprintk is not needed. > > You could simply get rid of the 100 byte buffer by using vprintk? Same method > could be used elsewhere in the kernel and does not require additional > functions. Compiles, untestted. > > > > > Subject: Slub reduce slab_bug stack usage by using vprintk > > Signed-off-by: Christoph Lameter <cl@linux-foundation.org> > > Index: linux-2.6/mm/slub.c > =================================================================== > --- linux-2.6.orig/mm/slub.c 2008-09-30 10:34:40.000000000 -0500 > +++ linux-2.6/mm/slub.c 2008-09-30 10:36:10.000000000 -0500 > @@ -422,15 +422,14 @@ > static void slab_bug(struct kmem_cache *s, char *fmt, ...) > { > va_list args; > - char buf[100]; > > va_start(args, fmt); > - vsnprintf(buf, sizeof(buf), fmt, args); > - va_end(args); > printk(KERN_ERR "========================================" > "=====================================\n"); > - printk(KERN_ERR "BUG %s: %s\n", s->name, buf); > - printk(KERN_ERR "----------------------------------------" > + printk(KERN_ERR "BUG %s: ", s->name); > + vprintk(fmt, args); > + va_end(args); > + printk(KERN_ERR "\n----------------------------------------" > "-------------------------------------\n\n"); > } > Yes, using vprintk is better but you still have this path : ( with your patch applied)
object_err -> slab_bug(208) -> printk(216) instead of object_err -> slab_bug_message(8) -> printk(216)
unfortunately the overhead for having var_args is pretty big, at least on x86_64. I haven't measured it on 32 bit yet.
Richard
| |