Re: [PATCH v2] mm: swap: use fixed-size readahead during swapoff

From: Andrea Righi
Date: Mon Apr 13 2020 - 09:27:04 EST


On Mon, Apr 13, 2020 at 09:13:33PM +0800, Huang, Ying wrote:
> Andrea Righi <andrea.righi@xxxxxxxxxxxxx> writes:
>
> > The global swap-in readahead policy takes in account the previous access
> > patterns, using a scaling heuristic to determine the optimal readahead
> > chunk dynamically.
> >
> > This works pretty well in most cases, but like any heuristic there are
> > specific cases when this approach is not ideal, for example the swapoff
> > scenario.
> >
> > During swapoff we just want to load back into memory all the swapped-out
> > pages and for this specific use case a fixed-size readahead is more
> > efficient.
> >
> > The specific use case this patch is addressing is to improve swapoff
> > performance when a VM has been hibernated, resumed and all memory needs
> > to be forced back to RAM by disabling swap (see the test case below).
>
> Why do you need to swapoff after resuming? The swap device isn't used
> except hibernation? I guess the process is,
>
> 1) add swap device to VM
> 2) hibernate
> 3) resume
> 4) swapoff

Correct, the swap device is used only for hibernation, when the system
is resumed the swap is disabled (swapoff).

>
> Some pages are swapped out in step 2? If os, can we just set
> /proc/sys/vm/swappiness to 0 to avoid swapping in step 2?

Sorry, can you elaborate more on this? All anonymous pages are swapped
out during step 2, it doesn't matter if we set swappiness to 0, they are
swapped out anyway, because we need save them somewhere in order to
hibernate, shutting down the system.

Thanks,
-Andrea