Thursday, 15 January 2009

Multi-core now, NUMA next

Quad-core PCs are in the shops, but as Sandia reports, there is a limit to how much we can grow performance by adding more cores.

The next bottleneck is memory - and the simple way to solve that problem is to split the memory, giving each CPU its own memory. This adds a new parameter to allocated memory: Which thread does this memory belong to? Actually, the technology already exists. Windows and Linux both support Non-Uniform Memory Access, NUMA. It is typically used in virtualization hosts in data centers, for instance using VMware ESX Server. If you haven't heard about it, you may want to prepare yourself for the future.


Marshall Fryman said...

I'm not sure that there will be much preparation available to a standard developer. Most of the NUMA architecture is hidden by the OS. I suppose it is arguable where or not that's a good thing, but the complexity involved in maintaining cache coherence probably requires it remain there.

Anonymous said...

Lars you'd like this:

"Maximum 256 MB of memory per CPU, in 1 MB increments, up to 8 CPUs, Unix System V"

Life is a cycle and everything returns :-)

Lars D said...

When CPUs stopped improving, the solution was to add multiple cores tied to the same main RAM. When RAM access becomes a bottle neck for games and desktop applications, what is the next step?

The operating systems will need to provide NUMA features to applications.

Lars D said...

Intel's next generation CPUs add NUMA:

ArsTechnica article about Nehalem