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

From: Huang\, Ying
Date: Mon Sep 25 2017 - 02:24:53 EST


Minchan Kim <minchan@xxxxxxxxxx> writes:

> On Mon, Sep 25, 2017 at 01:54:42PM +0800, Huang, Ying wrote:
>> 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.
>
> Fair enough. page-cluster from the beginning should have been like that
> instead of vma_ra_max_order.
>
> One more questions: Do we need separate vma_ra_enable?
>
> Can't we disable it via echo 0 > /sys/kernel/mm/swap/vma_ra_max_order
> like page-cluster?

The difference is,

vma_ra_eanble: 0
=> use original physical swap readahead

vma_ra_enable: 1 && vma_ra_max_order: 0
=> use VMA based swap readahead and disable the readahead.

Best Regards,
Huang, Ying