• Roman Gushchin's avatar
    mm, oom: refactor oom_kill_process() · 5989ad7b
    Roman Gushchin authored
    Patch series "introduce memory.oom.group", v2.
    
    This is a tiny implementation of cgroup-aware OOM killer, which adds an
    ability to kill a cgroup as a single unit and so guarantee the integrity
    of the workload.
    
    Although it has only a limited functionality in comparison to what now
    resides in the mm tree (it doesn't change the victim task selection
    algorithm, doesn't look at memory stas on cgroup level, etc), it's also
    much simpler and more straightforward.  So, hopefully, we can avoid having
    long debates here, as we had with the full implementation.
    
    As it doesn't prevent any futher development, and implements an useful and
    complete feature, it looks as a sane way forward.
    
    This patch (of 2):
    
    oom_kill_process() consists of two logical parts: the first one is
    responsible for considering task's children as a potential victim and
    printing the debug information.  The second half is responsible for
    sending SIGKILL to all tasks sharing the mm struct with the given victim.
    
    This commit splits oom_kill_process() with an intention to re-use the the
    second half: __oom_kill_process().
    
    The cgroup-aware OOM killer will kill multiple tasks belonging to the
    victim cgroup.  We don't need to print the debug information for the each
    task, as well as play with task selection (considering task's children),
    so we can't use the existing oom_kill_process().
    
    Link: http://lkml.kernel.org/r/20171130152824.1591-2-guro@fb.com
    Link: http://lkml.kernel.org/r/20180802003201.817-3-guro@fb.comSigned-off-by: default avatarRoman Gushchin <guro@fb.com>
    Acked-by: default avatarMichal Hocko <mhocko@suse.com>
    Acked-by: default avatarJohannes Weiner <hannes@cmpxchg.org>
    Acked-by: default avatarDavid Rientjes <rientjes@google.com>
    Cc: Vladimir Davydov <vdavydov.dev@gmail.com>
    Cc: Tetsuo Handa <penguin-kernel@I-love.SAKURA.ne.jp>
    Cc: David Rientjes <rientjes@google.com>
    Cc: Tejun Heo <tj@kernel.org>
    Signed-off-by: default avatarAndrew Morton <akpm@linux-foundation.org>
    Signed-off-by: default avatarLinus Torvalds <torvalds@linux-foundation.org>
    5989ad7b
oom_kill.c 29.6 KB