Re: System freezes after OOM

From: Tetsuo Handa
Date: Thu Jul 14 2016 - 17:40:11 EST

David Rientjes wrote:
> On Thu, 14 Jul 2016, Tetsuo Handa wrote:
> > David Rientjes wrote:
> > > On Wed, 13 Jul 2016, Mikulas Patocka wrote:
> > >
> > > > What are the real problems that f9054c70d28bc214b2857cf8db8269f4f45a5e23
> > > > tries to fix?
> > > >
> > >
> > > It prevents the whole system from livelocking due to an oom killed process
> > > stalling forever waiting for mempool_alloc() to return. No other threads
> > > may be oom killed while waiting for it to exit.
> >
> > Is that concern still valid? We have the OOM reaper for CONFIG_MMU=y case.
> >
> Umm, show me an explicit guarantee where the oom reaper will free memory
> such that other threads may return memory to this process's mempool so it
> can make forward progress in mempool_alloc() without the need of utilizing
> memory reserves. First, it might be helpful to show that the oom reaper
> is ever guaranteed to free any memory for a selected oom victim.

Whether the OOM reaper will free some memory no longer matters. Instead,
whether the OOM reaper will let the OOM killer select next OOM victim matters.

Are you aware that the OOM reaper will let the OOM killer select next OOM
victim (currently by clearing TIF_MEMDIE)? Clearing TIF_MEMDIE in 4.6 occurred
only when OOM reaping succeeded. But we are going to change the OOM reaper
always clear TIF_MEMDIE in 4.8 (or presumably change the OOM killer not to
depend on TIF_MEMDIE) so that the OOM reaper guarantees that the OOM killer
always selects next OOM victim.