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 -- 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>