On Fri, Dec 14, 2012 at 8:43 AM, Grant <emailgr...@gmail.com> wrote:

[...]

> So if I have 2 physical CPU's with 4 cores each and I enable SMP, I'm using
> 8 cores?  Can NUMA be either enabled or disabled when using more than one
> physical CPU, or is it required?


NUMA is a hardware architecture. It's how you access memory on a
hardware level: NUMA = Non Uniform Memory Access vs a UMA architecture
of typical (old/legacy) SMP systems (UMA = Uniform Memory Access).

In a UMA system, all the memory belongs to all the sockets. In a NUMA
system, each socket has it's "own" local memory. In modern (x86-64)
processors, each socket has it's own memory controller so each socket
controls its own local memory. If one socket runs out of memory it can
ask another socket to lend him some memory. In a UMA system, no socket
has to ask since memory is global and belongs to all sockets so if one
socket uses up all the memory ... the rest "starve". In NUMA, there's
more control over who uses what (be it cores or RAM).

If you have a modern dual or quad (or higher #) socket system ...
you've got NUMA architecture and you can't get rid of it, it's
hardware, not software.

NUMA is not bad nor good. It's "transparent" to you. If your SW
supports threads, OpenMP, ... you'll be using it without knowing. That
doesn't mean you can't tweak performance and use numactl tools,
cgroups, ... to increase performance. You can :)

HTH

   Rafa

Reply via email to