On Thu, Dec 19, 2019 at 03:07:15PM -0500, Johannes Weiner wrote: > Changes since v1: > - improved Changelogs based on the discussion with Roman. Thanks! > - fix div0 when recursive & fixed protection is combined > - fix an unused compiler warning > > The current memory.low (and memory.min) semantics require protection > to be assigned to a cgroup in an untinterrupted chain from the > top-level cgroup all the way to the leaf. > > In practice, we want to protect entire cgroup subtrees from each other > (system management software vs. workload), but we would like the VM to > balance memory optimally *within* each subtree, without having to make > explicit weight allocations among individual components. The current > semantics make that impossible. > > This patch series extends memory.low/min such that the knobs apply > recursively to the entire subtree. Users can still assign explicit > protection to subgroups, but if they don't, the protection set by the > parent cgroup will be distributed dynamically such that children > compete freely - as if no memory control were enabled inside the > subtree - but enjoy protection from neighboring trees. > > Patch #1 fixes an existing bug that can give a cgroup tree more > protection than it should receive as per ancestor configuration. > > Patch #2 simplifies and documents the existing code to make it easier > to reason about the changes in the next patch. > > Patch #3 finally implements recursive memory protection semantics. > > Because of a risk of regressing legacy setups, the new semantics are > hidden behind a cgroup2 mount option, 'memory_recursiveprot'. I really like the new semantics: it looks nice and doesn't require any new magic values aka "bypass", which have been discussed previously. The ability to disable the protection for a particular cgroup inside the protected sub-tree looks overvalued: I don't have any practical example when it makes any sense. So it's totally worth it to sacrifice it. Thank you for adding comments to the changelog! Acked-by: Roman Gushchin <guro@xxxxxx> for the series. Thanks!