On Mon, Sep 21, 2020 at 05:36:30PM +0200, Rafael J. Wysocki wrote: ... > > > 3. It is not clear how much mm_reclaim/release is going to help. If > > > the preloading of the swapped-out pages uses some kind of LIFO order, > > > and can batch multiple pages, then it might help. Otherwise demand > > > paging is likely to be more effective. If the preloading does indeed > > > help, it may be useful to explain why in the commit message. > > > > Swap readahead helps a lot in terms of performance if we preload all at > > once. But I agree that for the majority of cases on-demand paging just > > works fine. > > > > My specific use-case for mm_reclaim/release is to make sure a VM > > that is just resumed is immediately "fast" by preloading the swapped-out > > pages back to memory all at once. > > > > Without mm_reclaim/release I've been using the trick of running swapoff > > followed by a swapon to force all the pages back to memory, but it's > > kinda ugly and I was looking for a better way to do this. I've been > > trying also the ptrace() + reading all the VMAs via /proc/pid/mem, it > > works, but it's not as fast as swapoff+swapon or mm_reclaim/release. > > > > I'll report performance numbers of mm_reclaim/release vs ptrace() + > > /proc/pid/mem in the next version of this patch. > > Sorry for the huge delay. > > I'm wondering what your vision regarding the use of this mechanism in > practice is? > > In the "Testing" part of the changelog you say that "in the > 5.7-mm_reclaim case a user-space daemon detects when the system is > idle and triggers the opportunistic memory reclaim via > /sys/power/mm_reclaim/run", but this may not be entirely practical, > because hibernation is not triggered every time the system is idle. > > In particular, how much time is required for the opportunistic reclaim > to run before hibernation so as to make a significant difference? > > Thanks! Hi Raphael, the typical use-case for this feature is to hibernate "spot" cloud instances (low-priority instances that can be stopped at any time to prioritize more privileged instances, see for example [1]). In this scenario hibernation can be used as a "nicer" way to stop low priority instances, instead of shutting them down. Opportunistic memory reclaim doesn't really reduce the time to hibernate overall: performance wise regular hibernation and hibernation w/ opportunistic reclaim require pretty much the same time. But the advantage of opportunistic reclaim is that we can "prepare" a system for hibernation using some idle time, so when we really need to hibernate a low priority instance, because a high priority instance requires to run, hibernation can be significantly faster. What do you think about it? Do you see a better way to achieve this goal? Thanks, -Andrea [1] https://docs.aws.amazon.com/AWSEC2/latest/UserGuide/spot-interruptions.html