Re: [RESEND v12 0/6] cgroup-aware OOM killer
From: David Rientjes
Date: Tue Oct 31 2017 - 18:21:31 EST
On Tue, 31 Oct 2017, Michal Hocko wrote:
> > I'm not ignoring them, I have stated that we need the ability to protect
> > important cgroups on the system without oom disabling all attached
> > processes. If that is implemented as a memory.oom_score_adj with the same
> > semantics as /proc/pid/oom_score_adj, i.e. a proportion of available
> > memory (the limit), it can also address the issues pointed out with the
> > hierarchical approach in v8.
>
> No it cannot and it would be a terrible interface to have as well. You
> do not want to permanently tune oom_score_adj to compensate for
> structural restrictions on the hierarchy.
>
memory.oom_score_adj would never need to be permanently tuned, just as
/proc/pid/oom_score_adj need never be permanently tuned. My response was
an answer to Roman's concern that "v8 has it's own limitations," but I
haven't seen a concrete example where the oom killer is forced to kill
from the non-preferred cgroup while the user has power of biasing against
certain cgroups with memory.oom_score_adj. Do you have such a concrete
example that we can work with?
> I believe, and Roman has pointed that out as well already, that further
> improvements can be implemented without changing user visible behavior
> as and add-on. If you disagree then you better come with a solid proof
> that all of us wrong and reasonable semantic cannot be achieved that
> way.
We simply cannot determine if improvements can be implemented in the
future without user-visible changes if those improvements are unknown or
undecided at this time. It may require hierarchical accounting when
making a choice between siblings, as suggested with oom_score_adj. The
only thing that we need to agree on is that userspace needs to have some
kind of influence over victim selection: the oom killer killing an
important user process is an extremely sensitive thing. If the patchset
lacks the ability to have that influence, and such an ability would impact
the heuristic overall, it's better to introduce that together as a
complete patchset rather than merging an incomplete feature when it's
known the user needs some control, asking the user to workaround it by
setting all processes to oom disabled in a preferred mem cgroup, and then
changing the heuristic again.