From: Andi Kleen <andi@firstfloor.org>
To: Vasileios Karakasis <bkk@cslab.ece.ntua.gr>
Cc: Andi Kleen <andi@firstfloor.org>,
linux-numa@vger.kernel.org,
'Kornilios Kourtis' <kkourt@cslab.ece.ntua.gr>
Subject: Re: realloc function
Date: Wed, 5 Jan 2011 20:25:32 +0100 [thread overview]
Message-ID: <20110105192532.GD25713@one.firstfloor.org> (raw)
In-Reply-To: <4D24879B.8060205@cslab.ece.ntua.gr>
On Wed, Jan 05, 2011 at 05:00:43PM +0200, Vasileios Karakasis wrote:
> Peeking inside the mremap() source, I can see that the kernel already
> does this, i.e., mremap() preserves the policy of the original vm area.
That is true.
>
> The problem is when the user has not specified a binding for the
> original mapping (default policy), in which case copying explicitly the
> policy from the old to the new pages won't work either; the new pages
> will still have MPOL_DEFAULT. So realloc() cannot guarantee that the new
It would be possible to do
get_mempolicy MPOL_F_ADDR
if policy == MPOL_DEFAULT:
get_mempolicy MPOL_F_NODE|MPOL_F_ADDR, &node
mbind MPOL_PREFERRED, node
But then you end up with preferred instead of default. It should
be usually the same, but may not in some corner cases.
I guess you're right and that case is too obscure to care about.
I guess your original patch without anything was good enough.
It may be worth it to add some comments on this rationale though.
> pages will be allocated on the same node as the preceding alloc(),
> unless there is a way to obtain the actual node that the pages of the
> original allocation were allocated on. In my opinion, this isn't a real
> problem, because even the simple numa_alloc() using the default policy,
> cannot guarantee that the pages will be allocated on the node of the
> calling cpu: what if the task is migrated to a different cpu on a
> different node, while touching (i.e., allocating) the pages with the
> police_memory_int()?
process policy and MPOL_DEFAULT are always just heuristics; such races
can always occur. They usually should not because the scheduler
does not migrate too frequently.
-Andi
next prev parent reply other threads:[~2011-01-05 19:25 UTC|newest]
Thread overview: 11+ messages / expand[flat|nested] mbox.gz Atom feed top
2011-01-02 17:37 realloc function Vasileios Karakasis
2011-01-02 23:42 ` Andi Kleen
2011-01-03 21:56 ` Vasileios Karakasis
2011-01-03 22:44 ` Cliff Wickman
2011-01-04 22:20 ` Andi Kleen
2011-01-05 12:11 ` Vasileios Karakasis
2011-01-05 15:00 ` Vasileios Karakasis
2011-01-05 19:25 ` Andi Kleen [this message]
2011-01-10 22:12 ` Vasileios Karakasis
2011-01-10 22:17 ` Andi Kleen
2011-01-11 16:29 ` Cliff Wickman
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=20110105192532.GD25713@one.firstfloor.org \
--to=andi@firstfloor.org \
--cc=bkk@cslab.ece.ntua.gr \
--cc=kkourt@cslab.ece.ntua.gr \
--cc=linux-numa@vger.kernel.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 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.