Re: [PATCH 01/10] mm: vmscan: Limit the number of pages kswapd reclaimsat each priority

From: Will Huck
Date: Thu Mar 21 2013 - 20:05:44 EST

Hi Johannes,
On 03/21/2013 11:57 PM, Johannes Weiner wrote:
On Sun, Mar 17, 2013 at 01:04:07PM +0000, Mel Gorman wrote:
The number of pages kswapd can reclaim is bound by the number of pages it
scans which is related to the size of the zone and the scanning priority. In
many cases the priority remains low because it's reset every SWAP_CLUSTER_MAX
reclaimed pages but in the event kswapd scans a large number of pages it
cannot reclaim, it will raise the priority and potentially discard a large
percentage of the zone as sc->nr_to_reclaim is ULONG_MAX. The user-visible
effect is a reclaim "spike" where a large percentage of memory is suddenly
freed. It would be bad enough if this was just unused memory but because
of how anon/file pages are balanced it is possible that applications get
pushed to swap unnecessarily.

This patch limits the number of pages kswapd will reclaim to the high
watermark. Reclaim will will overshoot due to it not being a hard limit as
will -> still?

shrink_lruvec() will ignore the sc.nr_to_reclaim at DEF_PRIORITY but it
prevents kswapd reclaiming the world at higher priorities. The number of
pages it reclaims is not adjusted for high-order allocations as kswapd will
reclaim excessively if it is to balance zones for high-order allocations.
I don't really understand this last sentence. Is the excessive
reclaim a result of the patch, a description of what's happening

Signed-off-by: Mel Gorman <mgorman@xxxxxxx>
Nice, thank you. Using the high watermark for larger zones is more
reasonable than my hack that just always went with SWAP_CLUSTER_MAX,
what with inter-zone LRU cycle time balancing and all.

Acked-by: Johannes Weiner <hannes@xxxxxxxxxxx>

One offline question, how to understand this in function balance_pgdat:
* Do some background aging of the anon list, to give
* pages a chance to be referenced before reclaiming.
age_acitve_anon(zone, &sc);

To unsubscribe, send a message with 'unsubscribe linux-mm' in
the body to majordomo@xxxxxxxxxx For more info on Linux MM,
see: .
Don't email: <a href=mailto:"dont@xxxxxxxxx";> email@xxxxxxxxx </a>

To unsubscribe from this list: send the line "unsubscribe linux-kernel" in
the body of a message to majordomo@xxxxxxxxxxxxxxx
More majordomo info at
Please read the FAQ at