From: David Rientjes <rientjes@google.com>
To: Johannes Weiner <hannes@cmpxchg.org>
Cc: Tetsuo Handa <penguin-kernel@i-love.sakura.ne.jp>,
mhocko@kernel.org, Andrew Morton <akpm@linux-foundation.org>,
mgorman@suse.de, torvalds@linux-foundation.org, oleg@redhat.com,
hughd@google.com, andrea@kernel.org, riel@redhat.com,
linux-mm@kvack.org, linux-kernel@vger.kernel.org
Subject: Re: [PATCH] mm,oom: Re-enable OOM killer using timers.
Date: Thu, 14 Jan 2016 15:09:56 -0800 (PST) [thread overview]
Message-ID: <alpine.DEB.2.10.1601141500370.22665@chino.kir.corp.google.com> (raw)
In-Reply-To: <20160114225850.GA23382@cmpxchg.org>
On Thu, 14 Jan 2016, Johannes Weiner wrote:
> > This is where me and you disagree; the goal should not be to continue to
> > oom kill more and more processes since there is no guarantee that further
> > kills will result in forward progress. These additional kills can result
> > in the same livelock that is already problematic, and killing additional
> > processes has made the situation worse since memory reserves are more
> > depleted.
> >
> > I believe what is better is to exhaust reclaim, check if the page
> > allocator is constantly looping due to waiting for the same victim to
> > exit, and then allowing that allocation with memory reserves, see the
> > attached patch which I have proposed before.
>
> If giving the reserves to another OOM victim is bad, how is giving
> them to the *allocating* task supposed to be better?
Unfortunately, due to rss and oom priority, it is possible to repeatedly
select processes which are all waiting for the same mutex. This is
possible when loading shards, for example, and all processes have the same
oom priority and are livelocked on i_mutex which is the most common
occurrence in our environments. The livelock came about because we
selected a process that could not make forward progress, there is no
guarantee that we will not continue to select such processes.
Giving access to the memory allocator eventually allows all allocators to
successfully allocate, giving the holder of i_mutex the ability to
eventually drop it. This happens in a very rate-limited manner depending
on how you define when the page allocator has looped enough waiting for
the same process to exit in my patch.
In the past, we have even increased the scheduling priority of oom killed
processes so that they have a greater likelihood of picking up i_mutex and
exiting.
> We need to make the OOM killer conclude in a fixed amount of time, no
> matter what happens. If the system is irrecoverably deadlocked on
> memory it needs to panic (and reboot) so we can get on with it. And
> it's silly to panic while there are still killable tasks available.
>
What is the solution when there are no additional processes that may be
killed? It is better to give access to memory reserves so a single
stalling allocation can succeed so the livelock can be resolved rather
than panicking.
--
To unsubscribe, send a message with 'unsubscribe linux-mm' in
the body to majordomo@kvack.org. For more info on Linux MM,
see: http://www.linux-mm.org/ .
Don't email: <a href=mailto:"dont@kvack.org"> email@kvack.org </a>
next prev parent reply other threads:[~2016-01-14 23:09 UTC|newest]
Thread overview: 19+ messages / expand[flat|nested] mbox.gz Atom feed top
2016-01-07 11:26 Tetsuo Handa
2016-01-13 1:36 ` David Rientjes
2016-01-13 12:11 ` Tetsuo Handa
2016-01-13 16:26 ` Michal Hocko
2016-01-13 16:56 ` Johannes Weiner
2016-01-13 18:01 ` Michal Hocko
2016-01-14 11:26 ` Tetsuo Handa
2016-01-14 22:01 ` David Rientjes
2016-01-14 22:58 ` Johannes Weiner
2016-01-14 23:09 ` David Rientjes [this message]
2016-01-15 10:36 ` Tetsuo Handa
2016-01-19 23:13 ` David Rientjes
2016-01-20 14:36 ` Tetsuo Handa
2016-01-20 23:49 ` David Rientjes
2016-01-21 11:44 ` Tetsuo Handa
2016-01-21 23:15 ` David Rientjes
2016-01-22 13:59 ` Tetsuo Handa
2016-01-22 14:57 ` Johannes Weiner
2016-01-26 23:44 ` David Rientjes
Reply instructions:
You may reply publicly to this message via plain-text email
using any one of the following methods:
* Save the following mbox file, import it into your mail client,
and reply-to-all from there: mbox
Avoid top-posting and favor interleaved quoting:
https://en.wikipedia.org/wiki/Posting_style#Interleaved_style
* Reply using the --to, --cc, and --in-reply-to
switches of git-send-email(1):
git send-email \
--in-reply-to=alpine.DEB.2.10.1601141500370.22665@chino.kir.corp.google.com \
--to=rientjes@google.com \
--cc=akpm@linux-foundation.org \
--cc=andrea@kernel.org \
--cc=hannes@cmpxchg.org \
--cc=hughd@google.com \
--cc=linux-kernel@vger.kernel.org \
--cc=linux-mm@kvack.org \
--cc=mgorman@suse.de \
--cc=mhocko@kernel.org \
--cc=oleg@redhat.com \
--cc=penguin-kernel@i-love.sakura.ne.jp \
--cc=riel@redhat.com \
--cc=torvalds@linux-foundation.org \
/path/to/YOUR_REPLY
https://kernel.org/pub/software/scm/git/docs/git-send-email.html
* If your mail client supports setting the In-Reply-To header
via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line
before the message body.
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox