On Fri, 30 May 2014, Vladimir Davydov wrote: > (3) is a bit more difficult, because slabs are added to per-cpu partial > lists lock-less. Fortunately, we only have to handle the __slab_free > case, because, as there shouldn't be any allocation requests dispatched > to a dead memcg cache, get_partial_node() should never be called. In > __slab_free we use cmpxchg to modify kmem_cache_cpu->partial (see > put_cpu_partial) so that setting ->partial to a special value, which > will make put_cpu_partial bail out, will do the trick. > > Note, this shouldn't affect performance, because keeping empty slabs on > per node lists as well as using per cpu partials are only worthwhile if > the cache is used for allocations, which isn't the case for dead caches. This all sounds pretty good to me but we still have some pretty extensive modifications that I would rather avoid. In put_cpu_partial you can simply check that the memcg is dead right? This would avoid all the other modifications I would think and will not require a special value for the per cpu partial pointer. -- 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>