On Thu, Mar 24, 2011 at 11:11 AM, KOSAKI Motohiro <kosaki.motohiro@xxxxxxxxxxxxxx> wrote: >> On Wed, Mar 23, 2011 at 5:44 PM, KOSAKI Motohiro >> <kosaki.motohiro@xxxxxxxxxxxxxx> wrote: >> >> > Boo. >> >> > You seems forgot why you introduced current all_unreclaimable() function. >> >> > While hibernation, we can't trust all_unreclaimable. >> >> >> >> Hmm. AFAIR, the why we add all_unreclaimable is when the hibernation is going on, >> >> kswapd is freezed so it can't mark the zone->all_unreclaimable. >> >> So I think hibernation can't be a problem. >> >> Am I miss something? >> > >> > Ahh, I missed. thans correct me. Okay, I recognized both mine and your works. >> > Can you please explain why do you like your one than mine? >> >> Just _simple_ :) >> I don't want to change many lines although we can do it simple and very clear. >> >> > >> > btw, Your one is very similar andrey's initial patch. If your one is >> > better, I'd like to ack with andrey instead. >> >> When Andrey sent a patch, I though this as zone_reclaimable() is right >> place to check it than out of zone_reclaimable. Why I didn't ack is >> that Andrey can't explain root cause but you did so you persuade me. >> >> I don't mind if Andrey move the check in zone_reclaimable and resend >> or I resend with concrete description. >> >> Anyway, most important thing is good description to show the root cause. >> It is applied to your patch, too. >> You should have written down root cause in description. > > honestly, I really dislike to use mixing zone->pages_scanned and > zone->all_unreclaimable. because I think it's no simple. I don't > think it's good taste nor easy to review. Even though you who VM > expert didn't understand this issue at once, it's smell of too > mess code. > > therefore, I prefore to take either 1) just remove the function or > 2) just only check zone->all_unreclaimable and oom_killer_disabled > instead zone->pages_scanned. Nick's original goal is to prevent OOM killing until all zone we're interested in are unreclaimable and whether zone is reclaimable or not depends on kswapd. And Nick's original solution is just peeking zone->all_unreclaimable but I made it dirty when we are considering kswapd freeze in hibernation. So I think we still need it to handle kswapd freeze problem and we should add original behavior we missed at that time like below. static bool zone_reclaimable(struct zone *zone) { if (zone->all_unreclaimable) return false; return zone->pages_scanned < zone_reclaimable_pages(zone) * 6; } If you remove the logic, the problem Nick addressed would be showed up, again. How about addressing the problem in your patch? If you remove the logic, __alloc_pages_direct_reclaim lose the chance calling dran_all_pages. Of course, it was a side effect but we should handle it. And my last concern is we are going on right way? I think fundamental cause of this problem is page_scanned and all_unreclaimable is race so isn't the approach fixing the race right way? If it is hard or very costly, your and my approach will be fallback. -- Kind regards, Minchan Kim -- 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 internet charges in Canada: sign http://stopthemeter.ca/ Don't email: <a href=mailto:"dont@xxxxxxxxx"> email@xxxxxxxxx </a>