On Mon, Jul 07, 2014 at 05:19:48PM +0200, Vlastimil Babka wrote: > On 07/04/2014 09:57 AM, Joonsoo Kim wrote: > >If pageblock of page on pcp are isolated now, we should free it to isolate > >buddy list to prevent future allocation on it. But current code doesn't > >do this. > > > >Moreover, there is a freepage counting problem on current code. Although > >pageblock of page on pcp are isolated now, it could go normal buddy list, > >because get_onpcp_migratetype() will return non-isolate migratetype. > > get_onpcp_migratetype() is only introduced in later patch. Yes, I will fix it. > > >In this case, we should do either adding freepage count or changing > >migratetype to MIGRATE_ISOLATE, but, current code do neither. > > I wouldn't say it "do neither". It already limits the freepage > counting to !MIGRATE_ISOLATE case (and it's not converted to > __mod_zone_freepage_state for some reason). So there's accounting > mismatch in addition to buddy list misplacement. Okay. > > >This patch fixes these two problems by handling pageblock migratetype > >before calling __free_one_page(). And, if we find the page on isolated > >pageblock, change migratetype to MIGRATE_ISOLATE to prevent future > >allocation of this page and freepage counting problem. > > So although this is not an addition of a new pageblock migratetype > check to the fast path (the check is already there), I would prefer > removing the check :) Yes, I want to do it if possible. :) > With the approach of pcplists draining > outlined in my reply to 00/10, we would allow a misplacement to > happen (and the page accounted as freepage) immediately followed by > move_frepages_block which would place the page onto isolate freelist > with the rest. Anything newly freed will get isolate_migratetype > determined in free_hot_cold_page or __free_pages_ok (where it would > need moving the migratepage check under the disabled irq part) and > be placed and buddy-merged properly. I explained the problem of this approach in 00/10. Thanks. -- 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>