[<prev] [next>] [<thread-prev] [thread-next>] [day] [month] [year] [list]
Message-ID: <CAAmzW4NijZF7m-ivOPjmRZxSCukHET78SM5Qpvb6Y56atoZ-yQ@mail.gmail.com>
Date: Fri, 15 Jan 2016 01:24:08 +0900
From: Joonsoo Kim <js1304@...il.com>
To: Christoph Lameter <cl@...ux.com>
Cc: Andrew Morton <akpm@...ux-foundation.org>,
Pekka Enberg <penberg@...nel.org>,
David Rientjes <rientjes@...gle.com>,
Joonsoo Kim <iamjoonsoo.kim@....com>,
Jesper Dangaard Brouer <brouer@...hat.com>,
Linux Memory Management List <linux-mm@...ck.org>,
LKML <linux-kernel@...r.kernel.org>
Subject: Re: [PATCH 16/16] mm/slab: introduce new slab management type, OBJFREELIST_SLAB
2016-01-15 0:32 GMT+09:00 Christoph Lameter <cl@...ux.com>:
> On Thu, 14 Jan 2016, Joonsoo Kim wrote:
>
>> SLAB needs a array to manage freed objects in a slab. It is only used
>> if some objects are freed so we can use free object itself as this array.
>> This requires additional branch in somewhat critical lock path to check
>> if it is first freed object or not but that's all we need. Benefits is
>> that we can save extra memory usage and reduce some computational
>> overhead by allocating a management array when new slab is created.
>
> Hmmm... But then you need to have an offset in the page struct to
> figure out where the freelist starts. One additional level of indirection.
> Seems to have some negative impact on performance.
SLAB already keeps the pointer where the freelist starts in the page struct.
So, there is no *additional* negative impact on performance.
>> In my system, without enabling CONFIG_DEBUG_SLAB, Almost caches become
>> OBJFREELIST_SLAB and NORMAL_SLAB (using leftover) which doesn't waste
>> memory. Following is the result of number of caches with specific slab
>> management type.
>
> Sounds good.
Thanks.
Powered by blists - more mailing lists