From: Tetsuo Handa <penguin-kernel@I-love.SAKURA.ne.jp>
To: mhocko@kernel.org, rientjes@google.com
Cc: linux-mm@kvack.org, hannes@cmpxchg.org,
akpm@linux-foundation.org, linux-kernel@vger.kernel.org
Subject: Re: [RFC PATCH] mm, oom: move GFP_NOFS check to out_of_memory
Date: Wed, 30 Mar 2016 20:46:48 +0900 [thread overview]
Message-ID: <201603302046.CBJ39064.LFVQOHOOJtFSMF@I-love.SAKURA.ne.jp> (raw)
In-Reply-To: <20160330094750.GH30729@dhcp22.suse.cz>
Michal Hocko wrote:
> On Tue 29-03-16 15:13:54, David Rientjes wrote:
> > On Tue, 29 Mar 2016, Michal Hocko wrote:
> >
> > > diff --git a/mm/oom_kill.c b/mm/oom_kill.c
> > > index 86349586eacb..1c2b7a82f0c4 100644
> > > --- a/mm/oom_kill.c
> > > +++ b/mm/oom_kill.c
> > > @@ -876,6 +876,10 @@ bool out_of_memory(struct oom_control *oc)
> > > return true;
> > > }
> > >
> > > + /* The OOM killer does not compensate for IO-less reclaim. */
> > > + if (!(oc->gfp_mask & __GFP_FS))
> > > + return true;
> > > +
This patch will disable pagefault_out_of_memory() because currently
pagefault_out_of_memory() is passing oc->gfp_mask == 0.
Because of current behavior, calling oom notifiers from !__GFP_FS seems
to be safe.
> > > /*
> > > * Check if there were limitations on the allocation (only relevant for
> > > * NUMA) that may require different handling.
> >
> > I don't object to this necessarily, but I think we need input from those
> > that have taken the time to implement their own oom notifier to see if
> > they agree. In the past, they would only be called if reclaim has
> > completely failed; now, they can be called in low memory situations when
> > reclaim has had very little chance to be successful. Getting an ack from
> > them would be helpful.
>
> I will make sure to put them on the CC and mention this in the changelog
> when I post this next time. I personally think that this shouldn't make
> much difference in the real life because GFP_NOFS only loads are rare
GFP_NOFS only loads are rare. But some GFP_KERNEL load which got TIF_MEMDIE
might be waiting for GFP_NOFS or GFP_NOIO loads to make progress.
I think we are not ready to handle situations where out_of_memory() is called
again after current thread got TIF_MEMDIE due to __GFP_NOFAIL allocation
request when we ran out of memory reserves. We should not assume that the
victim target thread does not have TIF_MEMDIE yet. I think we can handle it
by making mark_oom_victim() return a bool and return via shortcut only if
mark_oom_victim() successfully set TIF_MEMDIE. Though I don't like the
shortcut approach that lacks a guaranteed unlocking mechanism.
> and we should rather help by releasing memory when it is available
> rather than rely on something else to do it for us. Waiting for Godot is
> never a good strategy.
>
> > I also think we have discussed this before, but I think the oom notifier
> > handling should be in done in the page allocator proper, i.e. in
> > __alloc_pages_may_oom(). We can leave out_of_memory() for a clear defined
> > purpose: to kill a process when all reclaim has failed.
>
> I vaguely remember there was some issue with that the last time we have
> discussed that. It was the duplication from the page fault and allocator
> paths AFAIR. Nothing that cannot be handled though but the OOM notifier
> API is just too ugly to spread outside OOM proper I guess. Why we cannot
> move those users to use proper shrinkers interface (after it gets
> extended by a priority of some sort and release some objects only after
> we are really in troubles)? Something for a separate discussion,
> though...
Calling oom notifiers from SysRq-f is what we want?
--
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-03-30 11:47 UTC|newest]
Thread overview: 14+ messages / expand[flat|nested] mbox.gz Atom feed top
2016-03-29 13:27 Michal Hocko
2016-03-29 13:45 ` Tetsuo Handa
2016-03-29 14:22 ` Michal Hocko
2016-03-29 15:29 ` Tetsuo Handa
2016-03-29 14:14 ` Michal Hocko
2016-03-29 22:13 ` David Rientjes
2016-03-30 9:47 ` Michal Hocko
2016-03-30 11:46 ` Tetsuo Handa [this message]
2016-03-30 12:11 ` Michal Hocko
2016-03-31 11:56 ` Tetsuo Handa
2016-03-31 15:11 ` Michal Hocko
2016-04-05 11:12 ` Tetsuo Handa
2016-04-06 10:28 ` Tetsuo Handa
2016-04-06 12:41 ` Michal Hocko
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=201603302046.CBJ39064.LFVQOHOOJtFSMF@I-love.SAKURA.ne.jp \
--to=penguin-kernel@i-love.sakura.ne.jp \
--cc=akpm@linux-foundation.org \
--cc=hannes@cmpxchg.org \
--cc=linux-kernel@vger.kernel.org \
--cc=linux-mm@kvack.org \
--cc=mhocko@kernel.org \
--cc=rientjes@google.com \
/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