From: KOSAKI Motohiro Date: Tue, 26 Oct 2010 21:21:46 +0000 (-0700) Subject: vmscan,tmpfs: treat used once pages on tmpfs as used once X-Git-Tag: accepted/tizen/common/20141203.182822~9794^2~134 X-Git-Url: http://review.tizen.org/git/?a=commitdiff_plain;h=2e30244a7cc1ff09013a1238d415b4076406388e;p=platform%2Fkernel%2Flinux-arm64.git vmscan,tmpfs: treat used once pages on tmpfs as used once When a page has PG_referenced, shrink_page_list() discards it only if it is not dirty. This rule works fine if the backing filesystem is a regular one. PG_dirty is a good signal that the page was used recently because the flusher threads clean pages periodically. In addition, page writeback is costlier than simple page discard. However, when a page is on tmpfs this heuristic doesn't work because flusher threads don't write back tmpfs pages. Consequently tmpfs pages always rotate around the lru twice at least and adds unnecessary lru churn. Simple tmpfs streaming io shouldn't cause large anonymous page swap-out. Remove this unncessary reclaim bonus of tmpfs pages. Signed-off-by: KOSAKI Motohiro Cc: Hugh Dickins Reviewed-by: Johannes Weiner Reviewed-by: Rik van Riel Cc: Minchan Kim Signed-off-by: Andrew Morton Signed-off-by: Linus Torvalds --- diff --git a/mm/vmscan.c b/mm/vmscan.c index 30fd658..b8a6fdc 100644 --- a/mm/vmscan.c +++ b/mm/vmscan.c @@ -651,7 +651,7 @@ static enum page_references page_check_references(struct page *page, } /* Reclaim if clean, defer dirty pages to writeback */ - if (referenced_page) + if (referenced_page && !PageSwapBacked(page)) return PAGEREF_RECLAIM_CLEAN; return PAGEREF_RECLAIM;