Re: [PATCH v13 6/7] mm, oom, docs: describe the cgroup-aware OOM killer
On Fri 01-12-17 17:01:49, Roman Gushchin wrote: [...] > diff --git a/Documentation/cgroup-v2.txt b/Documentation/cgroup-v2.txt > index c80a147f94b7..ff8e92db636d 100644 > --- a/Documentation/cgroup-v2.txt > +++ b/Documentation/cgroup-v2.txt > @@ -1049,6 +1049,9 @@ PAGE_SIZE multiple when read back. > and will never kill the unkillable task, even if memory.oom_group > is set. > > + If cgroup-aware OOM killer is not enabled, ENOTSUPP error > + is returned on attempt to access the file. > + >memory.events > A read-only flat-keyed file which exists on non-root cgroups. > The following entries are defined. Unless specified > @@ -1258,6 +1261,12 @@ OOM Killer > Cgroup v2 memory controller implements a cgroup-aware OOM killer. > It means that it treats cgroups as first class OOM entities. > > +Cgroup-aware OOM logic is turned off by default and requires > +passing the "groupoom" option on mounting cgroupfs. It can also > +by remounting cgroupfs with the following command:: > + > + # mount -o remount,groupoom $MOUNT_POINT > + > 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 Looks good to me Thanks! -- Michal Hocko SUSE Labs -- To unsubscribe from this list: send the line "unsubscribe linux-doc" in the body of a message to majord...@vger.kernel.org More majordomo info at http://vger.kernel.org/majordomo-info.html
Re: [PATCH v13 6/7] mm, oom, docs: describe the cgroup-aware OOM killer
On Fri, Dec 01, 2017 at 09:41:54AM +0100, Michal Hocko wrote: > On Thu 30-11-17 15:28:23, Roman Gushchin wrote: > > @@ -1229,6 +1252,41 @@ 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. > > This should mention groupoom mount option to enable this functionality. > > Other than that looks ok to me > Acked-by: Michal Hocko> -- > Michal Hocko > SUSE Labs >From 1d9c87128897ee7f27f9651d75b80f73985373e8 Mon Sep 17 00:00:00 2001 From: Roman Gushchin Date: Fri, 1 Dec 2017 15:34:59 + Subject: [PATCH] mm, oom, docs: document groupoom mount option Add a note that cgroup-aware OOM logic is disabled by default and describe how to enable it. Signed-off-by: Roman Gushchin Cc: Andrew Morton Cc: Johannes Weiner Cc: Michal Hocko Cc: Vladimir Davydov Cc: Tejun Heo Cc: kernel-t...@fb.com Cc: linux...@kvack.org Cc: linux-ker...@vger.kernel.org --- Documentation/cgroup-v2.txt | 9 + 1 file changed, 9 insertions(+) diff --git a/Documentation/cgroup-v2.txt b/Documentation/cgroup-v2.txt index c80a147f94b7..ff8e92db636d 100644 --- a/Documentation/cgroup-v2.txt +++ b/Documentation/cgroup-v2.txt @@ -1049,6 +1049,9 @@ PAGE_SIZE multiple when read back. and will never kill the unkillable task, even if memory.oom_group is set. + If cgroup-aware OOM killer is not enabled, ENOTSUPP error + is returned on attempt to access the file. + memory.events A read-only flat-keyed file which exists on non-root cgroups. The following entries are defined. Unless specified @@ -1258,6 +1261,12 @@ OOM Killer Cgroup v2 memory controller implements a cgroup-aware OOM killer. It means that it treats cgroups as first class OOM entities. +Cgroup-aware OOM logic is turned off by default and requires +passing the "groupoom" option on mounting cgroupfs. It can also +by remounting cgroupfs with the following command:: + + # mount -o remount,groupoom $MOUNT_POINT + 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 -- 2.14.3 -- To unsubscribe from this list: send the line "unsubscribe linux-doc" in the body of a message to majord...@vger.kernel.org More majordomo info at http://vger.kernel.org/majordomo-info.html
Re: [PATCH v13 6/7] mm, oom, docs: describe the cgroup-aware OOM killer
On Thu 30-11-17 15:28:23, Roman Gushchin wrote: > @@ -1229,6 +1252,41 @@ 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. This should mention groupoom mount option to enable this functionality. Other than that looks ok to me Acked-by: Michal Hocko-- Michal Hocko SUSE Labs -- To unsubscribe from this list: send the line "unsubscribe linux-doc" in the body of a message to majord...@vger.kernel.org More majordomo info at http://vger.kernel.org/majordomo-info.html
[PATCH v13 6/7] mm, oom, docs: describe the cgroup-aware OOM killer
Document the cgroup-aware OOM killer. Signed-off-by: Roman GushchinCc: Johannes Weiner Cc: Michal Hocko Cc: Vladimir Davydov Cc: Tetsuo Handa Cc: Andrew Morton Cc: David Rientjes Cc: Tejun Heo Cc: kernel-t...@fb.com Cc: cgro...@vger.kernel.org Cc: linux-doc@vger.kernel.org Cc: linux-ker...@vger.kernel.org Cc: linux...@kvack.org --- Documentation/cgroup-v2.txt | 58 + 1 file changed, 58 insertions(+) diff --git a/Documentation/cgroup-v2.txt b/Documentation/cgroup-v2.txt index 779211fbb69f..c80a147f94b7 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 @@ -1026,6 +1027,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 @@ -1229,6 +1252,41 @@ 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. + +Please, note that memory charges are not migrating if tasks +are moved between different memory cgroups. Moving tasks with +significant memory footprint may affect OOM victim selection logic. +If it's a case, please, consider creating a common ancestor for +the source and destination memory cgroups and enabling oom_group +on ancestor layer. + IO -- -- 2.14.3 -- To unsubscribe from this list: send the line "unsubscribe linux-doc" in the body of a message to majord...@vger.kernel.org More majordomo info at http://vger.kernel.org/majordomo-info.html