From: Paul Jackson <pj@sgi.com>
To: Christoph Lameter <clameter@sgi.com>
Cc: linux-mm@kvack.org
Subject: Re: A solution for more GFP_xx flags?
Date: Mon, 11 Sep 2006 23:16:23 -0700 [thread overview]
Message-ID: <20060911231623.a0d811ba.pj@sgi.com> (raw)
In-Reply-To: <Pine.LNX.4.64.0609111920590.7815@schroedinger.engr.sgi.com>
> struct allocation_control {
> unsigned long flags; /* Traditional flags */
> int node;
> struct cpuset_context *cpuset;
I don't understand what purpose this cpuset pointer has.
The main (heavily traveled) code paths beneath __alloc_pages() don't
look at the tasks cpuset at all, and the less traveled code paths only
look at the current tasks cpuset.
I have no clue how the above cpuset pointer could (usefully) be
anything other than just a copy of current->cpuset. Also, without
serious reworking of the locking and likely some performance impact, I
have no idea what use this cpuset pointer would be on the main memory
allocation code paths.
The cpuset imposed constraints on an allocation are represented by the
mems_allowed nodemask and the flags PF_SPREAD_PAGE and PF_SPREAD_SLAB
in the task struct. If the memory constraints imposed by a tasks
cpuset change, then these constraints are transfered to the tasks
mems_allowed and flags by the routine cpuset_update_task_memory_state().
Unlike mm/mempolicy.c NUMA mempolicies, one task -can- change the cpuset
of another task. This forces us to have fancier (more expensive)
locking on cpusets, and that means we have to keep cpusets off the hot
memory allocation code paths and instead cache their constraints in the
task struct.
--
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>
prev parent reply other threads:[~2006-09-12 8:51 UTC|newest]
Thread overview: 8+ messages / expand[flat|nested] mbox.gz Atom feed top
2006-09-12 2:28 Christoph Lameter
2006-09-12 2:44 ` Nick Piggin
2006-09-12 3:01 ` Christoph Lameter
2006-09-12 3:05 ` Peter Chubb
2006-09-12 3:07 ` Christoph Lameter
2006-09-12 3:11 ` Peter Chubb
2006-09-12 5:32 ` Christoph Lameter
2006-09-12 6:16 ` Paul Jackson [this message]
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=20060911231623.a0d811ba.pj@sgi.com \
--to=pj@sgi.com \
--cc=clameter@sgi.com \
--cc=linux-mm@kvack.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