On Fri, 10 Dec 2010 10:55:32 +0000 Mel Gorman <mel@xxxxxxxxx> wrote: > On Fri, Dec 10, 2010 at 10:23:37AM +0900, KAMEZAWA Hiroyuki wrote: > > On Thu, 9 Dec 2010 11:18:19 +0000 > > Mel Gorman <mel@xxxxxxxxx> wrote: > > > > > After DEF_PRIORITY, balance_pgdat() considers all_unreclaimable zones to > > > be balanced but sleeping_prematurely does not. This can force kswapd to > > > stay awake longer than it should. This patch fixes it. > > > > > > Signed-off-by: Mel Gorman <mel@xxxxxxxxx> > > > > Hmm, maybe the logic works well but I don't like very much. > > > > How about adding below instead of pgdat->node_present_pages ? > > > > static unsigned long required_balanced_pages(pgdat, classzone_idx) > > { > > unsigned long present = 0; > > > > for_each_zone_in_node(zone, pgdat) { > > if (zone->all_unreclaimable) /* Ignore unreclaimable zone at checking balance */ > > continue; > > if (zone_idx(zone) > classzone_idx) > > continue; > > present = zone->present_pages; > > } > > return present; > > } > > > > I'm afraid I do not really understand. After your earlier comments, > pgdat_balanced() now looks like > > static bool pgdat_balanced(pg_data_t *pgdat, unsigned long balanced_pages, > int classzone_idx) > { > unsigned long present_pages = 0; > int i; > > for (i = 0; i <= classzone_idx; i++) > present_pages += pgdat->node_zones[i].present_pages; > > return balanced_pages > (present_pages >> 2); > } > > so the classzone is being taken into account. I'm not sure what you're > asking for it to be changed to. Maybe it'll be clearer after V4 comes > out rebased on top of mmotm. > Ah, this seems okay to me. Thank you. -Kame -- To unsubscribe, send a message with 'unsubscribe linux-mm' in the body to majordomo@xxxxxxxxxx For more info on Linux MM, see: http://www.linux-mm.org/ . Fight unfair telecom policy in Canada: sign http://dissolvethecrtc.ca/ Don't email: <a href=mailto:"dont@xxxxxxxxx"> email@xxxxxxxxx </a>