On Thu, 15 Feb 2018, Matthew Wilcox wrote: > What if ... on startup, slab allocated a MAX_ORDER page for itself. > It would then satisfy its own page allocation requests from this giant > page. If we start to run low on memory in the rest of the system, slab > can be induced to return some of it via its shrinker. If slab runs low > on memory, it tries to allocate another MAX_ORDER page for itself. The inducing of releasing memory back is not there but you can run SLUB with MAX_ORDER allocations by passing "slab_min_order=9" or so on bootup. > I think even this should reduce fragmentation. We could enhance the > fragmentation reduction by noticing when somebody else releases a page > that was previously part of a slab MAX_ORDER page and handing that page > back to slab. When slab notices that it has an entire MAX_ORDER page free > (and sufficient other memory on hand that it's unlikely to need it soon), > it can hand that MAX_ORDER page back to the page allocator. SLUB will release MAX_ORDER pages if they are completely free with the above configuration. -- 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>