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. -- To unsubscribe, send a message with 'unsubscribe linux-mm' in the body to majordomo@xxxxxxxxx. For more info on Linux MM, see: http://www.linux-mm.org/ . Don't email: <a href=mailto:"dont@xxxxxxxxx"> email@xxxxxxxxx </a>