From: Paul Jackson <pj@sgi.com>
To: Nick Piggin <nickpiggin@yahoo.com.au>
Cc: rohit.seth@intel.com, akpm@osdl.org, torvalds@osdl.org,
linux-mm@kvack.org, linux-kernel@vger.kernel.org
Subject: Re: [PATCH]: Cleanup of __alloc_pages
Date: Sat, 12 Nov 2005 21:09:13 -0800 [thread overview]
Message-ID: <20051112210913.0b365815.pj@sgi.com> (raw)
In-Reply-To: <43716476.1030306@yahoo.com.au>
The __GFP_HIGH, GFP_ATOMIC, __GFP_WAIT flags are still driving me bonkers.
It seems to me that:
1) __GFP_WAIT is supposed to mean can wait, and __alloc_pages()
keys off that bit to set its "wait" variable. Good so far.
2) __GFP_HIGH is supposed to mean can access emergency pools
(use lower watermarks), and __alloc_pages() does that. Also
good so far.
3) But gfp.h defines GFP_ATOMIC to be an alias for __GFP_HIGH,
and many callers through out the kernel use GFP_ATOMIC to mean
"can't sleep" or "can't wait" or some such. These folks are
not getting the service they expect - they are asking for the
most aggressive form of allocation (short perhaps of the
special case for allocations that will net free more memory
than they require, such as exiting), and they get the half way
improvement instead, with the possibility of sleeping (!).
The confusion even extends to the comments in __alloc_pages(),
such as in the lines:
/* Atomic allocations - we can't balance anything */
if (!wait)
goto nopage;
The "!wait" condition is --not-- GFP_ATOMIC, which is what
one might think was meant by "Atomic allocations", and likely
what the many users of GFP_ATOMIC were expecting - a nopage
response in such cases.
Perhaps GFP_ATOMIC should be its own __GFP_ATOMIC bit, with a BUG_ON
if both __GFP_ATOMIC and __GFP_WAIT are set at the same time,
leaving __GFP_HIGH for the few uses where people were just asking
to go a bit lower in the reserves.
--
I won't rest till it's the best ...
Programmer, Linux Scalability
Paul Jackson <pj@sgi.com> 1.925.600.0401
--
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:[~2005-11-13 5:09 UTC|newest]
Thread overview: 19+ messages / expand[flat|nested] mbox.gz Atom feed top
2005-11-08 1:43 Rohit, Seth
2005-11-08 1:53 ` Andrew Morton
2005-11-08 2:16 ` Rohit Seth
2005-11-08 2:44 ` Andrew Morton
2005-11-08 3:47 ` Nick Piggin
2005-11-08 5:44 ` Paul Jackson
2005-11-08 6:00 ` Nick Piggin
2005-11-08 6:22 ` Paul Jackson
2005-11-08 18:17 ` Rohit Seth
2005-11-08 19:54 ` Paul Jackson
2005-11-09 2:52 ` Nick Piggin
2005-11-13 5:09 ` Paul Jackson [this message]
2005-11-13 5:14 ` Paul Jackson
2005-11-13 7:00 ` Nathan Scott
2005-11-13 7:12 ` Andrew Morton
2005-11-13 7:47 ` Paul Jackson
2005-11-08 3:07 ` Paul Jackson
2005-11-08 5:31 ` Nick Piggin
2005-11-09 0:17 ` Paul Jackson
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=20051112210913.0b365815.pj@sgi.com \
--to=pj@sgi.com \
--cc=akpm@osdl.org \
--cc=linux-kernel@vger.kernel.org \
--cc=linux-mm@kvack.org \
--cc=nickpiggin@yahoo.com.au \
--cc=rohit.seth@intel.com \
--cc=torvalds@osdl.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