Messages in this thread | | | Date | Mon, 18 Jul 2011 17:05:52 +0100 | From | Mel Gorman <> | Subject | Re: [PATCH 1/2] mm: page allocator: Initialise ZLC for first zone eligible for zone_reclaim |
| |
On Mon, Jul 18, 2011 at 09:56:31AM -0500, Christoph Lameter wrote: > On Fri, 15 Jul 2011, Mel Gorman wrote: > > > 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. > > Would it not be easier to set zlc_active and allowednodes based on the > zone having an active ZLC at the start of get_pages()? >
What do you mean by a zones active ZLC? zonelists are on a per-node, not a per-zone basis (see node_zonelist) so a zone doesn't have an active ZLC as such. If the zlc_active is set at the beginning of get_page_from_freelist(), it implies that we are calling zlc_setup() even when the watermarks are met which is unnecessary.
> Buffered_rmqueue is handling the situation of a zone with an ZLC in a > weird way right now since it ignores the (potentially existing) ZLC > for the first pass.
Where does buffered_rmqueue() refer to a zonelist_cache?
> zlc_setup() does a lot of things. So that is because > there is a performance benefit? >
I do not understand this question. Are you asking if zonelist_cache has a performance benefit? The answer is "yes" because you can see how the performance when zone_reclaim degrades when it is not used for the first zone.
-- Mel Gorman SUSE Labs
| |