1 |
> > So if I have 2 physical CPU's with 4 cores each and I enable SMP, I'm |
2 |
using |
3 |
> > 8 cores? Can NUMA be either enabled or disabled when using more than |
4 |
one |
5 |
> > physical CPU, or is it required? |
6 |
> |
7 |
> |
8 |
> NUMA is a hardware architecture. It's how you access memory on a |
9 |
> hardware level: NUMA = Non Uniform Memory Access vs a UMA architecture |
10 |
> of typical (old/legacy) SMP systems (UMA = Uniform Memory Access). |
11 |
> |
12 |
> In a UMA system, all the memory belongs to all the sockets. In a NUMA |
13 |
> system, each socket has it's "own" local memory. In modern (x86-64) |
14 |
> processors, each socket has it's own memory controller so each socket |
15 |
> controls its own local memory. If one socket runs out of memory it can |
16 |
> ask another socket to lend him some memory. In a UMA system, no socket |
17 |
> has to ask since memory is global and belongs to all sockets so if one |
18 |
> socket uses up all the memory ... the rest "starve". In NUMA, there's |
19 |
> more control over who uses what (be it cores or RAM). |
20 |
> |
21 |
> If you have a modern dual or quad (or higher #) socket system ... |
22 |
> you've got NUMA architecture and you can't get rid of it, it's |
23 |
> hardware, not software. |
24 |
|
25 |
So I must enable CONFIG_NUMA for more than one physical CPU, and disable it |
26 |
for only one physical CPU? |
27 |
|
28 |
- Grant |
29 |
|
30 |
|
31 |
> NUMA is not bad nor good. It's "transparent" to you. If your SW |
32 |
> supports threads, OpenMP, ... you'll be using it without knowing. That |
33 |
> doesn't mean you can't tweak performance and use numactl tools, |
34 |
> cgroups, ... to increase performance. You can :) |
35 |
> |
36 |
> HTH |
37 |
> |
38 |
> Rafa |