Messages in this thread | | | Date | Fri, 21 May 2004 10:27:17 -0700 | From | "Brett E." <> | Subject | Re: How can I optimize a process on a NUMA architecture(x86-64 specifically)? |
| |
Martin J. Bligh wrote:
>>Say you have a bunch of single-threaded processes on a NUMA machine. >>Does the kernel make sure to prefer allocations using a certain CPU's >>memory, preferring to run a given process on the CPU which contains >>its memory? Or should I use the NUMA API(libnuma) to spell this out >>to the kernel? Does the kernel do the right thing in this case? > > > The kernel will generally do the right thing (process local alloc) by > default. In 99% of cases, you don't want to muck with it - unless you're > running one single app dominating the whole system, and nothing else is > going on, you probably don't want to specify anything explicitly. > > M. > Let's say I have a 2 way opteron and want to run 4 long-lived processes. I fork and exec to create 1 of the processes, it chooses to run on processor 0 since processor 1 is overloaded at that time, so its homenode is processor 0. I fork and exec another, it chooses processor 0 since processors 1 is overloaded at that time. .. Let's say an uneven distribution is chosen for all 4 processes, with all processes mapped to processor 0. So they allocate on node 0 yet the scheduler will map these to both processors since CPU should be balanced. In this case, you will have a situation where the second processor will have to fetch memory from the other processor's memory.
So a better solution would be to use numactl to set the homenodes explicitly, choosing processor 0 for 2 processes, processor 1 for the 2 other processes.
Is this incorrect?
- To unsubscribe from this list: send the line "unsubscribe linux-kernel" in the body of a message to majordomo@vger.kernel.org More majordomo info at http://vger.kernel.org/majordomo-info.html Please read the FAQ at http://www.tux.org/lkml/
| |