On Tue, Jul 05, 2016 at 03:11:17PM +0900, Minchan Kim wrote: > > - if (i < 0) > > - goto out; > > + /* > > + * Only reclaim if there are no eligible zones. Check from > > + * high to low zone to avoid prematurely clearing pgdat > > + * congested state. > > I cannot understand "prematurely clearing pgdat congested state". > Could you add more words to clear it out? > It's surprisingly difficult to concisely explain. Is this any better? /* * Only reclaim if there are no eligible zones. Check from * high to low zone as allocations prefer higher zones. * Scanning from low to high zone would allow congestion to be * cleared during a very small window when a small low * zone was balanced even under extreme pressure when the * overall node may be congested. */ > > + */ > > + for (i = classzone_idx; i >= 0; i--) { > > + zone = pgdat->node_zones + i; > > + if (!populated_zone(zone)) > > + continue; > > + > > + if (zone_balanced(zone, sc.order, classzone_idx)) > > If buffer_head is over limit, old logic force to reclaim highmem but > this zone_balanced logic will prevent it. > The old logic was always busted on 64-bit because is_highmem would always be 0. The original intent appears to be that buffer_heads_over_limit would release the buffers when pages went inactive. There are a number of things we treated inconsistently that get fixed up in the series and buffer_heads_over_limit is one of them. -- 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/ . Don't email: <a href=mailto:"dont@xxxxxxxxx"> email@xxxxxxxxx </a>