Re: [PATCH v11 4/7] mm: introduce compaction and migration for ballooned pages
From: Andrew Morton <akpm@linux-foundation.org>
Date: 2012-11-20 23:33:27
Also in:
linux-mm, lkml
On Fri, 9 Nov 2012 12:16:02 +0000 Mel Gorman [off-list ref] wrote:
On Wed, Nov 07, 2012 at 01:05:51AM -0200, Rafael Aquini wrote:quoted
Memory fragmentation introduced by ballooning might reduce significantly the number of 2MB contiguous memory blocks that can be used within a guest, thus imposing performance penalties associated with the reduced number of transparent huge pages that could be used by the guest workload. This patch introduces the helper functions as well as the necessary changes to teach compaction and migration bits how to cope with pages which are part of a guest memory balloon, in order to make them movable by memory compaction procedures....quoted
--- a/mm/compaction.c +++ b/mm/compaction.c@@ -14,6 +14,7 @@ #include <linux/backing-dev.h> #include <linux/sysctl.h> #include <linux/sysfs.h> +#include <linux/balloon_compaction.h> #include "internal.h" #if defined CONFIG_COMPACTION || defined CONFIG_CMA@@ -565,9 +566,24 @@ isolate_migratepages_range(struct zone *zone, struct compact_control *cc, goto next_pageblock; } - /* Check may be lockless but that's ok as we recheck later */ - if (!PageLRU(page)) + /* + * Check may be lockless but that's ok as we recheck later. + * It's possible to migrate LRU pages and balloon pages + * Skip any other type of page + */ + if (!PageLRU(page)) { + if (unlikely(balloon_page_movable(page))) {Because it's lockless, it really seems that the barrier stuck down there is unnecessary. At worst you get a temporarily incorrect answer that you recheck later under page lock in balloon_page_isolate.
What happened with this? Also: what barrier?