From: Tejun Heo <tj@kernel.org>
To: Michal Hocko <mhocko@suse.cz>
Cc: Johannes Weiner <hannes@cmpxchg.org>,
cgroups@vger.kernel.org, linux-mm@kvack.org
Subject: Re: [PATCH RFC] memcg: close the race window between OOM detection and killing
Date: Fri, 5 Jun 2015 23:57:59 +0900 [thread overview]
Message-ID: <20150605145759.GA5946@mtj.duckdns.org> (raw)
In-Reply-To: <20150605143534.GD26113@dhcp22.suse.cz>
Hello, Michal.
On Fri, Jun 05, 2015 at 04:35:34PM +0200, Michal Hocko wrote:
> > That doesn't matter because the detection and TIF_MEMDIE assertion are
> > atomic w.r.t. oom_lock and TIF_MEMDIE essentially extends the locking
> > by preventing further OOM kills. Am I missing something?
>
> This is true but TIF_MEMDIE releasing is not atomic wrt. the allocation
> path. So the oom victim could have released memory and dropped
This is splitting hairs. In vast majority of problem cases, if
anything is gonna be locked up, it's gonna be locked up before
releasing memory it's holding. Yet again, this is a blunt instrument
to unwedge the system. It's difficult to see the point of aiming that
level of granularity.
> TIF_MEMDIE but the allocation path hasn't noticed that because it's passed
> /*
> * Go through the zonelist yet one more time, keep very high watermark
> * here, this is only to catch a parallel oom killing, we must fail if
> * we're still under heavy pressure.
> */
> page = get_page_from_freelist(gfp_mask | __GFP_HARDWALL, order,
> ALLOC_WMARK_HIGH|ALLOC_CPUSET, ac);
>
> and goes on to kill another task because there is no TIF_MEMDIE
> anymore.
Why would this be an issue if we disallow parallel killing?
> > Deadlocks from infallible allocations getting interlocked are
> > different. OOM killer can't really get around that by itself but I'm
> > not talking about those deadlocks but at the same time they're a lot
> > less likely. It's about OOM victim trapped in a deadlock failing to
> > release memory because someone else is waiting for that memory to be
> > released while blocking the victim.
>
> I thought those would be in the allocator context - which was the
> example I've provided. What kind of context do you have in mind?
Yeah, sure, they'd be in the allocator context holding other resources
which are being waited upon. The first case was deadlock based on
purely memory starvation where NOFAIL allocations interlock with each
other w/o involving other resources.
Thanks.
--
tejun
--
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:[~2015-06-05 14:58 UTC|newest]
Thread overview: 11+ messages / expand[flat|nested] mbox.gz Atom feed top
2015-06-03 3:15 [PATCH RFC] memcg: close the race window between OOM detection and killing Tejun Heo
2015-06-03 14:44 ` Michal Hocko
2015-06-03 19:36 ` Tejun Heo
2015-06-04 9:30 ` Michal Hocko
2015-06-04 19:06 ` Johannes Weiner
2015-06-05 14:29 ` Michal Hocko
2015-06-04 19:29 ` Tejun Heo
2015-06-05 14:35 ` Michal Hocko
2015-06-05 14:57 ` Tejun Heo [this message]
2015-06-05 15:21 ` Michal Hocko
2015-06-06 0:56 ` Tejun Heo
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=20150605145759.GA5946@mtj.duckdns.org \
--to=tj@kernel.org \
--cc=cgroups@vger.kernel.org \
--cc=hannes@cmpxchg.org \
--cc=linux-mm@kvack.org \
--cc=mhocko@suse.cz \
/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;
as well as URLs for NNTP newsgroup(s).