All of lore.kernel.org
 help / color / mirror / Atom feed
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: [v7 4/5] mm, oom, docs: describe the cgroup-aware OOM killer
Date: Mon, 4 Sep 2017 15:21:07 +0100	[thread overview]
Message-ID: <20170904142108.7165-5-guro@fb.com> (raw)
In-Reply-To: <20170904142108.7165-1-guro@fb.com>

Update cgroups v2 docs.

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 | 56 +++++++++++++++++++++++++++++++++++++++++++++
 1 file changed, 56 insertions(+)

diff --git a/Documentation/cgroup-v2.txt b/Documentation/cgroup-v2.txt
index a86f3cb88125..5d21bd2e7d55 100644
--- a/Documentation/cgroup-v2.txt
+++ b/Documentation/cgroup-v2.txt
@@ -44,6 +44,7 @@ CONTENTS
     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
@@ -799,6 +800,33 @@ 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 kill all processes attached to the cgroup
+	if selected as an OOM victim.
+
+	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.oom_priority
+
+	A read-write single value file which exists on non-root
+	cgroups.  The default is "0".
+
+	An integer number, which defines the order in which
+	the OOM killer selects victim memory cgroups.
+
+	OOM killer prefers memory cgroups with larger priority if they
+	are populated with eligible tasks.
+
+	The oom_priority value is compared within sibling cgroups.
+
+	The root cgroup has the oom_priority 0, which cannot be changed.
+
   memory.events
 
 	A read-only flat-keyed file which exists on non-root cgroups.
@@ -1028,6 +1056,34 @@ POSIX_FADV_DONTNEED to relinquish the ownership of memory areas
 belonging to the affected files to ensure correct memory ownership.
 
 
+5-2-4. 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, hierarchically looking for a cgroup with the
+largest oom_priority. If sibling cgroups have the same priority,
+the OOM killer selects one which is the largest memory consumer.
+
+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 oom_group option. If set, it causes the OOM killer
+to kill all processes attached to the cgroup.
+
+Tasks in the root cgroup are treated as independent memory consumers,
+and are compared with other memory consumers (memory cgroups and
+other tasks in root cgroup).
+The root cgroup doesn't support the oom_group feature.
+
+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.
+
+If there are no cgroups with the enabled memory controller,
+the OOM killer is using the "traditional" process-based approach.
+
+
 5-3. IO
 
 The "io" controller regulates the distribution of IO resources.  This
-- 
2.13.5

--
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: [v7 4/5] mm, oom, docs: describe the cgroup-aware OOM killer
Date: Mon, 4 Sep 2017 15:21:07 +0100	[thread overview]
Message-ID: <20170904142108.7165-5-guro@fb.com> (raw)
In-Reply-To: <20170904142108.7165-1-guro@fb.com>

Update cgroups v2 docs.

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 | 56 +++++++++++++++++++++++++++++++++++++++++++++
 1 file changed, 56 insertions(+)

diff --git a/Documentation/cgroup-v2.txt b/Documentation/cgroup-v2.txt
index a86f3cb88125..5d21bd2e7d55 100644
--- a/Documentation/cgroup-v2.txt
+++ b/Documentation/cgroup-v2.txt
@@ -44,6 +44,7 @@ CONTENTS
     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
@@ -799,6 +800,33 @@ 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 kill all processes attached to the cgroup
+	if selected as an OOM victim.
+
+	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.oom_priority
+
+	A read-write single value file which exists on non-root
+	cgroups.  The default is "0".
+
+	An integer number, which defines the order in which
+	the OOM killer selects victim memory cgroups.
+
+	OOM killer prefers memory cgroups with larger priority if they
+	are populated with eligible tasks.
+
+	The oom_priority value is compared within sibling cgroups.
+
+	The root cgroup has the oom_priority 0, which cannot be changed.
+
   memory.events
 
 	A read-only flat-keyed file which exists on non-root cgroups.
