]> git.karo-electronics.de Git - karo-tx-linux.git/commitdiff
vmscan: activate executable pages after first usage
authorKonstantin Khlebnikov <khlebnikov@openvz.org>
Fri, 2 Dec 2011 03:11:35 +0000 (14:11 +1100)
committerStephen Rothwell <sfr@canb.auug.org.au>
Fri, 2 Dec 2011 03:15:28 +0000 (14:15 +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 c74bf0256e3305c0f783ea14706cb51e75dcc342..581dc6fee85cf9e2038f513749b299c12065f73d 100644 (file)
@@ -718,6 +718,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;
        }