> > 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.
So I must enable CONFIG_NUMA for more than one physical CPU, and disable it for only one physical CPU? - Grant > 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