@@ -1028,6 +1056,34 @@ POSIX_FADV_DONTNEED to relinquish the ownership of memory areas
 belonging to the affected files to ensure correct memory ownership.
 
 
+5-2-4. 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, hierarchically looking for a cgroup with the
+largest oom_priority. If sibling cgroups have the same priority,
+the OOM killer selects one which is the largest memory consumer.
+
+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 oom_group option. If set, it causes the OOM killer
+to kill all processes attached to the cgroup.
+
+Tasks in the root cgroup are treated as independent memory consumers,
+and are compared with other memory consumers (memory cgroups and
+other tasks in root cgroup).
+The root cgroup doesn't support the oom_group feature.
+
+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.
+
+If there are no cgroups with the enabled memory controller,
+the OOM killer is using the "traditional" process-based approach.
+
+
 5-3. IO
 
 The "io" controller regulates the distribution of IO resources.  This
-- 
2.13.5

  parent reply	other threads:[~2017-09-04 14:21 UTC|newest]

Thread overview: 102+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2017-09-04 14:21 [v7 0/5] cgroup-aware OOM killer Roman Gushchin
2017-09-04 14:21 ` Roman Gushchin
2017-09-04 14:21 ` [v7 1/5] mm, oom: refactor the oom_kill_process() function Roman Gushchin
2017-09-04 14:21   ` Roman Gushchin
2017-09-05 13:34   ` Michal Hocko
2017-09-05 13:34     ` Michal Hocko
2017-09-04 14:21 ` [v7 2/5] mm, oom: cgroup-aware OOM killer Roman Gushchin
2017-09-04 14:21   ` Roman Gushchin
     [not found]   ` <20170904142108.7165-3-guro-b10kYP2dOMg@public.gmane.org>
2017-09-05 14:57     ` Michal Hocko
2017-09-05 14:57       ` Michal Hocko
2017-09-05 14:57       ` Michal Hocko
2017-09-05 20:23       ` Roman Gushchin
2017-09-05 20:23         ` Roman Gushchin
2017-09-06  8:31         ` Michal Hocko
2017-09-06  8:31           ` Michal Hocko
2017-09-06 12:57           ` Roman Gushchin
2017-09-06 12:57             ` Roman Gushchin
2017-09-06 12:57             ` Roman Gushchin
2017-09-06 13:22             ` Michal Hocko
2017-09-06 13:22               ` Michal Hocko
2017-09-06 13:22               ` Michal Hocko
2017-09-06 13:41               ` Roman Gushchin
2017-09-06 13:41                 ` Roman Gushchin
2017-09-06 13:41                 ` Roman Gushchin
2017-09-06 14:10                 ` Michal Hocko
2017-09-06 14:10                   ` Michal Hocko
2017-09-06  8:34         ` Michal Hocko
2017-09-06  8:34           ` Michal Hocko
2017-09-06 12:33           ` Roman Gushchin
2017-09-06 12:33             ` Roman Gushchin
2017-09-06 12:33             ` Roman Gushchin
2017-09-07 16:18     ` Christopher Lameter
2017-09-07 16:18       ` Christopher Lameter
2017-09-11  8:49       ` Michal Hocko
2017-09-11  8:49         ` Michal Hocko
2017-09-11  8:49         ` Michal Hocko
2017-09-04 14:21 ` [v7 3/5] mm, oom: introduce oom_priority for memory cgroups Roman Gushchin
2017-09-04 14:21   ` Roman Gushchin
2017-09-04 14:21 ` Roman Gushchin [this message]
2017-09-04 14:21   ` [v7 4/5] mm, oom, docs: describe the cgroup-aware OOM killer Roman Gushchin
2017-09-04 14:21 ` [v7 5/5] mm, oom: cgroup v2 mount option to disable " Roman Gushchin
2017-09-04 14:21   ` Roman Gushchin
2017-09-04 14:21   ` Roman Gushchin
     [not found]   ` <20170904142108.7165-6-guro-b10kYP2dOMg@public.gmane.org>
