Re: [PATCH 4/5] mm, swap: Try kzalloc before vzalloc

From: David Rientjes
Date: Fri Mar 17 2017 - 04:53:06 EST


On Fri, 17 Mar 2017, Huang, Ying wrote:

> From: Huang Ying <ying.huang@xxxxxxxxx>
>
> Now vzalloc() is used in swap code to allocate various data
> structures, such as swap cache, swap slots cache, cluster info, etc.
> Because the size may be too large on some system, so that normal
> kzalloc() may fail. But using kzalloc() has some advantages, for
> example, less memory fragmentation, less TLB pressure, etc. So change
> the data structure allocation in swap code to try to use kzalloc()
> firstly, and fallback to vzalloc() if kzalloc() failed.
>

I'm concerned about preferring kzalloc() with __GFP_RECLAIM since the page
allocator will try to do memory compaction for high-order allocations when
the vzalloc() would have succeeded immediately. Do we necessarily want to
spend time doing memory compaction and direct reclaim for contiguous
memory if it's not needed?