mm/docs: describe memory.low refinements
authorRoman Gushchin <guro@fb.com>
Fri, 8 Jun 2018 00:06:29 +0000 (17:06 -0700)
committerLinus Torvalds <torvalds@linux-foundation.org>
Fri, 8 Jun 2018 00:34:35 +0000 (17:34 -0700)
Refine cgroup v2 docs after latest memory.low changes.

Link: http://lkml.kernel.org/r/20180405185921.4942-4-guro@fb.com
Signed-off-by: Roman Gushchin <guro@fb.com>
Acked-by: Johannes Weiner <hannes@cmpxchg.org>
Cc: Michal Hocko <mhocko@kernel.org>
Cc: Vladimir Davydov <vdavydov.dev@gmail.com>
Cc: Tejun Heo <tj@kernel.org>
Signed-off-by: Andrew Morton <akpm@linux-foundation.org>
Signed-off-by: Linus Torvalds <torvalds@linux-foundation.org>
Documentation/admin-guide/cgroup-v2.rst

index b0dda10b93825b995bd78318d4763461ad56dda0..7b56ca80e37a706cd2516dac7e84c8b9d330c252 100644 (file)
@@ -1005,10 +1005,17 @@ PAGE_SIZE multiple when read back.
        A read-write single value file which exists on non-root
        cgroups.  The default is "0".
 
-       Best-effort memory protection.  If the memory usages of a
-       cgroup and all its ancestors are below their low boundaries,
-       the cgroup's memory won't be reclaimed unless memory can be
-       reclaimed from unprotected cgroups.
+       Best-effort memory protection.  If the memory usage of a
+       cgroup is within its effective low boundary, the cgroup's
+       memory won't be reclaimed unless memory can be reclaimed
+       from unprotected cgroups.
+
+       Effective low boundary is limited by memory.low values of
+       all ancestor cgroups. If there is memory.low overcommitment
+       (child cgroup or cgroups are requiring more protected memory,
+       than parent will allow), then each child cgroup will get
+       the part of parent's protection proportional to the its
+       actual memory usage below memory.low.
 
        Putting more memory than generally available under this
        protection is discouraged.
@@ -1950,17 +1957,8 @@ system performance due to overreclaim, to the point where the feature
 becomes self-defeating.
 
 The memory.low boundary on the other hand is a top-down allocated
-reserve.  A cgroup enjoys reclaim protection when it and all its
-ancestors are below their low boundaries, which makes delegation of
-subtrees possible.  Secondly, new cgroups have no reserve per default
-and in the common case most cgroups are eligible for the preferred
-reclaim pass.  This allows the new low boundary to be efficiently
-implemented with just a minor addition to the generic reclaim code,
-without the need for out-of-band data structures and reclaim passes.
-Because the generic reclaim code considers all cgroups except for the
-ones running low in the preferred first reclaim pass, overreclaim of
-individual groups is eliminated as well, resulting in much better
-overall workload performance.
+reserve.  A cgroup enjoys reclaim protection when it's within its low,
+which makes delegation of subtrees possible.
 
 The original high boundary, the hard limit, is defined as a strict
 limit that can not budge, even if the OOM killer has to be called.