linux-mm.kvack.org archive mirror
 help / color / mirror / Atom feed
From: Tim Murray <timmurray@google.com>
To: Michal Hocko <mhocko@kernel.org>
Cc: "Martijn Coenen" <maco@google.com>,
	"John Stultz" <john.stultz@linaro.org>,
	"Greg KH" <gregkh@linuxfoundation.org>,
	"Arve Hjønnevåg" <arve@android.com>,
	"Riley Andrews" <riandrews@android.com>,
	devel@driverdev.osuosl.org, LKML <linux-kernel@vger.kernel.org>,
	Linux-MM <linux-mm@kvack.org>, "Todd Kjos" <tkjos@google.com>,
	"Android Kernel Team" <kernel-team@android.com>,
	"Rom Lemarchand" <romlem@google.com>
Subject: Re: [PATCH] staging, android: remove lowmemory killer from the tree
Date: Fri, 24 Feb 2017 10:38:02 -0800	[thread overview]
Message-ID: <CAEe=SxnHWw0aU6SUO6Ce2YCDxmP4KgmrbShh0uudkuBO1FEFWg@mail.gmail.com> (raw)
In-Reply-To: <20170224093405.GD19161@dhcp22.suse.cz>

[-- Attachment #1: Type: text/plain, Size: 3408 bytes --]

Hi all, I've recently been looking at lowmemorykiller, userspace lmkd, and
memory cgroups on Android.

First of all, no, an Android device will probably not function without a
kernel or userspace version of lowmemorykiller. Android userspace expects
that if there are many apps running in the background on a machine and the
foreground app allocates additional memory, something on the system will
kill background apps to free up more memory. If this doesn't happen, I
expect that at the very least you'll see page cache thrashing, and you'll
probably see the OOM killer run regularly, which has a tendency to cause
Android userspace to restart. To the best of my knowledge, no device has
shipped with a userspace lmkd.

Second, yes, the current design and implementation of lowmemorykiller are
unsatisfactory. I now have some concrete evidence that the design of
lowmemorykiller is directly responsible for some very negative user-visible
behaviors (particularly the triggers for when to kill), so I'm currently
working on an overhaul to the Android memory model that would use mem
cgroups and userspace lmkd to make smarter decisions about reclaim vs
killing. Yes, this means that we would move to vmpressure (which will
require improvements to vmpressure). I can't give a firm ETA for this, as
it's still in the prototype phase, but the initial results are promising.

On Fri, Feb 24, 2017 at 1:34 AM, Michal Hocko <mhocko@kernel.org> wrote:

> On Thu 23-02-17 21:36:00, Martijn Coenen wrote:
> > On Thu, Feb 23, 2017 at 9:24 PM, John Stultz <john.stultz@linaro.org>
> wrote:
> [...]
> > > This is reportedly because while the mempressure notifiers provide a
> > > the signal to userspace, the work the deamon then has to do to look up
> > > per process memory usage, in order to figure out who is best to kill
> > > at that point was too costly and resulted in poor device performance.
> >
> > In particular, mempressure requires memory cgroups to function, and we
> > saw performance regressions due to the accounting done in mem cgroups.
> > At the time we didn't have enough time left to solve this before the
> > release, and we reverted back to kernel lmkd.
>
> I would be more than interested to hear details. We used to have some
> visible charge path performance footprint but this should be gone now.
>
> [...]
> > > It would be great however to get a discussion going here on what the
> > > ulmkd needs from the kernel in order to efficiently determine who best
> > > to kill, and how we might best implement that.
> >
> > The two main issues I think we need to address are:
> > 1) Getting the right granularity of events from the kernel; I once
> > tried to submit a patch upstream to address this:
> > https://lkml.org/lkml/2016/2/24/582
>
> Not only that, the implementation of tht vmpressure needs some serious
> rethinking as well. The current one can hit critical events
> unexpectedly. The calculation also doesn't consider slab reclaim
> sensibly.
>
> > 2) Find out where exactly the memory cgroup overhead is coming from,
> > and how to reduce it or work around it to acceptable levels for
> > Android. This was also on 3.10, and maybe this has long been fixed or
> > improved in more recent kernel versions.
>
> 3e32cb2e0a12 ("mm: memcontrol: lockless page counters") has improved
> situation a lot as all the charging is lockless since then (3.19).
> --
> Michal Hocko
> SUSE Labs
>

[-- Attachment #2: Type: text/html, Size: 4299 bytes --]

  reply	other threads:[~2017-02-24 18:38 UTC|newest]

Thread overview: 21+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2017-02-22 12:01 [PATCH] staging, android: remove lowmemory killer from the tree Michal Hocko
2017-02-23 20:24 ` John Stultz
2017-02-23 20:28   ` Todd Kjos
2017-02-23 20:36   ` Martijn Coenen
2017-02-24  9:34     ` Michal Hocko
2017-02-24 18:38       ` Tim Murray [this message]
2017-02-24 18:42         ` Rom Lemarchand
2017-03-04  2:06           ` Tim Murray
2017-02-24 12:19     ` peter enderborg
2017-02-24 12:28       ` Michal Hocko
2017-02-24 13:16         ` peter enderborg
2017-02-24 14:11           ` Michal Hocko
2017-02-24 14:42             ` peter enderborg
2017-02-24 15:03               ` Michal Hocko
2017-02-24 15:40                 ` peter enderborg
2017-02-24 15:52                   ` Michal Hocko
2017-02-24  9:38   ` Michal Hocko
2017-03-09  9:15 ` Michal Hocko
2017-03-09  9:30   ` Greg KH
2017-03-09 10:00     ` Michal Hocko
2017-03-09 12:48       ` Greg KH

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='CAEe=SxnHWw0aU6SUO6Ce2YCDxmP4KgmrbShh0uudkuBO1FEFWg@mail.gmail.com' \
    --to=timmurray@google.com \
    --cc=arve@android.com \
    --cc=devel@driverdev.osuosl.org \
    --cc=gregkh@linuxfoundation.org \
    --cc=john.stultz@linaro.org \
    --cc=kernel-team@android.com \
    --cc=linux-kernel@vger.kernel.org \
    --cc=linux-mm@kvack.org \
    --cc=maco@google.com \
    --cc=mhocko@kernel.org \
    --cc=riandrews@android.com \
    --cc=romlem@google.com \
    --cc=tkjos@google.com \
    /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).