On Wed, Dec 19, 2018 at 04:46:56AM +0800, Wei Yang wrote: > Below is a brief call flow for __offline_pages() and > alloc_contig_range(): > > __offline_pages()/alloc_contig_range() > start_isolate_page_range() > set_migratetype_isolate() > drain_all_pages() > drain_all_pages() > > Current logic is: isolate and drain pcp list for each pageblock and > drain pcp list again. This is not necessary and we could just drain pcp > list once after isolate this whole range. > > The reason is start_isolate_page_range() will set the migrate type of > a range to MIGRATE_ISOLATE. After doing so, this range will never be > allocated from Buddy, neither to a real user nor to pcp list. > > Since drain_all_pages() is zone based, by reduce times of > drain_all_pages() also reduce some contention on this particular zone. > > Signed-off-by: Wei Yang <richard.weiyang@xxxxxxxxx> It is a bit late and I hope I did not miss anything, but looks good to me. Reviewed-by: Oscar Salvador <osalvador@xxxxxxx> Thanks! -- Oscar Salvador SUSE L3