Messages in this thread | | | Date | Thu, 16 Aug 2012 01:35:41 +0900 | Subject | Re: [PATCH] slub: try to get cpu partial slab even if we get enough objects for cpu freelist | From | JoonSoo Kim <> |
| |
2012/8/16 Christoph Lameter <cl@linux.com>: > On Thu, 16 Aug 2012, Joonsoo Kim wrote: > >> s->cpu_partial determine the maximum number of objects kept >> in the per cpu partial lists of a processor. Currently, it is used for >> not only per cpu partial list but also cpu freelist. Therefore >> get_partial_node() doesn't work properly according to our first intention. > > The "cpu freelist" in slub is the number of free objects in a specific > page. There is nothing that s->cpu_partial can do about that. > > Maybe I do not understand you correctly. Could you explain this in some > more detail?
I assume that cpu slab and cpu partial slab are not same thing.
In my definition, cpu slab is in c->page, cpu partial slab is in c->partial
When we have no free objects in cpu slab and cpu partial slab, we try to get slab via get_partial_node(). In that function, we call acquire_slab(). Then we hit "!object" case (for cpu slab). In that case, we test available with s->cpu_partial.
I think that s->cpu_partial is for cpu partial slab, not cpu slab. So this test is not proper. This patch is for correcting this.
Thanks!
| |