From: Andrew Morton <akpm@linux-foundation.org>
To: Tejun Heo <tj@kernel.org>
Cc: Linus Torvalds <torvalds@linux-foundation.org>,
linux-kernel@vger.kernel.org
Subject: Re: [PATCH 2/2] mempool: fix first round failure behavior
Date: Wed, 21 Dec 2011 16:32:40 -0800 [thread overview]
Message-ID: <20111221163240.ef73f77e.akpm@linux-foundation.org> (raw)
In-Reply-To: <20111222001939.GM9213@google.com>
On Wed, 21 Dec 2011 16:19:39 -0800
Tejun Heo <tj@kernel.org> wrote:
> For the initial allocation, mempool passes modified gfp mask to the
> backing allocator so that it doesn't try too hard when there are
> reserved elements waiting in the pool; however, when that allocation
> fails and pool is empty too, it either waits for the pool to be
> replenished before retrying or fails if !__GFP_WAIT.
>
> * If the caller was calling in with GFP_ATOMIC, it never gets to try
> emergency reserve. Allocations which would have succeeded without
> mempool may fail, which is just wrong.
>
> * Allocation which could have succeeded after a bit of reclaim now has
> to wait on the reserved items and it's not like mempool doesn't
> retry with the original gfp mask. It just does that *after* someone
> returns an element, pointlessly delaying things.
This is a significant change in behaviour. Previously the mempool code
would preserve emergency pools while waiting for someone to return an
item. Now, it will permit many more items to be allocated, chewing
into the emergency pools.
We *know* that items will soon become available, so why not wait for
that to happen rather than consuming memory which less robust callers
could have utilised?
IOW, this change appears to make the kernel more vulnerable to memory
exhaustion failures?
next prev parent reply other threads:[~2011-12-22 0:32 UTC|newest]
Thread overview: 17+ messages / expand[flat|nested] mbox.gz Atom feed top
2011-12-22 0:18 [PATCH 1/2] mempool: drop unnecessary and incorrect BUG_ON() from mempool_destroy() Tejun Heo
2011-12-22 0:19 ` [PATCH 2/2] mempool: fix first round failure behavior Tejun Heo
2011-12-22 0:32 ` Andrew Morton [this message]
2011-12-22 0:34 ` Tejun Heo
2011-12-22 0:46 ` [PATCH UPDATED " Tejun Heo
2011-12-22 1:09 ` Andrew Morton
2011-12-22 1:23 ` Tejun Heo
2011-12-22 1:31 ` Tejun Heo
2011-12-22 15:15 ` Vivek Goyal
2011-12-22 15:20 ` Vivek Goyal
2011-12-22 15:58 ` Tejun Heo
2011-12-22 16:04 ` Vivek Goyal
2011-12-22 16:15 ` Tejun Heo
2011-12-22 15:21 ` Tejun Heo
2011-12-22 0:25 ` [PATCH 1/2] mempool: drop unnecessary and incorrect BUG_ON() from mempool_destroy() Andrew Morton
2011-12-22 0:35 ` Tejun Heo
2011-12-22 0:40 ` Greg KH
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=20111221163240.ef73f77e.akpm@linux-foundation.org \
--to=akpm@linux-foundation.org \
--cc=linux-kernel@vger.kernel.org \
--cc=tj@kernel.org \
--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;
as well as URLs for NNTP newsgroup(s).