]> git.karo-electronics.de Git - karo-tx-linux.git/commit
mm: compaction: compact unevictable pages
authorMinchan Kim <minchan.kim@gmail.com>
Wed, 5 Oct 2011 00:43:06 +0000 (11:43 +1100)
committerStephen Rothwell <sfr@canb.auug.org.au>
Wed, 12 Oct 2011 06:32:09 +0000 (17:32 +1100)
commit5c594903f5257ab11a13f59ec16682c23b288a15
treeb8df5b716ea03d562ed6a17fabce7f386a484846
parent0d2a2483d01ffe5b8c9318a9bf2030a7cb651b56
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 <akpm@linux-foundation.org>
include/linux/mmzone.h
mm/compaction.c
mm/vmscan.c