mm, compaction: skip compound pages by order in free scanner
authorVlastimil Babka <vbabka@suse.cz>
Tue, 8 Sep 2015 22:02:49 +0000 (15:02 -0700)
committerSasha Levin <sasha.levin@oracle.com>
Mon, 11 Jul 2016 02:27:11 +0000 (22:27 -0400)
commit683854270f84daa09baffe2b21d64ec88c614fa9
tree727b5b5bc38774977b40751fc5afb7e82de1c0c6
parentc5ad33184354260be6d05de57e46a5498692f6d6
mm, compaction: skip compound pages by order in free scanner

[ Upstream commit 9fcd6d2e052eef525e94a9ae58dbe7ed4df4f5a7 ]

The compaction free scanner is looking for PageBuddy() pages and
skipping all others.  For large compound pages such as THP or hugetlbfs,
we can save a lot of iterations if we skip them at once using their
compound_order().  This is generally unsafe and we can read a bogus
value of order due to a race, but if we are careful, the only danger is
skipping too much.

When tested with stress-highalloc from mmtests on 4GB system with 1GB
hugetlbfs pages, the vmstat compact_free_scanned count decreased by at
least 15%.

Signed-off-by: Vlastimil Babka <vbabka@suse.cz>
Cc: Minchan Kim <minchan@kernel.org>
Cc: Mel Gorman <mgorman@suse.de>
Acked-by: Joonsoo Kim <iamjoonsoo.kim@lge.com>
Acked-by: Michal Nazarewicz <mina86@mina86.com>
Cc: Naoya Horiguchi <n-horiguchi@ah.jp.nec.com>
Cc: Christoph Lameter <cl@linux.com>
Cc: Rik van Riel <riel@redhat.com>
Cc: David Rientjes <rientjes@google.com>
Signed-off-by: Andrew Morton <akpm@linux-foundation.org>
Signed-off-by: Linus Torvalds <torvalds@linux-foundation.org>
Signed-off-by: Sasha Levin <sasha.levin@oracle.com>
mm/compaction.c