Slab defragmentation V2
Get series with b4
b4 am [email protected]Versions newest first
- v1 Latest10 patches 13 repliesIn review
V1->V2 from the cover letter
- Clean up control flow using a state variable. Simplify API. Back to 2 functions that now take arrays of objects.
- Inode defrag support for a set of filesystems
- Fix up dentry defrag support to work on negative dentries by adding a new dentry flag that indicates that a dentry is not in the process of being freed or allocated.
Patches in v1 No applies recorded yet
| # | Subject and files | Size | Replies | Applied |
|---|---|---|---|---|
| 1/10 | SLUB: add support for kmem_cache_opsinclude/ include/ mm/ +2 more | +44 | 3 replies | |
| 2/10 | SLUB: slab defragmentation and kmem_cache_vacateinclude/ mm/ mm/ +1 more | +303 | 2 replies | |
| 3/10 | Dentry defragmentationfs/ include/ | +96 | 0 replies | |
| 4/10 | Generic inode defragmentationfs/ include/ | +96 | 0 replies | |
| 5/10 | reiserfs: inode defragmentation supportfs/ | +13 | 0 replies | |
| 6/10 | xfs: inode defragmentation supportfs/ fs/ fs/ | +16 | 1 reply | |
| 7/10 | procfs: inode defragmentation supportfs/ | +13 | 0 replies | |
| 8/10 | shmem: inode defragmentation supportmm/ | +12 | 2 replies | |
| 9/10 | sockets: inode defragmentation supportnet/ | +12 | 0 replies | |
| 10/10 | ext2 ext3 ext4: support inode slab defragmentationfs/ fs/ fs/ | +41 | 2 replies |
Reviews trailers per patch
No Reviewed-by, Acked-by or Tested-by trailers for v1 yet.
Cover letter [patch 00/10] Slab defragmentation V2
Hugh: Could you have a look at this? There is lots of critical locking here....
Support for Slab defragmentation and targeted reclaim. The current state of affairs is that a large portion of inode and dcache slab caches can be effectively reclaimed. The remaining problems are:
1. We cannot reclaim dentries / inodes that are in active use. Probably inadvisable anyways and maybe impossible if we cannot track down all the references to dentries. The active dentries / inodes are usually only a small subset of the inode / dentries in the system.
2. Directory reclaim is an issue both for dentries and inodes. A solution here may be complex. However, the majority of dentries and inodes are *not* directories. So I think that we are fine even without being able to reclaim slabs with directory entries in them. These slabs will move to the head of the partial list and soon be filled up with other entries. This means that the directory entries will tend to aggregate over time in certain slabs.
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 by running "slabinfo -s".
Support is also provided for antifrag/defrag to evict a specific slab page through the kmem_cache_vacate function call. Since we can now target the freeing of slab pages we may now be able to remove a page that hinders the freeing of a higher order page in the antifrag/defrag code.
V1->V2
- Clean up control flow using a state variable. Simplify API. Back to 2 functions that now take arrays of objects.
- Inode defrag support for a set of filesystems
- Fix up dentry defrag support to work on negative dentries by adding a new dentry flag that indicates that a dentry is not in the process of being freed or allocated.