Re: [PATCH 16/16] mm/slab: introduce new slab management type, OBJFREELIST_SLAB

From: Joonsoo Kim
Date: Thu Jan 14 2016 - 11:24:15 EST


2016-01-15 0:32 GMT+09:00 Christoph Lameter <cl@xxxxxxxxx>:
> 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.