]> git.karo-electronics.de Git - karo-tx-linux.git/commitdiff
Logic added in commit 8cab4754d24a0 ("vmscan: make mapped executable pages
authorKonstantin Khlebnikov <khlebnikov@openvz.org>
Wed, 24 Aug 2011 23:47:12 +0000 (09:47 +1000)
committerStephen Rothwell <sfr@canb.auug.org.au>
Tue, 13 Sep 2011 06:19:26 +0000 (16:19 +1000)
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 5abcdb3a7465d73bd978a5109dbb758c0f4c5c1b..668f7ec4b8397b922b96e66a42b6d30dba10601b 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;
        }