|| ||[patch 0/3] Slab Defrag / Slab Targeted Reclaim|
|| ||Wed, 16 May 2007 22:16:59 -0700|
|| ||email@example.com, firstname.lastname@example.org,
Mel Gorman <email@example.com>, firstname.lastname@example.org|
Initial support for Slab defragmentation and targeted reclaim. The
functionality here is minimal. We establish a slab API to allow removal
or moving of objects between slabs.
The only user provided here is a dentry cache reclaim capability. This is
limited to the removal of unused dentries for now. It is planned to later
add a similar inode reclaim capability and then extend the move/reclaim
to support moving of dentries and inodes.
Slab defragmentation is performed during kmem_cache_shrink. This is usually
triggered through the slab shrinkers but can also be manually triggered
through the slabinfo command.
Support is provided for antifrag/defrag to evict a specific slab page
through the kmem_cache_vacate function call. Since we can only reclaim
unused dentries for now that functionality is pretty limited (we need to
put some work into making dentries and inode more reclaimable or movable)
but we can increase the capabilities over time which will allow us to move
slabs from the reclaimable area into the movable area. This will shrink
the reclaimable area significantly. Since we can target the vacating of
pages this may allow the antifrag code to remove a page that hinders the
freeing of higher order page.