> I'm curious... If my app is NUMA aware (let's say it's an old fashioned threaded app), in this
> case woould it be interesting in enabling in BIOS (in concrete for a Dell R610 server) the
> memory option NODE INTERLEAVING? Or just let BIOS enable NUMA behavior (NODE
> INTERLEVING disabled)? Thanks and congrats for this great article!
s/NUMA aware/not NUMA aware/
It depends on whether your application fits in one node or not. If it fits in one node, then leave
NODE_INTERLEAVING off and use taskset to bind the application to one nodes worth of CPUs.
The memory will be allocated locally and performance will be decent.
If the application needs the whole machine and one thread faults all of the memory before
spawning other threads (a common anti-pattern for NUMA), then NODE_INTERLEAVING will give
good average performance. Without interleaving, your performance will sometimes be great
and other times really poor depending on if the thread is running on the node that faulted the
data or not. You don't need to go to the bios to test it out, launch the
application with