From: David Rientjes <rientjes@google.com>
To: Roman Gushchin <guro@fb.com>
Cc: Michal Hocko <mhocko@kernel.org>,
linux-mm@kvack.org, Vladimir Davydov <vdavydov.dev@gmail.com>,
Johannes Weiner <hannes@cmpxchg.org>,
Tetsuo Handa <penguin-kernel@i-love.sakura.ne.jp>,
Tejun Heo <tj@kernel.org>,
kernel-team@fb.com, cgroups@vger.kernel.org,
linux-doc@vger.kernel.org, linux-kernel@vger.kernel.org
Subject: Re: [v6 2/4] mm, oom: cgroup-aware OOM killer
Date: Thu, 31 Aug 2017 13:01:54 -0700 (PDT) [thread overview]
Message-ID: <alpine.DEB.2.10.1708311246340.130518@chino.kir.corp.google.com> (raw)
In-Reply-To: <20170831133423.GA30125@castle.DHCP.thefacebook.com>
On Thu, 31 Aug 2017, Roman Gushchin wrote:
> So, it looks to me that we're close to an acceptable version,
> and the only remaining question is the default behavior
> (when oom_group is not set).
>
Nit: without knowledge of the implementation, I still don't think I would
know what an "out of memory group" is. Out of memory doesn't necessarily
imply a kill. I suggest oom_kill_all or something that includes the verb.
> Michal suggests to ignore non-oom_group memcgs, and compare tasks with
> memcgs with oom_group set. This makes the whole thing completely opt-in,
> but then we probably need another knob (or value) to select between
> "select memcg, kill biggest task" and "select memcg, kill all tasks".
It seems like that would either bias toward or bias against cgroups that
opt-in. I suggest comparing memory cgroups at each level in the hierarchy
based on your new badness heuristic, regardless of any tunables it has
enabled. Then kill either the largest process or all the processes
attached depending on oom_group or oom_kill_all.
> Also, as the whole thing is based on comparison between processes and
> memcgs, we probably need oom_priority for processes.
I think with the constraints of cgroup v2 that a victim memcg must first
be chosen, and then a victim process attached to that memcg must be chosen
or all eligible processes attached to it be killed, depending on the
tunable.
The simplest and most clear way to define this, in my opinion, is to
implement a heuristic that compares sibling memcgs based on usage, as you
have done. This can be overridden by a memory.oom_priority that userspace
defines, and is enough support for them to change victim selection (no
mount option needed, just set memory.oom_priority). Then kill the largest
process or all eligible processes attached. We only use per-process
priority to override process selection compared to sibling memcgs, but
with cgroup v2 process constraints it doesn't seem like that is within the
scope of your patchset.
next prev parent reply other threads:[~2017-08-31 20:01 UTC|newest]
Thread overview: 26+ messages / expand[flat|nested] mbox.gz Atom feed top
2017-08-23 16:51 [v6 1/4] mm, oom: refactor the oom_kill_process() function Roman Gushchin
2017-08-23 16:51 ` [v6 0/4] cgroup-aware OOM killer Roman Gushchin
2017-08-23 16:51 ` [v6 2/4] mm, oom: " Roman Gushchin
2017-08-23 23:19 ` David Rientjes
2017-08-25 10:57 ` Roman Gushchin
2017-08-24 11:47 ` Michal Hocko
2017-08-24 12:28 ` Roman Gushchin
2017-08-24 12:58 ` Michal Hocko
2017-08-24 13:58 ` Roman Gushchin
2017-08-24 14:13 ` Michal Hocko
2017-08-24 14:58 ` Roman Gushchin
2017-08-25 8:14 ` Michal Hocko
2017-08-25 10:39 ` Roman Gushchin
2017-08-25 10:58 ` Michal Hocko
2017-08-30 11:22 ` Roman Gushchin
2017-08-30 20:56 ` David Rientjes
2017-08-31 13:34 ` Roman Gushchin
2017-08-31 20:01 ` David Rientjes [this message]
2017-08-23 16:52 ` [v6 3/4] mm, oom: introduce oom_priority for memory cgroups Roman Gushchin
2017-08-24 12:10 ` Michal Hocko
2017-08-24 12:51 ` Roman Gushchin
2017-08-24 13:48 ` Michal Hocko
2017-08-24 14:11 ` Roman Gushchin
2017-08-28 20:54 ` David Rientjes
2017-08-23 16:52 ` [v6 4/4] mm, oom, docs: describe the cgroup-aware OOM killer Roman Gushchin
2017-08-24 11:15 ` [v6 1/4] mm, oom: refactor the oom_kill_process() function Michal Hocko
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=alpine.DEB.2.10.1708311246340.130518@chino.kir.corp.google.com \
--to=rientjes@google.com \
--cc=cgroups@vger.kernel.org \
--cc=guro@fb.com \
--cc=hannes@cmpxchg.org \
--cc=kernel-team@fb.com \
--cc=linux-doc@vger.kernel.org \
--cc=linux-kernel@vger.kernel.org \
--cc=linux-mm@kvack.org \
--cc=mhocko@kernel.org \
--cc=penguin-kernel@i-love.sakura.ne.jp \
--cc=tj@kernel.org \
--cc=vdavydov.dev@gmail.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).