On Tue, 12 Apr 2016, js1304@xxxxxxxxx wrote: > @@ -2222,6 +2241,7 @@ static void drain_cpu_caches(struct kmem_cache *cachep) > { > struct kmem_cache_node *n; > int node; > + LIST_HEAD(list); > > on_each_cpu(do_drain, cachep, 1); > check_irq_on(); > @@ -2229,8 +2249,13 @@ static void drain_cpu_caches(struct kmem_cache *cachep) > if (n->alien) > drain_alien_cache(cachep, n->alien); > > - for_each_kmem_cache_node(cachep, node, n) > - drain_array(cachep, n, n->shared, 1, node); > + for_each_kmem_cache_node(cachep, node, n) { > + spin_lock_irq(&n->list_lock); > + drain_array_locked(cachep, n->shared, node, true, &list); > + spin_unlock_irq(&n->list_lock); > + > + slabs_destroy(cachep, &list); Can the slabs_destroy() call be moved outside of the loop? It may be faster then? -- To unsubscribe, send a message with 'unsubscribe linux-mm' in the body to majordomo@xxxxxxxxx. For more info on Linux MM, see: http://www.linux-mm.org/ . Don't email: <a href=mailto:"dont@xxxxxxxxx"> email@xxxxxxxxx </a>