On Tue, Jul 31, 2007 at 11:14:08AM +0200, Andi Kleen wrote:On Tuesday 31 July 2007 07:41, Nick Piggin wrote:
I haven't given this idea testing yet, but I just wanted to get someI didn't think slab honored mempolicies by default? At least you seem to need to set special process flags.
opinions on it first. NUMA placement still isn't ideal (eg. tasks with
a memory policy will not do any placement, and process migrations of
course will leave the memory behind...), but it does give a bit more
chance for the memory controllers and interconnects to get evenly
loaded.
NUMA balance-on-fork code is in a good position to allocate all of a newThe page tables should be only allocated when the process runs; except
process's memory on a chosen node. However, it really only starts
allocating on the correct node after the process starts running.
task and thread structures, stack, mm_struct, vmas, page tables etc. are
all allocated on the parent's node.
for the PGD.
We certainly used to copy all page tables on fork. Not any more, but we
must still copy anonymous page tables.