aboutsummaryrefslogtreecommitdiffstats
path: root/include/linux
diff options
context:
space:
mode:
authorMinchan Kim <minchan.kim@gmail.com>2011-10-31 20:06:55 -0400
committerLuis Henriques <luis.henriques@canonical.com>2012-08-13 09:10:27 -0400
commitd63e9c8c6b700e7606946f3ea16164c2ef3ae332 (patch)
treea6e904aaa971f9b62420a0535807e393c5a40253 /include/linux
parent2bd388141c07d92b27b55ac1d03192d176ab83b5 (diff)
mm: zone_reclaim: make isolate_lru_page() filter-aware
BugLink: http://bugs.launchpad.net/bugs/1031926 commit f80c0673610e36ae29d63e3297175e22f70dde5f upstream. Stable note: Not tracked in Bugzilla. THP and compaction disrupt the LRU list leading to poor reclaim decisions which has a variable performance impact. In __zone_reclaim case, we don't want to shrink mapped page. Nonetheless, we have isolated mapped page and re-add it into LRU's head. It's unnecessary CPU overhead and makes LRU churning. Of course, when we isolate the page, the page might be mapped but when we try to migrate the page, the page would be not mapped. So it could be migrated. But race is rare and although it happens, it's no big deal. Signed-off-by: Minchan Kim <minchan.kim@gmail.com> Acked-by: Johannes Weiner <hannes@cmpxchg.org> Reviewed-by: KAMEZAWA Hiroyuki <kamezawa.hiroyu@jp.fujitsu.com> Reviewed-by: KOSAKI Motohiro <kosaki.motohiro@jp.fujitsu.com> Reviewed-by: Michal Hocko <mhocko@suse.cz> Cc: Mel Gorman <mgorman@suse.de> Cc: Rik van Riel <riel@redhat.com> Cc: Andrea Arcangeli <aarcange@redhat.com> Signed-off-by: Andrew Morton <akpm@linux-foundation.org> Signed-off-by: Linus Torvalds <torvalds@linux-foundation.org> Signed-off-by: Mel Gorman <mgorman@suse.de> Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org> Signed-off-by: Herton Ronaldo Krzesinski <herton.krzesinski@canonical.com>
Diffstat (limited to 'include/linux')
-rw-r--r--include/linux/mmzone.h2
1 files changed, 2 insertions, 0 deletions
diff --git a/include/linux/mmzone.h b/include/linux/mmzone.h
index 0ed9149a272..80acfbc9aa1 100644
--- a/include/linux/mmzone.h
+++ b/include/linux/mmzone.h
@@ -164,6 +164,8 @@ static inline int is_unevictable_lru(enum lru_list l)
164#define ISOLATE_ACTIVE ((__force isolate_mode_t)0x2) 164#define ISOLATE_ACTIVE ((__force isolate_mode_t)0x2)
165/* Isolate clean file */ 165/* Isolate clean file */
166#define ISOLATE_CLEAN ((__force isolate_mode_t)0x4) 166#define ISOLATE_CLEAN ((__force isolate_mode_t)0x4)
167/* Isolate unmapped file */
168#define ISOLATE_UNMAPPED ((__force isolate_mode_t)0x8)
167 169
168/* LRU Isolation modes. */ 170/* LRU Isolation modes. */
169typedef unsigned __bitwise__ isolate_mode_t; 171typedef unsigned __bitwise__ isolate_mode_t;