Re: [patch] mm, oom: prevent additional oom kills before memory is freed

From: David Rientjes
Date: Thu Jun 15 2017 - 18:03:30 EST


On Thu, 15 Jun 2017, Michal Hocko wrote:

> > Yes, quite a bit in testing.
> >
> > One oom kill shows the system to be oom:
> >
> > [22999.488705] Node 0 Normal free:90484kB min:90500kB ...
> > [22999.488711] Node 1 Normal free:91536kB min:91948kB ...
> >
> > followed up by one or more unnecessary oom kills showing the oom killer
> > racing with memory freeing of the victim:
> >
> > [22999.510329] Node 0 Normal free:229588kB min:90500kB ...
> > [22999.510334] Node 1 Normal free:600036kB min:91948kB ...
> >
> > The patch is absolutely required for us to prevent continuous oom killing
> > of processes after a single process has been oom killed and its memory is
> > in the process of being freed.
>
> OK, could you play with the patch/idea suggested in
> http://lkml.kernel.org/r/20170615122031.GL1486@xxxxxxxxxxxxxx?
>

I cannot, I am trying to unblock a stable kernel release to my production
that is obviously fixed with this patch and cannot experiment with
uncompiled and untested patches that introduce otherwise unnecessary
locking into the __mmput() path and is based on speculation rather than
hard data that __mmput() for some reason stalls for the oom victim's mm.
I was hoping that this fix could make it in time for 4.12 since 4.12 kills
1-4 processes unnecessarily for each oom condition and then can review any
tested solution you may propose at a later time.