linux-mm.kvack.org archive mirror
 help / color / mirror / Atom feed
From: Luigi Semenzato <semenzato@google.com>
To: "Rafael J. Wysocki" <rafael@kernel.org>
Cc: James Morse <james.morse@arm.com>,
	Linux Memory Management List <linux-mm@kvack.org>,
	 Bas Nowaira <bassem@google.com>, Geoff Pike <gpike@google.com>,
	 Linux PM <linux-pm@vger.kernel.org>
Subject: Re: hibernation memory usage
Date: Thu, 17 Oct 2019 15:55:49 -0700	[thread overview]
Message-ID: <CAA25o9QKsTwMcuz1yAT7qtnO2rOUVpzkUmnfSLkfRZAFZ_CE9g@mail.gmail.com> (raw)
In-Reply-To: <CAA25o9TWrLh0o17Epqimsvwe8GoW682jVh_4u2KtjJ7SqKGbsQ@mail.gmail.com>

To make hibernation work, I have been playing with this suggestion:

> Whatever doesn't fit into 50% of RAM needs to be swapped out before
> hibernation.  The efficiency of that depends on the swap handling code
> and the underlying hardware.  If that is efficient enough overall,
> trying to avoid it altogether isn't going to make much of a
> difference.

What's a good way of swapping out 50% of RAM?  I have tried playing
with /proc/sys/vm/min_free_kbytes.  Lowering it below MemFree forces
reclaim and gets swapping started.  Unfortunately the reclaim also
hits file pages, so badly that the system thrashes to a grinding halt.
Swappiness is already set to 100.  Internally it seems that values up
to 200 are valid, and I wish that the entire range was allowed, but I
am not sure it would help.  Right now I am playing with the production
kernel, but similar situations triggered the same behavior in the
Chrome OS kernels, even after internally setting swappiness to values
close to 200.


On Tue, Oct 8, 2019 at 1:10 PM Luigi Semenzato <semenzato@google.com> wrote:
>
> Actually, I think we only need to change the MM watermarks before
> hibernation and after resume.  There's a patch that will do just that:
>
> https://lkml.org/lkml/2013/2/17/210
>
> It didn't make it into mainline (which seems kind of unreasonable,
> since the watermarks themselves are based on heuristics) but shouldn't
> be difficult to apply.  Or are there simpler solutions?
>
> On Tue, Oct 8, 2019 at 9:18 AM Luigi Semenzato <semenzato@google.com> wrote:
> >
> > Yes, that makes sense, thank you.  Use separate partitions for swap
> > and hibernation.
> >
> > Normally the kernel starts swapping out when there's no reclaimable
> > memory, so anon usage will be high.  Do you think cranking up
> > /proc/vm/swappiness would be enough to ensure that file pages stay
> > over 50%?  Or would you use some tricks, such as running a
> > high-priority process which allocates >50% of RAM, thus forcing other
> > anon pages to be swapped out, then killing that process and quickly
> > hibernating before too many pages are brought back in?  Or changing
> > the kernel so that in the first part of hibernation we'll just swap
> > stuff out?
> >
> > On Tue, Oct 8, 2019 at 8:39 AM Rafael J. Wysocki <rafael@kernel.org> wrote:
> > >
> > > On Tue, Oct 8, 2019 at 5:26 PM Luigi Semenzato <semenzato@google.com> wrote:
> > > >
> > > > Thank you for your reply!
> > > >
> > > > I understand the need for saving all state, not just process/task
> > > > state.  But for many of the systems that could benefit from
> > > > hibernation, the majority of RAM is taken by user processes (I am
> > > > thinking laptops).  It should be possible to copy their anonymous
> > > > pages to disk more or less directly, without making an extra copy like
> > > > it's done for all other pages.  I am not sure what happens with kernel
> > > > tasks, but they don't have anonymous pages (that I know).
> > > >
> > > > I am curious to know how/if hibernation is currently used in practice.
> > > > It doesn't seem practical to require that user processes take less
> > > > than 50% of RAM at all times.  There may be special cases in which the
> > > > restriction can be achieved by terminating non-essential processes
> > > > before hibernating, but I don't know of any.
> > > >
> > > > I would also like to know how much work it might take to avoid the
> > > > extra copy of the anonymous pages of frozen processes.
> > >
> > > Whatever doesn't fit into 50% of RAM needs to be swapped out before
> > > hibernation.  The efficiency of that depends on the swap handling code
> > > and the underlying hardware.  If that is efficient enough overall,
> > > trying to avoid it altogether isn't going to make much of a
> > > difference.


  reply	other threads:[~2019-10-17 22:56 UTC|newest]

Thread overview: 8+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2019-10-03 17:16 hibernation memory usage Luigi Semenzato
2019-10-08 10:33 ` James Morse
2019-10-08 15:26   ` Luigi Semenzato
2019-10-08 15:39     ` Rafael J. Wysocki
2019-10-08 16:18       ` Luigi Semenzato
2019-10-08 20:10         ` Luigi Semenzato
2019-10-17 22:55           ` Luigi Semenzato [this message]
2019-10-19  1:49             ` Luigi Semenzato

Reply instructions:

You may reply publicly to this message via plain-text email
using any one of the following methods:

* Save the following mbox file, import it into your mail client,
  and reply-to-all from there: mbox

  Avoid top-posting and favor interleaved quoting:
  https://en.wikipedia.org/wiki/Posting_style#Interleaved_style

* Reply using the --to, --cc, and --in-reply-to
  switches of git-send-email(1):

  git send-email \
    --in-reply-to=CAA25o9QKsTwMcuz1yAT7qtnO2rOUVpzkUmnfSLkfRZAFZ_CE9g@mail.gmail.com \
    --to=semenzato@google.com \
    --cc=bassem@google.com \
    --cc=gpike@google.com \
    --cc=james.morse@arm.com \
    --cc=linux-mm@kvack.org \
    --cc=linux-pm@vger.kernel.org \
    --cc=rafael@kernel.org \
    /path/to/YOUR_REPLY

  https://kernel.org/pub/software/scm/git/docs/git-send-email.html

* If your mail client supports setting the In-Reply-To header
  via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line before the message body.
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for NNTP newsgroup(s).