Re: [PATCH] slub: try to get cpu partial slab even if we get enough objects for cpu freelist

2012-08-17 Thread Christoph Lameter
On Fri, 17 Aug 2012, JoonSoo Kim wrote: > In case of !object (available = page->objects - page->inuse;), > "available" means the number of objects in cpu slab. Right because we do not have allocated any cpu partial slabs yet. > In this time, we don't have any cpu partial slab, so "available" im

Re: [PATCH] slub: try to get cpu partial slab even if we get enough objects for cpu freelist

2012-08-17 Thread JoonSoo Kim
2012/8/17 Christoph Lameter : > On Fri, 17 Aug 2012, JoonSoo Kim wrote: > >> > What difference does this patch make? At the end of the day you need the >> > total number of objects available in the partial slabs and the cpu slab >> > for comparison. >> >> It doesn't induce any large difference, but

Re: [PATCH] slub: try to get cpu partial slab even if we get enough objects for cpu freelist

2012-08-17 Thread Christoph Lameter
On Fri, 17 Aug 2012, JoonSoo Kim wrote: > > What difference does this patch make? At the end of the day you need the > > total number of objects available in the partial slabs and the cpu slab > > for comparison. > > It doesn't induce any large difference, but this makes code robust and > consiste

Re: [PATCH] slub: try to get cpu partial slab even if we get enough objects for cpu freelist

2012-08-17 Thread JoonSoo Kim
2012/8/17 Christoph Lameter : > On Thu, 16 Aug 2012, JoonSoo Kim wrote: > >> But, if you prefer that s->cpu_partial is for both cpu slab and cpu >> partial slab, >> get_partial_node() needs an another minor fix. >> We should add number of objects in cpu slab when we refill cpu partial slab. >> Foll

Re: [PATCH] slub: try to get cpu partial slab even if we get enough objects for cpu freelist

2012-08-16 Thread Christoph Lameter
On Thu, 16 Aug 2012, JoonSoo Kim wrote: > But, if you prefer that s->cpu_partial is for both cpu slab and cpu > partial slab, > get_partial_node() needs an another minor fix. > We should add number of objects in cpu slab when we refill cpu partial slab. > Following is my suggestion. > > @@ -1546,7

Re: [PATCH] slub: try to get cpu partial slab even if we get enough objects for cpu freelist

2012-08-16 Thread JoonSoo Kim
>> I think that s->cpu_partial is for cpu partial slab, not cpu slab. > > Ummm... Not entirely. s->cpu_partial is the mininum number of objects to > "cache" per processor. This includes the objects available in the per cpu > slab and the other slabs on the per cpu partial list. Hmm.. When we do te

Re: [PATCH] slub: try to get cpu partial slab even if we get enough objects for cpu freelist

2012-08-15 Thread Christoph Lameter
On Thu, 16 Aug 2012, JoonSoo Kim wrote: > > 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 Correct. >

Re: [PATCH] slub: try to get cpu partial slab even if we get enough objects for cpu freelist

2012-08-15 Thread JoonSoo Kim
2012/8/16 Christoph Lameter : > 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()

Re: [PATCH] slub: try to get cpu partial slab even if we get enough objects for cpu freelist

2012-08-15 Thread Christoph Lameter
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 ou

[PATCH] slub: try to get cpu partial slab even if we get enough objects for cpu freelist

2012-08-15 Thread Joonsoo Kim
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. Fix it as forcibly assigning