From: Roman Gushchin <guro@fb.com>
To: linux-mm@kvack.org
Cc: Roman Gushchin <guro@fb.com>, Michal Hocko <mhocko@kernel.org>,
Vladimir Davydov <vdavydov.dev@gmail.com>,
Johannes Weiner <hannes@cmpxchg.org>,
Tetsuo Handa <penguin-kernel@I-love.SAKURA.ne.jp>,
Andrew Morton <akpm@linux-foundation.org>,
David Rientjes <rientjes@google.com>, Tejun Heo <tj@kernel.org>,
kernel-team@fb.com, cgroups@vger.kernel.org,
linux-doc@vger.kernel.org, linux-kernel@vger.kernel.org
Subject: [v10 6/6] mm, oom, docs: describe the cgroup-aware OOM killer
Date: Wed, 4 Oct 2017 16:46:38 +0100 [thread overview]
Message-ID: <20171004154638.710-7-guro@fb.com> (raw)
In-Reply-To: <20171004154638.710-1-guro@fb.com>
Document the cgroup-aware OOM killer.
Signed-off-by: Roman Gushchin <guro@fb.com>
Cc: Michal Hocko <mhocko@kernel.org>
Cc: Vladimir Davydov <vdavydov.dev@gmail.com>
Cc: Johannes Weiner <hannes@cmpxchg.org>
Cc: Tetsuo Handa <penguin-kernel@I-love.SAKURA.ne.jp>
Cc: Andrew Morton <akpm@linux-foundation.org>
Cc: David Rientjes <rientjes@google.com>
Cc: Tejun Heo <tj@kernel.org>
Cc: kernel-team@fb.com
Cc: cgroups@vger.kernel.org
Cc: linux-doc@vger.kernel.org
Cc: linux-kernel@vger.kernel.org
Cc: linux-mm@kvack.org
---
Documentation/cgroup-v2.txt | 51 +++++++++++++++++++++++++++++++++++++++++++++
1 file changed, 51 insertions(+)
diff --git a/Documentation/cgroup-v2.txt b/Documentation/cgroup-v2.txt
index 3f8216912df0..28429e62b0ea 100644
--- a/Documentation/cgroup-v2.txt
+++ b/Documentation/cgroup-v2.txt
@@ -48,6 +48,7 @@ v1 is available under Documentation/cgroup-v1/.
5-2-1. Memory Interface Files
5-2-2. Usage Guidelines
5-2-3. Memory Ownership
+ 5-2-4. OOM Killer
5-3. IO
5-3-1. IO Interface Files
5-3-2. Writeback
@@ -1043,6 +1044,28 @@ PAGE_SIZE multiple when read back.
high limit is used and monitored properly, this limit's
utility is limited to providing the final safety net.
+ memory.oom_group
+
+ A read-write single value file which exists on non-root
+ cgroups. The default is "0".
+
+ If set, OOM killer will consider the memory cgroup as an
+ indivisible memory consumers and compare it with other memory
+ consumers by it's memory footprint.
+ If such memory cgroup is selected as an OOM victim, all
+ processes belonging to it or it's descendants will be killed.
+
+ This applies to system-wide OOM conditions and reaching
+ the hard memory limit of the cgroup and their ancestor.
+ If OOM condition happens in a descendant cgroup with it's own
+ memory limit, the memory cgroup can't be considered
+ as an OOM victim, and OOM killer will not kill all belonging
+ tasks.
+
+ Also, OOM killer respects the /proc/pid/oom_score_adj value -1000,
+ and will never kill the unkillable task, even if memory.oom_group
+ is set.
+
memory.events
A read-only flat-keyed file which exists on non-root cgroups.
The following entries are defined. Unless specified
@@ -1246,6 +1269,34 @@ to be accessed repeatedly by other cgroups, it may make sense to use
POSIX_FADV_DONTNEED to relinquish the ownership of memory areas
belonging to the affected files to ensure correct memory ownership.
+OOM Killer
+~~~~~~~~~~
+
+Cgroup v2 memory controller implements a cgroup-aware OOM killer.
+It means that it treats cgroups as first class OOM entities.
+
+Under OOM conditions the memory controller tries to make the best
+choice of a victim, looking for a memory cgroup with the largest
+memory footprint, considering leaf cgroups and cgroups with the
+memory.oom_group option set, which are considered to be an indivisible
+memory consumers.
+
+By default, OOM killer will kill the biggest task in the selected
+memory cgroup. A user can change this behavior by enabling
+the per-cgroup memory.oom_group option. If set, it causes
+the OOM killer to kill all processes attached to the cgroup,
+except processes with oom_score_adj set to -1000.
+
+This affects both system- and cgroup-wide OOMs. For a cgroup-wide OOM
+the memory controller considers only cgroups belonging to the sub-tree
+of the OOM'ing cgroup.
+
+The root cgroup is treated as a leaf memory cgroup, so it's compared
+with other leaf memory cgroups and cgroups with oom_group option set.
+
+If there are no cgroups with the enabled memory controller,
+the OOM killer is using the "traditional" process-based approach.
+
IO
--
--
2.13.6
--
To unsubscribe, send a message with 'unsubscribe linux-mm' in
the body to majordomo@kvack.org. For more info on Linux MM,
see: http://www.linux-mm.org/ .
Don't email: <a href=mailto:"dont@kvack.org"> email@kvack.org </a>
WARNING: multiple messages have this Message-ID (diff)
From: Roman Gushchin <guro@fb.com>
To: <linux-mm@kvack.org>
Cc: Roman Gushchin <guro@fb.com>, Michal Hocko <mhocko@kernel.org>,
Vladimir Davydov <vdavydov.dev@gmail.com>,
Johannes Weiner <hannes@cmpxchg.org>,
Tetsuo Handa <penguin-kernel@I-love.SAKURA.ne.jp>,
Andrew Morton <akpm@linux-foundation.org>,
David Rientjes <rientjes@google.com>, Tejun Heo <tj@kernel.org>,
<kernel-team@fb.com>, <cgroups@vger.kernel.org>,
<linux-doc@vger.kernel.org>, <linux-kernel@vger.kernel.org>
Subject: [v10 6/6] mm, oom, docs: describe the cgroup-aware OOM killer
Date: Wed, 4 Oct 2017 16:46:38 +0100 [thread overview]
Message-ID: <20171004154638.710-7-guro@fb.com> (raw)
In-Reply-To: <20171004154638.710-1-guro@fb.com>
Document the cgroup-aware OOM killer.
Signed-off-by: Roman Gushchin <guro@fb.com>
Cc: Michal Hocko <mhocko@kernel.org>
Cc: Vladimir Davydov <vdavydov.dev@gmail.com>
Cc: Johannes Weiner <hannes@cmpxchg.org>
Cc: Tetsuo Handa <penguin-kernel@I-love.SAKURA.ne.jp>
Cc: Andrew Morton <akpm@linux-foundation.org>
Cc: David Rientjes <rientjes@google.com>
Cc: Tejun Heo <tj@kernel.org>
Cc: kernel-team@fb.com
Cc: cgroups@vger.kernel.org
Cc: linux-doc@vger.kernel.org
Cc: linux-kernel@vger.kernel.org
Cc: linux-mm@kvack.org
---
Documentation/cgroup-v2.txt | 51 +++++++++++++++++++++++++++++++++++++++++++++
1 file changed, 51 insertions(+)
diff --git a/Documentation/cgroup-v2.txt b/Documentation/cgroup-v2.txt
index 3f8216912df0..28429e62b0ea 100644
--- a/Documentation/cgroup-v2.txt
+++ b/Documentation/cgroup-v2.txt
@@ -48,6 +48,7 @@ v1 is available under Documentation/cgroup-v1/.
5-2-1. Memory Interface Files
5-2-2. Usage Guidelines
5-2-3. Memory Ownership
+ 5-2-4. OOM Killer
5-3. IO
5-3-1. IO Interface Files
5-3-2. Writeback
@@ -1043,6 +1044,28 @@ PAGE_SIZE multiple when read back.
high limit is used and monitored properly, this limit's
utility is limited to providing the final safety net.
+ memory.oom_group
+
+ A read-write single value file which exists on non-root
+ cgroups. The default is "0".
+
+ If set, OOM killer will consider the memory cgroup as an
+ indivisible memory consumers and compare it with other memory
+ consumers by it's memory footprint.
+ If such memory cgroup is selected as an OOM victim, all
+ processes belonging to it or it's descendants will be killed.
+
+ This applies to system-wide OOM conditions and reaching
+ the hard memory limit of the cgroup and their ancestor.
+ If OOM condition happens in a descendant cgroup with it's own
+ memory limit, the memory cgroup can't be considered
+ as an OOM victim, and OOM killer will not kill all belonging
+ tasks.
+
+ Also, OOM killer respects the /proc/pid/oom_score_adj value -1000,
+ and will never kill the unkillable task, even if memory.oom_group
+ is set.
+
memory.events
A read-only flat-keyed file which exists on non-root cgroups.
The following entries are defined. Unless specified
@@ -1246,6 +1269,34 @@ to be accessed repeatedly by other cgroups, it may make sense to use
POSIX_FADV_DONTNEED to relinquish the ownership of memory areas
belonging to the affected files to ensure correct memory ownership.
+OOM Killer
+~~~~~~~~~~
+
+Cgroup v2 memory controller implements a cgroup-aware OOM killer.
+It means that it treats cgroups as first class OOM entities.
+
+Under OOM conditions the memory controller tries to make the best
+choice of a victim, looking for a memory cgroup with the largest
+memory footprint, considering leaf cgroups and cgroups with the
+memory.oom_group option set, which are considered to be an indivisible
+memory consumers.
+
+By default, OOM killer will kill the biggest task in the selected
+memory cgroup. A user can change this behavior by enabling
+the per-cgroup memory.oom_group option. If set, it causes
+the OOM killer to kill all processes attached to the cgroup,
+except processes with oom_score_adj set to -1000.
+
+This affects both system- and cgroup-wide OOMs. For a cgroup-wide OOM
+the memory controller considers only cgroups belonging to the sub-tree
+of the OOM'ing cgroup.
+
+The root cgroup is treated as a leaf memory cgroup, so it's compared
+with other leaf memory cgroups and cgroups with oom_group option set.
+
+If there are no cgroups with the enabled memory controller,
+the OOM killer is using the "traditional" process-based approach.
+
IO
--
--
2.13.6
next prev parent reply other threads:[~2017-10-04 15:46 UTC|newest]
Thread overview: 99+ messages / expand[flat|nested] mbox.gz Atom feed top
2017-10-04 15:46 [v10 0/6] cgroup-aware OOM killer Roman Gushchin
2017-10-04 15:46 ` Roman Gushchin
2017-10-04 15:46 ` [v10 1/6] mm, oom: refactor the oom_kill_process() function Roman Gushchin
2017-10-04 15:46 ` Roman Gushchin
2017-10-04 15:46 ` Roman Gushchin
[not found] ` <20171004154638.710-2-guro-b10kYP2dOMg@public.gmane.org>
2017-10-04 19:14 ` Johannes Weiner
2017-10-04 19:14 ` Johannes Weiner
2017-10-04 19:14 ` Johannes Weiner
2017-10-04 15:46 ` [v10 2/6] mm: implement mem_cgroup_scan_tasks() for the root memory cgroup Roman Gushchin
2017-10-04 15:46 ` Roman Gushchin
2017-10-04 19:15 ` Johannes Weiner
2017-10-04 19:15 ` Johannes Weiner
2017-10-04 20:10 ` David Rientjes
2017-10-04 20:10 ` David Rientjes
2017-10-04 15:46 ` [v10 3/6] mm, oom: cgroup-aware OOM killer Roman Gushchin
2017-10-04 15:46 ` Roman Gushchin
2017-10-04 19:27 ` Johannes Weiner
2017-10-04 19:27 ` Johannes Weiner
2017-10-04 19:51 ` Roman Gushchin
2017-10-04 19:51 ` Roman Gushchin
2017-10-04 19:51 ` Roman Gushchin
2017-10-04 20:17 ` David Rientjes
2017-10-04 20:17 ` David Rientjes
[not found] ` <alpine.DEB.2.10.1710041316120.67374-X6Q0R45D7oAcqpCFd4KODRPsWskHk0ljAL8bYrjMMd8@public.gmane.org>
2017-10-04 20:22 ` Roman Gushchin
2017-10-04 20:22 ` Roman Gushchin
2017-10-04 20:22 ` Roman Gushchin
2017-10-04 20:31 ` Johannes Weiner
2017-10-04 20:31 ` Johannes Weiner
2017-10-05 11:14 ` Michal Hocko
2017-10-05 11:14 ` Michal Hocko
2017-10-04 19:48 ` Shakeel Butt
2017-10-04 19:48 ` Shakeel Butt
2017-10-04 20:15 ` Roman Gushchin
2017-10-04 20:15 ` Roman Gushchin
2017-10-04 21:24 ` Shakeel Butt
2017-10-04 21:24 ` Shakeel Butt
[not found] ` <CALvZod45ObeQwq-pKeqyLe2bNwfKAr0majCbNfqPOEJL+AeiNw-JsoAwUIsXosN+BqQ9rBEUg@public.gmane.org>
2017-10-05 10:27 ` Roman Gushchin
2017-10-05 10:27 ` Roman Gushchin
2017-10-05 10:27 ` Roman Gushchin
[not found] ` <20171005102707.GA12982-2xczL/1GIl5a1dPMsufgnw2O0Ztt9esIQQ4Iyu8u01E@public.gmane.org>
2017-10-05 11:12 ` Michal Hocko
2017-10-05 11:12 ` Michal Hocko
2017-10-05 11:12 ` Michal Hocko
2017-10-05 11:45 ` Roman Gushchin
2017-10-05 11:45 ` Roman Gushchin
[not found] ` <20171004154638.710-4-guro-b10kYP2dOMg@public.gmane.org>
2017-10-04 20:27 ` David Rientjes
2017-10-04 20:27 ` David Rientjes
2017-10-04 20:27 ` David Rientjes
2017-10-04 20:41 ` Johannes Weiner
2017-10-04 20:41 ` Johannes Weiner
2017-10-05 8:40 ` David Rientjes
2017-10-05 8:40 ` David Rientjes
2017-10-05 10:27 ` Johannes Weiner
2017-10-05 10:27 ` Johannes Weiner
2017-10-05 21:53 ` David Rientjes
2017-10-05 21:53 ` David Rientjes
2017-10-05 10:44 ` Roman Gushchin
2017-10-05 10:44 ` Roman Gushchin
2017-10-05 22:02 ` David Rientjes
2017-10-05 22:02 ` David Rientjes
2017-10-06 5:43 ` Michal Hocko
2017-10-06 5:43 ` Michal Hocko
2017-10-05 11:40 ` Michal Hocko
2017-10-05 11:40 ` Michal Hocko
2017-10-04 15:46 ` [v10 4/6] mm, oom: introduce memory.oom_group Roman Gushchin
2017-10-04 15:46 ` Roman Gushchin
2017-10-04 15:46 ` Roman Gushchin
2017-10-04 19:37 ` Johannes Weiner
2017-10-04 19:37 ` Johannes Weiner
2017-10-05 12:06 ` Michal Hocko
2017-10-05 12:06 ` Michal Hocko
2017-10-05 12:32 ` Roman Gushchin
2017-10-05 12:32 ` Roman Gushchin
2017-10-05 12:32 ` Roman Gushchin
2017-10-05 12:58 ` Michal Hocko
2017-10-05 12:58 ` Michal Hocko
2017-10-04 15:46 ` [v10 5/6] mm, oom: add cgroup v2 mount option for cgroup-aware OOM killer Roman Gushchin
2017-10-04 15:46 ` Roman Gushchin
[not found] ` <20171004154638.710-6-guro-b10kYP2dOMg@public.gmane.org>
2017-10-04 20:04 ` Johannes Weiner
2017-10-04 20:04 ` Johannes Weiner
2017-10-04 20:04 ` Johannes Weiner
[not found] ` <20171004200453.GE1501-druUgvl0LCNAfugRpC6u6w@public.gmane.org>
2017-10-05 13:14 ` Michal Hocko
2017-10-05 13:14 ` Michal Hocko
2017-10-05 13:14 ` Michal Hocko
2017-10-05 13:41 ` Roman Gushchin
2017-10-05 13:41 ` Roman Gushchin
2017-10-05 13:41 ` Roman Gushchin
2017-10-05 14:10 ` Michal Hocko
2017-10-05 14:10 ` Michal Hocko
2017-10-05 14:54 ` Johannes Weiner
2017-10-05 14:54 ` Johannes Weiner
2017-10-05 16:40 ` Michal Hocko
2017-10-05 16:40 ` Michal Hocko
2017-10-05 15:51 ` Tejun Heo
2017-10-05 15:51 ` Tejun Heo
2017-10-04 15:46 ` Roman Gushchin [this message]
2017-10-04 15:46 ` [v10 6/6] mm, oom, docs: describe the " Roman Gushchin
[not found] ` <20171004154638.710-7-guro-b10kYP2dOMg@public.gmane.org>
2017-10-04 20:08 ` Johannes Weiner
2017-10-04 20:08 ` Johannes Weiner
2017-10-04 20:08 ` Johannes Weiner
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=20171004154638.710-7-guro@fb.com \
--to=guro@fb.com \
--cc=akpm@linux-foundation.org \
--cc=cgroups@vger.kernel.org \
--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=rientjes@google.com \
--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 an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.