On 4/26/21 1:25 PM, Michal Hocko wrote: > Using kvmalloc for sub page size objects is suboptimal because kmalloc > can easily fallback into vmalloc under memory pressure and smaller > objects would fragment memory. Therefore replace kvmalloc by a simple > kmalloc. I think you're wrong here: kvmalloc can failback to vmalloc for size > PAGE_SIZE only Please take look at mm/util.c::kvmalloc_node() if (size > PAGE_SIZE) { kmalloc_flags |= __GFP_NOWARN; if (!(kmalloc_flags & __GFP_RETRY_MAYFAIL)) kmalloc_flags |= __GFP_NORETRY; } ret = kmalloc_node(size, kmalloc_flags, node); /* * It doesn't really make sense to fallback to vmalloc for sub page * requests */ if (ret || size <= PAGE_SIZE) return ret; return __vmalloc_node(size, 1, flags, node, __builtin_return_address(0)); For small objects kvmalloc is not much different just from kmalloc, so the patch is mostly cosmetic.