Re: [PATCH 1/2] vmscan: fix initial shrinker size handling

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

 



Andrew Morton wrote:
<snip>
  		long new_nr;
  		long batch_size = shrinker->batch ? shrinker->batch
  						  : SHRINK_BATCH;

+		max_pass = do_shrinker_shrink(shrinker, shrink, 0);
+		if (max_pass<= 0)
+			continue;
+
  		/*
  		 * copy the current shrinker scan count into a local variable
  		 * and zero it so that other concurrent shrinker invocations
@@ -266,7 +270,6 @@ unsigned long shrink_slab(struct shrink_control *shrink,
  		} while (cmpxchg(&shrinker->nr, nr, 0) != nr);

  		total_scan = nr;
-		max_pass = do_shrinker_shrink(shrinker, shrink, 0);
  		delta = (4 * nr_pages_scanned) / shrinker->seeks;
  		delta *= max_pass;
  		do_div(delta, lru_pages + 1);

Why was the shrinker call moved to before the alteration of shrinker->nr?

I think, if we skip shrinker we shouldn't reset accumulated pressure,
because next reclaimer (for example with less strict gfp) can use it.

--
To unsubscribe, send a message with 'unsubscribe linux-mm' in
the body to majordomo@xxxxxxxxx.  For more info on Linux MM,
see: http://www.linux-mm.org/ .
Fight unfair telecom internet charges in Canada: sign http://stopthemeter.ca/
Don't email: <a href=mailto:"dont@xxxxxxxxx";> email@xxxxxxxxx </a>


[Index of Archives]     [Linux ARM Kernel]     [Linux ARM]     [Linux Omap]     [Fedora ARM]     [IETF Annouce]     [Bugtraq]     [Linux]     [Linux OMAP]     [Linux MIPS]     [ECOS]     [Asterisk Internet PBX]     [Linux API]