2017-09-04 17:32     ` Shakeel Butt
2017-09-04 17:32       ` Shakeel Butt
2017-09-04 17:32       ` Shakeel Butt
2017-09-04 17:51       ` Roman Gushchin
2017-09-04 17:51         ` Roman Gushchin
2017-09-04 17:51         ` Roman Gushchin
2017-09-05 13:44   ` Michal Hocko
2017-09-05 13:44     ` Michal Hocko
2017-09-05 14:30     ` Roman Gushchin
2017-09-05 14:30       ` Roman Gushchin
2017-09-05 14:30       ` Roman Gushchin
2017-09-05 15:12       ` Michal Hocko
2017-09-05 15:12         ` Michal Hocko
     [not found]         ` <20170905151251.luh4wogjd3msfqgf-2MMpYkNvuYDjFM9bn6wA6Q@public.gmane.org>
2017-09-05 19:16           ` Roman Gushchin
2017-09-05 19:16             ` Roman Gushchin
2017-09-05 19:16             ` Roman Gushchin
     [not found]             ` <20170905191609.GA19687-2xczL/1GIl5a1dPMsufgnw2O0Ztt9esIQQ4Iyu8u01E@public.gmane.org>
2017-09-06  8:42               ` Michal Hocko
2017-09-06  8:42                 ` Michal Hocko
2017-09-06  8:42                 ` Michal Hocko
2017-09-06 17:40                 ` Roman Gushchin
2017-09-06 17:40                   ` Roman Gushchin
2017-09-06 17:40                   ` Roman Gushchin
     [not found]                   ` <20170906174043.GA12579-B3w7+ongkCiLfgCeKHXN1g2O0Ztt9esIQQ4Iyu8u01E@public.gmane.org>
2017-09-06 17:59                     ` Michal Hocko
2017-09-06 17:59                       ` Michal Hocko
2017-09-06 17:59                       ` Michal Hocko
2017-09-06 20:59                     ` David Rientjes
2017-09-06 20:59                       ` David Rientjes
2017-09-06 20:59                       ` David Rientjes
2017-09-07 14:43                       ` Christopher Lameter
2017-09-07 14:52                         ` Roman Gushchin
2017-09-07 14:52                           ` Roman Gushchin
     [not found]                           ` <20170907145239.GA19022-B3w7+ongkCiLfgCeKHXN1g2O0Ztt9esIQQ4Iyu8u01E@public.gmane.org>
2017-09-07 15:03                             ` Christopher Lameter
2017-09-07 15:03                               ` Christopher Lameter
2017-09-07 16:42                               ` Roman Gushchin
2017-09-07 16:42                                 ` Roman Gushchin
2017-09-07 16:42                                 ` Roman Gushchin
2017-09-07 17:03                                 ` Christopher Lameter
2017-09-07 21:55                         ` David Rientjes
2017-09-07 21:55                           ` David Rientjes
2017-09-07 16:21           ` Christopher Lameter
2017-09-07 16:21             ` Christopher Lameter
2017-09-05 21:53     ` Johannes Weiner
2017-09-05 21:53       ` Johannes Weiner
2017-09-06  8:28       ` Michal Hocko
2017-09-06  8:28         ` Michal Hocko
2017-09-06  8:28         ` Michal Hocko
2017-09-07 16:14         ` Johannes Weiner
2017-09-07 16:14           ` Johannes Weiner
2017-09-11  9:05           ` Michal Hocko
2017-09-11  9:05             ` Michal Hocko
2017-09-11 12:50             ` Roman Gushchin
2017-09-11 12:50               ` Roman Gushchin
2017-09-11 12:50               ` Roman Gushchin
2017-09-07 16:27         ` Christopher Lameter
2017-09-07 22:03           ` David Rientjes
2017-09-07 22:03             ` David Rientjes
2017-09-08 21:07             ` Christopher Lameter
2017-09-09  8:45               ` David Rientjes
2017-09-09  8:45                 ` David Rientjes

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=20170904142108.7165-5-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.