Re: [PATCH] mm, swap: Make VMA based swap readahead configurable

From: Huang\, Ying
Date: Mon Sep 25 2017 - 01:54:50 EST


Hi, Minchan,

Minchan Kim <minchan@xxxxxxxxxx> writes:

> Hi Huang,
>
> On Thu, Sep 21, 2017 at 09:33:10AM +0800, Huang, Ying wrote:
>> From: Huang Ying <ying.huang@xxxxxxxxx>

[snip]

>> diff --git a/mm/Kconfig b/mm/Kconfig
>> index 9c4bdddd80c2..e62c8e2e34ef 100644
>> --- a/mm/Kconfig
>> +++ b/mm/Kconfig
>> @@ -434,6 +434,26 @@ config THP_SWAP
>>
>> For selection by architectures with reasonable THP sizes.
>>
>> +config VMA_SWAP_READAHEAD
>> + bool "VMA based swap readahead"
>> + depends on SWAP
>> + default y
>> + help
>> + VMA based swap readahead detects page accessing pattern in a
>> + VMA and adjust the swap readahead window for pages in the
>> + VMA accordingly. It works better for more complex workload
>> + compared with the original physical swap readahead.
>> +
>> + It can be controlled via the following sysfs interface,
>> +
>> + /sys/kernel/mm/swap/vma_ra_enabled
>> + /sys/kernel/mm/swap/vma_ra_max_order
>
> It might be better to discuss in other thread but if you mention new
> interface here again, I will discuss it here.
>
> We are creating new ABI in here so I want to ask question in here.
>
> Did you consier to use /sys/block/xxx/queue/read_ahead_kb for the
> swap readahead knob? Reusing such common/consistent knob would be better
> than adding new separate konb.

The problem is that the configuration of VMA based swap readahead is
global instead of block device specific. And because it works in
virtual way, that is, the swap blocks on the different block devices may
be readahead together. It's a little hard to use the block device
specific configuration.

>> +
>> + If set to no, the original physical swap readahead will be
>> + used.
>
> In here, could you point out kindly somewhere where describes two
> readahead algorithm in the system?
>
> I don't mean we should explain how it works. Rather than, there are
> two parallel algorithm in swap readahead.
>
> Anonymous memory works based on VMA while shm works based on physical
> block. There are working separately on parallel. Each of knobs are
> vma_ra_max_order and page-cluster, blah, blah.

Sure. I will add some description about that somewhere.

>> +
>> + If unsure, say Y to enable VMA based swap readahead.
>> +
>> config TRANSPARENT_HUGE_PAGECACHE
>> def_bool y
>> depends on TRANSPARENT_HUGEPAGE

[snip]