On Fri, 10 Dec 2010, Mel Gorman wrote: > When kswapd is woken up for a high-order allocation, it takes account of > the highest usable zone by the caller (the classzone idx). During > allocation, this index is used to select the lowmem_reserve[] that > should be applied to the watermark calculation in zone_watermark_ok(). > > When balancing a node, kswapd considers the highest unbalanced zone to be the > classzone index. This will always be at least be the callers classzone_idx > and can be higher. However, sleeping_prematurely() always considers the > lowest zone (e.g. ZONE_DMA) to be the classzone index. This means that > sleeping_prematurely() can consider a zone to be balanced that is unusable > by the allocation request that originally woke kswapd. This patch changes > sleeping_prematurely() to use a classzone_idx matching the value it used > in balance_pgdat(). > > Signed-off-by: Mel Gorman <mel@xxxxxxxxx> > Reviewed-by: Minchan Kim <minchan.kim@xxxxxxxxx> Reviewed-by: Eric B Munson <emunson@xxxxxxxxx>
Attachment:
signature.asc
Description: Digital signature