--- mm/slub.c | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) Index: linux-2.6/mm/slub.c =================================================================== --- linux-2.6.orig/mm/slub.c 2007-12-17 19:43:18.729942984 -0800 +++ linux-2.6/mm/slub.c 2007-12-17 19:54:57.786313975 -0800 @@ -1475,7 +1475,8 @@ static void *__slab_alloc(struct kmem_ca goto new_slab; slab_lock(c->page); - if (unlikely(!node_match(c, node))) + if (unlikely(!node_match(c, node) || + c->page->inuse < (s->objects >> 2))) goto another_slab; load_freelist: object = c->page->freelist;