Groups | Search | Server Info | Keyboard shortcuts | Login | Register [http] [https] [nntp] [nntps]


Groups > linux.kernel > #1439223 > unrolled thread

[PATCH 06/34] mm, vmscan: have kswapd only scan based on the highest requested zone

Started byMel Gorman <mgorman@techsingularity.net>
First post2016-07-08 11:40 +0200
Last post2016-07-08 11:40 +0200
Articles 1 — 1 participant

Back to article view | Back to linux.kernel

This discussion starts older than the indexed window; earlier articles aren't shown. The article labeled Started by below is the oldest one visible, not the original post.


Contents

  [PATCH 06/34] mm, vmscan: have kswapd only scan based on the highest requested zone Mel Gorman <mgorman@techsingularity.net> - 2016-07-08 11:40 +0200

#1439223 — [PATCH 06/34] mm, vmscan: have kswapd only scan based on the highest requested zone

FromMel Gorman <mgorman@techsingularity.net>
Date2016-07-08 11:40 +0200
Subject[PATCH 06/34] mm, vmscan: have kswapd only scan based on the highest requested zone
Message-ID<rSAqm-2Tv-23@gated-at.bofh.it>
kswapd checks all eligible zones to see if they need balancing even if it
was woken for a lower zone.  This made sense when we reclaimed on a
per-zone basis because we wanted to shrink zones fairly so avoid
age-inversion problems.  Ideally this is completely unnecessary when
reclaiming on a per-node basis.  In theory, there may still be anomalies
when all requests are for lower zones and very old pages are preserved in
higher zones but this should be the exceptional case.

Signed-off-by: Mel Gorman <mgorman@techsingularity.net>
Acked-by: Vlastimil Babka <vbabka@suse.cz>
---
 mm/vmscan.c | 7 ++-----
 1 file changed, 2 insertions(+), 5 deletions(-)

diff --git a/mm/vmscan.c b/mm/vmscan.c
index 766b36bec829..c6e61dae382b 100644
--- a/mm/vmscan.c
+++ b/mm/vmscan.c
@@ -3209,11 +3209,8 @@ static int balance_pgdat(pg_data_t *pgdat, int order, int classzone_idx)
 
 		sc.nr_reclaimed = 0;
 
-		/*
-		 * Scan in the highmem->dma direction for the highest
-		 * zone which needs scanning
-		 */
-		for (i = pgdat->nr_zones - 1; i >= 0; i--) {
+		/* Scan from the highest requested zone to dma */
+		for (i = classzone_idx; i >= 0; i--) {
 			struct zone *zone = pgdat->node_zones + i;
 
 			if (!populated_zone(zone))
-- 
2.6.4

[toc] | [standalone]


Back to top | Article view | linux.kernel


csiph-web