slub: reduce failure of this_cpu_cmpxchg in put_cpu_partial() after unfreezing
In current implementation, after unfreezing, we doesn't touch oldpage, so it remain 'NOT NULL'. When we call this_cpu_cmpxchg() with this old oldpage, this_cpu_cmpxchg() is mostly be failed. We can change value of oldpage to NULL after unfreezing, because unfreeze_partial() ensure that all the cpu partial slabs is removed from cpu partial list. In this time, we could expect that this_cpu_cmpxchg is mostly succeed. Acked-by: Christoph Lameter <cl@linux.com> Signed-off-by: Joonsoo Kim <js1304@gmail.com> Signed-off-by: Pekka Enberg <penberg@kernel.org>
This commit is contained in:
Родитель
19c7ff9ecd
Коммит
e24fc410f5
|
@ -1962,6 +1962,7 @@ int put_cpu_partial(struct kmem_cache *s, struct page *page, int drain)
|
||||||
local_irq_save(flags);
|
local_irq_save(flags);
|
||||||
unfreeze_partials(s);
|
unfreeze_partials(s);
|
||||||
local_irq_restore(flags);
|
local_irq_restore(flags);
|
||||||
|
oldpage = NULL;
|
||||||
pobjects = 0;
|
pobjects = 0;
|
||||||
pages = 0;
|
pages = 0;
|
||||||
stat(s, CPU_PARTIAL_DRAIN);
|
stat(s, CPU_PARTIAL_DRAIN);
|
||||||
|
|
Загрузка…
Ссылка в новой задаче