SHM_LOCKED pages are unevictable
Shmem segments locked into memory via shmctl(SHM_LOCKED) should not be kept on the normal LRU, since scanning them is a waste of time and might throw off kswapd's balancing algorithms. Place them on the unevictable LRU list instead. Use the AS_UNEVICTABLE flag to mark address_space of SHM_LOCKed shared memory regions as unevictable. Then these pages will be culled off the normal LRU lists during vmscan. Add new wrapper function to clear the mapping's unevictable state when/if shared memory segment is munlocked. Add 'scan_mapping_unevictable_page()' to mm/vmscan.c to scan all pages in the shmem segment's mapping [struct address_space] for evictability now that they're no longer locked. If so, move them to the appropriate zone lru list. Changes depend on [CONFIG_]UNEVICTABLE_LRU. [kosaki.motohiro@jp.fujitsu.com: revert shm change] Signed-off-by:Lee Schermerhorn <lee.schermerhorn@hp.com> Signed-off-by:
Rik van Riel <riel@redhat.com> Signed-off-by:
Kosaki Motohiro <kosaki.motohiro@jp.fujitsu.com> Signed-off-by:
Andrew Morton <akpm@linux-foundation.org> Signed-off-by:
Linus Torvalds <torvalds@linux-foundation.org>
Showing
- include/linux/mm.h 2 additions, 2 deletionsinclude/linux/mm.h
- include/linux/pagemap.h 9 additions, 3 deletionsinclude/linux/pagemap.h
- include/linux/swap.h 4 additions, 0 deletionsinclude/linux/swap.h
- ipc/shm.c 4 additions, 0 deletionsipc/shm.c
- mm/shmem.c 4 additions, 0 deletionsmm/shmem.c
- mm/vmscan.c 89 additions, 0 deletionsmm/vmscan.c
Loading
Please register or sign in to comment