On Fri, Jul 08, 2016 at 10:34:48AM +0100, Mel Gorman wrote:
> kswapd scans from highest to lowest for a zone that requires balancing.
> This was necessary when reclaim was per-zone to fairly age pages on lower
> zones.  Now that we are reclaiming on a per-node basis, any eligible zone
> can be used and pages will still be aged fairly.  This patch avoids
> reclaiming excessively unless buffer_heads are over the limit and it's
> necessary to reclaim from a higher zone than requested by the waker of
> kswapd to relieve low memory pressure.
> 
> [hillf...@alibaba-inc.com: Force kswapd reclaim no more than needed]
> Link: 
> http://lkml.kernel.org/r/1466518566-30034-12-git-send-email-mgor...@techsingularity.net
> Signed-off-by: Mel Gorman <mgor...@techsingularity.net>
> Signed-off-by: Hillf Danton <hillf...@alibaba-inc.com>
> Acked-by: Vlastimil Babka <vba...@suse.cz>

Acked-by: Johannes Weiner <han...@cmpxchg.org>

One and a half observations:

> @@ -3144,31 +3144,39 @@ static int balance_pgdat(pg_data_t *pgdat, int order, 
> int classzone_idx)
>  
>               sc.nr_reclaimed = 0;
>  
> -             /* Scan from the highest requested zone to dma */
> -             for (i = classzone_idx; i >= 0; i--) {
> -                     zone = pgdat->node_zones + i;
> -                     if (!populated_zone(zone))
> -                             continue;
> -
> -                     /*
> -                      * If the number of buffer_heads in the machine
> -                      * exceeds the maximum allowed level and this node
> -                      * has a highmem zone, force kswapd to reclaim from
> -                      * it to relieve lowmem pressure.
> -                      */
> -                     if (buffer_heads_over_limit && is_highmem_idx(i)) {
> -                             classzone_idx = i;
> -                             break;
> -                     }
> +             /*
> +              * If the number of buffer_heads in the machine exceeds the
> +              * maximum allowed level then reclaim from all zones. This is
> +              * not specific to highmem as highmem may not exist but it is
> +              * it is expected that buffer_heads are stripped in writeback.

The mention of highmem in this comment make only sense within the
context of this diff; it'll be pretty confusing in the standalone
code.

Also, double "it is" :)

Reply via email to