Just some words of clarification here:
Memory spreading is useful if multiple processes are running on
multiple nodes that access the same set of files (and therefore use the
same dentries inodes etc). This is only true for very large applications.
Users typically segment a machine using cpusets to give these apps a
range of nodes and processors to use. The rest of the system may be used
for other needs. The spreading should therefore be restricted to the set
of nodes in use by that application.
This is very different from the typical case of a single threaded process
roaming across some data and then terminating. In that case we always want
placement of memory as near to the process as possible. In cases were we
are not sure about future application behavior it is best to assume that
node local is best. Spreading memory allocations for storage that is only
accessed from one processor will reduce the performance of an application.
So the default operating mode needs to be node local.
There is one exception from this during system bootup. In that case we are
allocating structures that will be finally be used by processes running on
all nodes on the system. It is therefore advantageous to spread these
allocations out. That is currently accomplished by setting the default
memory allocation policy to MPOL_INTERLEAVE while a kernel boots. Memory
allocation policies revert to default (node local) when init starts.
-
To unsubscribe from this list: send the line "unsubscribe linux-kernel" in
the body of a message to [email protected]
More majordomo info at http://vger.kernel.org/majordomo-info.html
Please read the FAQ at http://www.tux.org/lkml/
[Index of Archives]
[Kernel Newbies]
[Netfilter]
[Bugtraq]
[Photo]
[Stuff]
[Gimp]
[Yosemite News]
[MIPS Linux]
[ARM Linux]
[Linux Security]
[Linux RAID]
[Video 4 Linux]
[Linux for the blind]
[Linux Resources]