]> 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>
Tue, 4 Oct 2011 07:38:36 +0000 (18:38 +1100)
commitc98cfd833d76830a4deceabee1e4a2288c8631d8
treee3049c4065af11ed3173d1889bc1abb3db337331
parent15cd34017bc42b6bdfef5e651932a8bdfdd89783
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