LWN.net Logo

About NUMA

About NUMA

Posted Feb 18, 2010 15:00 UTC (Thu) by mel (subscriber, #5484)
In reply to: About NUMA by cma
Parent article: Huge pages part 1 (Introduction)

> 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

numactl --interleave=all your-application


(Log in to post comments)

About NUMA

Posted Feb 18, 2010 18:17 UTC (Thu) by cma (subscriber, #49905) [Link]

Mel, thanks A LOT! It's all very clear now! Best regards!

Copyright © 2013, Eklektix, Inc.
Comments and public postings are copyrighted by their creators.
Linux is a registered trademark of Linus Torvalds