]> git.karo-electronics.de Git - karo-tx-linux.git/commitdiff
vmscan: activate executable pages after first usage
authorKonstantin Khlebnikov <khlebnikov@openvz.org>
Wed, 5 Oct 2011 00:42:59 +0000 (11:42 +1100)
committerStephen Rothwell <sfr@canb.auug.org.au>
Wed, 12 Oct 2011 06:32:06 +0000 (17:32 +1100)
Logic added in commit 8cab4754d24a0 ("vmscan: make mapped executable pages
the first class citizen") was noticeably weakened in commit
645747462435d84 ("vmscan: detect mapped file pages used only once").

Currently these pages can become "first class citizens" only after second
usage.  After this patch page_check_references() will activate they after
first usage, and executable code gets yet better chance to stay in memory.

Signed-off-by: Konstantin Khlebnikov <khlebnikov@openvz.org>
Cc: Pekka Enberg <penberg@kernel.org>
Cc: Minchan Kim <minchan.kim@gmail.com>
Cc: KAMEZAWA Hiroyuki <kamezawa.hiroyu@jp.fujitsu.com>
Cc: Wu Fengguang <fengguang.wu@intel.com>
Cc: Johannes Weiner <hannes@cmpxchg.org>
Cc: Nick Piggin <npiggin@kernel.dk>
Cc: Mel Gorman <mel@csn.ul.ie>
Cc: Shaohua Li <shaohua.li@intel.com>
Cc: Rik van Riel <riel@redhat.com>
Signed-off-by: Andrew Morton <akpm@linux-foundation.org>
mm/vmscan.c

index 28cb9611dec3ef10fe0074a3caabc08e5a89cf4b..ed78ccf63aaf1a672883f1e2fa37b08f58b0fd7b 100644 (file)
@@ -717,6 +717,12 @@ static enum page_references page_check_references(struct page *page,
                if (referenced_page || referenced_ptes > 1)
                        return PAGEREF_ACTIVATE;
 
+               /*
+                * Activate file-backed executable pages after first usage.
+                */
+               if (vm_flags & VM_EXEC)
+                       return PAGEREF_ACTIVATE;
+
                return PAGEREF_KEEP;
        }