]> git.karo-electronics.de Git - karo-tx-linux.git/commit
mm: compaction: compact unevictable pages
authorMinchan Kim <minchan.kim@gmail.com>
Wed, 28 Sep 2011 00:50:18 +0000 (10:50 +1000)
committerStephen Rothwell <sfr@canb.auug.org.au>
Fri, 30 Sep 2011 04:53:27 +0000 (14:53 +1000)
commitcdf408401312411dba18471f0cfb175d1c3bb440
tree1b06f71e4864fc61b2d11af613994fdafdf57e8b
parent8b629c10d3af2c56f7d08d85a05521fe8700be63
mm: compaction: compact unevictable pages

Presently compaction doesn't handle mlocked pages as it uses
__isolate_lru_page which doesn't consider unevicatable pages.  It is used
by just lumpy so it is pointless that it isolates unevictable pages.

But the situation has changed.  Compaction can handle unevictable pages
and it can help getting big contiguos pages in memory whcih is fragmented
by many pinned pages with mlock.

I tested this patch with following scenario.

1. A : allocate 80% anon pages in system
2. B : allocate 20% mlocked page in system
/* Maybe, mlocked pages are located in low pfn address */
3. kill A /* high pfn address are free */
4. echo 1 > /proc/sys/vm/compact_memory

old:

compact_blocks_moved 251
compact_pages_moved 44

new:

compact_blocks_moved 258
compact_pages_moved 412

Signed-off-by: Minchan Kim <minchan.kim@gmail.com>
Cc: Mel Gorman <mgorman@suse.de>
Cc: Johannes Weiner <jweiner@redhat.com>
Reviewed-by: Rik van Riel <riel@redhat.com>
Signed-off-by: Andrew Morton <>
include/linux/mmzone.h
mm/compaction.c
mm/vmscan.c