On Fri, 12 Oct 2018, David Rientjes wrote: > @@ -1803,6 +1804,20 @@ static size_t calculate_slab_order(struct kmem_cache *cachep, > */ > if (left_over * 8 <= (PAGE_SIZE << gfporder)) > break; > + > + /* > + * If a higher gfporder would not reduce internal fragmentation, > + * no need to continue. The preference is to keep gfporder as > + * small as possible so slab allocations can be served from > + * MIGRATE_UNMOVABLE pcp lists to avoid stranding. > + */ I think either go for order 0 (because then you can use the pcp lists) or go as high as possible (then you can allocator larger memory areas with a single pass through the page allocator). But then I am not sure that the whole approach will do any good.