Now compaction doesn't handle mlocked page as it uses __isolate_lru_page
which doesn't consider unevicatable page. It has been used by just lumpy so
it was pointless that it isolates unevictable page. But the situation is
changed. Compaction could handle unevictable page and it can help getting
big contiguos pages in fragment memory by many pinned page 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
CC: Mel Gorman<mgorman@xxxxxxx>
CC: Johannes Weiner<jweiner@xxxxxxxxxx>
CC: Rik van Riel<riel@xxxxxxxxxx>
Signed-off-by: Minchan Kim<minchan.kim@xxxxxxxxx>