From: Johannes Weiner <hannes@cmpxchg.org>
To: Pintu Kumar <pintu.k@samsung.com>
Cc: akpm@linux-foundation.org, mgorman@suse.de, jiang.liu@huawei.com,
minchan@kernel.org, cody@linux.vnet.ibm.com, linux-mm@kvack.org,
linux-kernel@vger.kernel.org, cpgs@samsung.com,
pintu_agarwal@yahoo.com
Subject: Re: [PATCH 2/2] mm: page_alloc: avoid slowpath for more than MAX_ORDER allocation.
Date: Mon, 22 Jul 2013 12:38:36 -0400 [thread overview]
Message-ID: <20130722163836.GD715@cmpxchg.org> (raw)
In-Reply-To: <1374492762-17735-1-git-send-email-pintu.k@samsung.com>
Hi Pintu,
On Mon, Jul 22, 2013 at 05:02:42PM +0530, Pintu Kumar wrote:
> It was observed that if order is passed as more than MAX_ORDER
> allocation in __alloc_pages_nodemask, it will unnecessarily go to
> slowpath and then return failure.
> Since we know that more than MAX_ORDER will anyways fail, we can
> avoid slowpath by returning failure in nodemask itself.
>
> Signed-off-by: Pintu Kumar <pintu.k@samsung.com>
> ---
> mm/page_alloc.c | 4 ++++
> 1 file changed, 4 insertions(+)
>
> diff --git a/mm/page_alloc.c b/mm/page_alloc.c
> index 202ab58..6d38e75 100644
> --- a/mm/page_alloc.c
> +++ b/mm/page_alloc.c
> @@ -1564,6 +1564,10 @@ __setup("fail_page_alloc=", setup_fail_page_alloc);
>
> static bool should_fail_alloc_page(gfp_t gfp_mask, unsigned int order)
> {
> + if (order >= MAX_ORDER) {
> + WARN_ON(!(gfp_mask & __GFP_NOWARN));
> + return false;
> + }
I don't see how this solves what you describe (should return true?)
It would also not be a good place to put performance optimization,
because this function is only called as part of a debugging mechanism
that is usually disabled.
Lastly, order >= MAX_ORDER is not supported by the page allocator, and
we do not want to punish 99.999% of all legitimate page allocations in
the fast path in order to catch an unlikely situation like this.
Having the check only in the slowpath is a good thing.
--
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>
WARNING: multiple messages have this Message-ID (diff)
From: Johannes Weiner <hannes@cmpxchg.org>
To: Pintu Kumar <pintu.k@samsung.com>
Cc: akpm@linux-foundation.org, mgorman@suse.de, jiang.liu@huawei.com,
minchan@kernel.org, cody@linux.vnet.ibm.com, linux-mm@kvack.org,
linux-kernel@vger.kernel.org, cpgs@samsung.com,
pintu_agarwal@yahoo.com
Subject: Re: [PATCH 2/2] mm: page_alloc: avoid slowpath for more than MAX_ORDER allocation.
Date: Mon, 22 Jul 2013 12:38:36 -0400 [thread overview]
Message-ID: <20130722163836.GD715@cmpxchg.org> (raw)
In-Reply-To: <1374492762-17735-1-git-send-email-pintu.k@samsung.com>
Hi Pintu,
On Mon, Jul 22, 2013 at 05:02:42PM +0530, Pintu Kumar wrote:
> It was observed that if order is passed as more than MAX_ORDER
> allocation in __alloc_pages_nodemask, it will unnecessarily go to
> slowpath and then return failure.
> Since we know that more than MAX_ORDER will anyways fail, we can
> avoid slowpath by returning failure in nodemask itself.
>
> Signed-off-by: Pintu Kumar <pintu.k@samsung.com>
> ---
> mm/page_alloc.c | 4 ++++
> 1 file changed, 4 insertions(+)
>
> diff --git a/mm/page_alloc.c b/mm/page_alloc.c
> index 202ab58..6d38e75 100644
> --- a/mm/page_alloc.c
> +++ b/mm/page_alloc.c
> @@ -1564,6 +1564,10 @@ __setup("fail_page_alloc=", setup_fail_page_alloc);
>
> static bool should_fail_alloc_page(gfp_t gfp_mask, unsigned int order)
> {
> + if (order >= MAX_ORDER) {
> + WARN_ON(!(gfp_mask & __GFP_NOWARN));
> + return false;
> + }
I don't see how this solves what you describe (should return true?)
It would also not be a good place to put performance optimization,
because this function is only called as part of a debugging mechanism
that is usually disabled.
Lastly, order >= MAX_ORDER is not supported by the page allocator, and
we do not want to punish 99.999% of all legitimate page allocations in
the fast path in order to catch an unlikely situation like this.
Having the check only in the slowpath is a good thing.
next prev parent reply other threads:[~2013-07-22 16:39 UTC|newest]
Thread overview: 8+ messages / expand[flat|nested] mbox.gz Atom feed top
2013-07-22 11:32 [PATCH 2/2] mm: page_alloc: avoid slowpath for more than MAX_ORDER allocation Pintu Kumar
2013-07-22 11:32 ` Pintu Kumar
2013-07-22 16:38 ` Johannes Weiner [this message]
2013-07-22 16:38 ` Johannes Weiner
2013-07-23 2:01 ` PINTU KUMAR
2013-07-23 2:01 ` PINTU KUMAR
2013-07-23 4:35 ` Johannes Weiner
2013-07-23 4:35 ` Johannes Weiner
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=20130722163836.GD715@cmpxchg.org \
--to=hannes@cmpxchg.org \
--cc=akpm@linux-foundation.org \
--cc=cody@linux.vnet.ibm.com \
--cc=cpgs@samsung.com \
--cc=jiang.liu@huawei.com \
--cc=linux-kernel@vger.kernel.org \
--cc=linux-mm@kvack.org \
--cc=mgorman@suse.de \
--cc=minchan@kernel.org \
--cc=pintu.k@samsung.com \
--cc=pintu_agarwal@yahoo.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 an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.