On Thu 03-03-16 16:50:16, Vlastimil Babka wrote: > On 03/03/2016 03:10 PM, Joonsoo Kim wrote: > > > >> [...] > >>>>> At least, reset no_progress_loops when did_some_progress. High > >>>>> order allocation up to PAGE_ALLOC_COSTLY_ORDER is as important > >>>>> as order 0. And, reclaim something would increase probability of > >>>>> compaction success. > >>>> > >>>> This is something I still do not understand. Why would reclaiming > >>>> random order-0 pages help compaction? Could you clarify this please? > >>> > >>> I just can tell simple version. Please check the link from me on another reply. > >>> Compaction could scan more range of memory if we have more freepage. > >>> This is due to algorithm limitation. Anyway, so, reclaiming random > >>> order-0 pages helps compaction. > >> > >> I will have a look at that code but this just doesn't make any sense. > >> The compaction should be reshuffling pages, this shouldn't be a function > >> of free memory. > > > > Please refer the link I mentioned before. There is a reason why more free > > memory would help compaction success. Compaction doesn't work > > like as random reshuffling. It has an algorithm to reduce system overall > > fragmentation so there is limitation. > > I proposed another way to get better results from direct compaction - > don't scan for free pages but get them directly from freelists: > > https://lkml.org/lkml/2015/12/3/60 Yes this makes perfect sense to me (with my limited experience in this area so I might be missing some obvious problems this would introduce). The direct compaction for !costly orders is something we should better satisfy immediately. I would just object that this shouldn't be reduced to ASYNC compaction requests only. SYNC* modes are even a more desperate call (at least that is my understanding) for the page and we should treat them the appropriately. > But your redesign would be useful too for kcompactd/khugepaged keeping > overall fragmentation low. kcompactd can handle and should focus on the long term goals. -- Michal Hocko 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>