All of lore.kernel.org
 help / color / mirror / Atom feed
* [patch 1/2] mm: vmscan: fix force-scanning small targets without swap
@ 2011-08-11 20:31 ` Johannes Weiner
  0 siblings, 0 replies; 30+ messages in thread
From: Johannes Weiner @ 2011-08-11 20:31 UTC (permalink / raw)
  To: Andrew Morton
  Cc: linux-mm, linux-kernel, KAMEZAWA Hiroyuki, Michal Hocko,
	Ying Han, Balbir Singh, KOSAKI Motohiro, Daisuke Nishimura,
	Mel Gorman

Without swap, anonymous pages are not scanned.  As such, they should
not count when considering force-scanning a small target if there is
no swap.

Otherwise, targets are not force-scanned even when their effective
scan number is zero and the other conditions--kswapd/memcg--apply.

Signed-off-by: Johannes Weiner <jweiner@redhat.com>
Cc: KAMEZAWA Hiroyuki <kamezawa.hiroyu@jp.fujitsu.com>
Cc: Michal Hocko <mhocko@suse.cz>
Cc: Ying Han <yinghan@google.com>
Cc: Balbir Singh <bsingharora@gmail.com>
Cc: KOSAKI Motohiro <kosaki.motohiro@jp.fujitsu.com>
Cc: Daisuke Nishimura <nishimura@mxp.nes.nec.co.jp>
Cc: Mel Gorman <mel@csn.ul.ie>
---
 mm/vmscan.c |   27 ++++++++++++---------------
 1 files changed, 12 insertions(+), 15 deletions(-)

diff --git a/mm/vmscan.c b/mm/vmscan.c
index 3153729..96061d7 100644
--- a/mm/vmscan.c
+++ b/mm/vmscan.c
@@ -1830,23 +1830,15 @@ static void get_scan_count(struct zone *zone, struct scan_control *sc,
 	u64 fraction[2], denominator;
 	enum lru_list l;
 	int noswap = 0;
-	int force_scan = 0;
+	bool force_scan = false;
 	unsigned long nr_force_scan[2];
 
-
-	anon  = zone_nr_lru_pages(zone, sc, LRU_ACTIVE_ANON) +
-		zone_nr_lru_pages(zone, sc, LRU_INACTIVE_ANON);
-	file  = zone_nr_lru_pages(zone, sc, LRU_ACTIVE_FILE) +
-		zone_nr_lru_pages(zone, sc, LRU_INACTIVE_FILE);
-
-	if (((anon + file) >> priority) < SWAP_CLUSTER_MAX) {
-		/* kswapd does zone balancing and need to scan this zone */
-		if (scanning_global_lru(sc) && current_is_kswapd())
-			force_scan = 1;
-		/* memcg may have small limit and need to avoid priority drop */
-		if (!scanning_global_lru(sc))
-			force_scan = 1;
-	}
+	/* kswapd does zone balancing and need to scan this zone */
+	if (scanning_global_lru(sc) && current_is_kswapd())
+		force_scan = true;
+	/* memcg may have small limit and need to avoid priority drop */
+	if (!scanning_global_lru(sc))
+		force_scan = true;
 
 	/* If we have no swap space, do not bother scanning anon pages. */
 	if (!sc->may_swap || (nr_swap_pages <= 0)) {
@@ -1859,6 +1851,11 @@ static void get_scan_count(struct zone *zone, struct scan_control *sc,
 		goto out;
 	}
 
+	anon  = zone_nr_lru_pages(zone, sc, LRU_ACTIVE_ANON) +
+		zone_nr_lru_pages(zone, sc, LRU_INACTIVE_ANON);
+	file  = zone_nr_lru_pages(zone, sc, LRU_ACTIVE_FILE) +
+		zone_nr_lru_pages(zone, sc, LRU_INACTIVE_FILE);
+
 	if (scanning_global_lru(sc)) {
 		free  = zone_page_state(zone, NR_FREE_PAGES);
 		/* If we have very few page cache pages,
-- 
1.7.6


^ permalink raw reply related	[flat|nested] 30+ messages in thread

end of thread, other threads:[~2011-08-31 23:38 UTC | newest]

Thread overview: 30+ messages (download: mbox.gz / follow: Atom feed)
-- links below jump to the message on this page --
2011-08-11 20:31 [patch 1/2] mm: vmscan: fix force-scanning small targets without swap Johannes Weiner
2011-08-11 20:31 ` Johannes Weiner
2011-08-11 20:31 ` [patch 2/2] mm: vmscan: drop nr_force_scan[] from get_scan_count Johannes Weiner
2011-08-11 20:31   ` Johannes Weiner
2011-08-11 23:44   ` Minchan Kim
2011-08-11 23:44     ` Minchan Kim
2011-08-12  6:58     ` Johannes Weiner
2011-08-12  6:58       ` Johannes Weiner
2011-08-12  7:04       ` Minchan Kim
2011-08-12  7:04         ` Minchan Kim
2011-08-12 13:33       ` Michal Hocko
2011-08-12 13:33         ` Michal Hocko
2011-08-17 14:00       ` Mel Gorman
2011-08-17 14:00         ` Mel Gorman
2011-08-17  1:12   ` KAMEZAWA Hiroyuki
2011-08-17  1:12     ` KAMEZAWA Hiroyuki
2011-08-11 23:16 ` [patch 1/2] mm: vmscan: fix force-scanning small targets without swap Minchan Kim
2011-08-11 23:16   ` Minchan Kim
2011-08-12 13:10 ` Michal Hocko
2011-08-12 13:10   ` Michal Hocko
2011-08-12 13:13   ` Michal Hocko
2011-08-12 13:13     ` Michal Hocko
2011-08-17  1:12 ` KAMEZAWA Hiroyuki
2011-08-17  1:12   ` KAMEZAWA Hiroyuki
2011-08-17 13:38 ` Mel Gorman
2011-08-17 13:38   ` Mel Gorman
2011-08-29 16:08 ` Johannes Weiner
2011-08-29 16:08   ` Johannes Weiner
2011-08-31 23:37   ` Andrew Morton
2011-08-31 23:37     ` Andrew Morton

This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.