Re: [PATCH 2/3] mm: page allocator: Initialise ZLC for first zoneeligible for zone_reclaim

From: KOSAKI Motohiro
Date: Tue Jul 12 2011 - 21:15:27 EST


(2011/07/11 22:01), Mel Gorman wrote:
> The zonelist cache (ZLC) is used among other things to record if
> zone_reclaim() failed for a particular zone recently. The intention
> is to avoid a high cost scanning extremely long zonelists or scanning
> within the zone uselessly.
>
> Currently the zonelist cache is setup only after the first zone has
> been considered and zone_reclaim() has been called. The objective was
> to avoid a costly setup but zone_reclaim is itself quite expensive. If
> it is failing regularly such as the first eligible zone having mostly
> mapped pages, the cost in scanning and allocation stalls is far higher
> than the ZLC initialisation step.
>
> This patch initialises ZLC before the first eligible zone calls
> zone_reclaim(). Once initialised, it is checked whether the zone
> failed zone_reclaim recently. If it has, the zone is skipped. As the
> first zone is now being checked, additional care has to be taken about
> zones marked full. A zone can be marked "full" because it should not
> have enough unmapped pages for zone_reclaim but this is excessive as
> direct reclaim or kswapd may succeed where zone_reclaim fails. Only
> mark zones "full" after zone_reclaim fails if it failed to reclaim
> enough pages after scanning.
>
> Signed-off-by: Mel Gorman <mgorman@xxxxxxx>

If I understand correctly this patch's procs/cons is,

pros.
1) faster when zone reclaim doesn't work effectively

cons.
2) slower when zone reclaim is off
3) slower when zone recliam works effectively


(2) and (3) are frequently happen than (1), correct?
At least, I think we need to keep zero impact when zone reclaim mode is off.

Thanks.


--
To unsubscribe from this list: send the line "unsubscribe linux-kernel" in
the body of a message to majordomo@xxxxxxxxxxxxxxx
More majordomo info at http://vger.kernel.org/majordomo-info.html
Please read the FAQ at http://www.tux.org/lkml/