Re: [PATCH -v2 1/2] mm, swap: Use kvzalloc to allocate some swap data structure

From: David Rientjes
Date: Mon Mar 20 2017 - 17:32:44 EST


On Mon, 20 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 use kvzalloc() which
> will try kzalloc() firstly, and fallback to vzalloc() if kzalloc()
> failed.
>

As questioned in -v1 of this patch, what is the benefit of directly
compacting and reclaiming memory for high-order pages by first preferring
kmalloc() if this does not require contiguous memory?