• Shakeel Butt's avatar
    mm, oom: remove 'prefer children over parent' heuristic · bbbe4802
    Shakeel Butt authored
    Since the start of the git history of Linux, the kernel after selecting
    the worst process to be oom-killed, prefer to kill its child (if the
    child does not share mm with the parent).  Later it was changed to
    prefer to kill a child who is worst.  If the parent is still the worst
    then the parent will be killed.
    
    This heuristic assumes that the children did less work than their parent
    and by killing one of them, the work lost will be less.  However this is
    very workload dependent.  If there is a workload which can benefit from
    this heuristic, can use oom_score_adj to prefer children to be killed
    before the parent.
    
    The select_bad_process() has already selected the worst process in the
    system/memcg.  There is no need to recheck the badness of its children
    and hoping to find a worse candidate.  That's a lot of unneeded racy
    work.  Also the heuristic is dangerous because it make fork bomb like
    workloads to recover much later because we constantly pick and kill
    processes which are not memory hogs.  So, let's remove this whole
    heuristic.
    
    [akpm@linux-foundation.org: coding-style fixes]
    Link: http://lkml.kernel.org/r/20190121215850.221745-2-shakeelb@google.comSigned-off-by: default avatarShakeel Butt <shakeelb@google.com>
    Acked-by: default avatarMichal Hocko <mhocko@suse.com>
    Acked-by: default avatarRoman Gushchin <guro@fb.com>
    Acked-by: default avatarJohannes Weiner <hannes@cmpxchg.org>
    Cc: David Rientjes <rientjes@google.com>
    Cc: Tetsuo Handa <penguin-kernel@i-love.sakura.ne.jp>
    Signed-off-by: default avatarAndrew Morton <akpm@linux-foundation.org>
    Signed-off-by: default avatarLinus Torvalds <torvalds@linux-foundation.org>
    bbbe4802
oom_kill.c 30.2 KB