Messages in this thread | | | Date | Sun, 10 Jun 2012 19:27:27 +0900 | Subject | Re: [PATCH 4/4] slub: deactivate freelist of kmem_cache_cpu all at once in deactivate_slab() | From | JoonSoo Kim <> |
| |
2012/6/9 Christoph Lameter <cl@linux.com>: > On Sat, 9 Jun 2012, Joonsoo Kim wrote: > >> Current implementation of deactivate_slab() which deactivate >> freelist of kmem_cache_cpu one by one is inefficient. >> This patch changes it to deactivate freelist all at once. >> But, there is no overall performance benefit, >> because deactivate_slab() is invoked infrequently. > > Hmm, deactivate freelist can race with slab_free. Need to look at this in > detail.
Implemented logic is nearly same as previous one. I just merge first step of previous deactivate_slab() with second one. In case of failure of cmpxchg_double_slab(), reloading page->freelist, page->counters and recomputing inuse ensure that race with slab_free() cannot be possible. In case that we need a lock, try to get a lock before invoking cmpxchg_double_slab(), so race with slab_free cannot be occured too.
Above is my humble opinion, please give me some comments.
| |