Skip site navigation (1)Skip section navigation (2)
Date:      Thu, 13 Nov 2008 01:35:28 +0100
From:      Ivan Voras <ivoras@freebsd.org>
To:        freebsd-smp@freebsd.org
Subject:   NUMA?
Message-ID:  <gffsof$vpp$1@ger.gmane.org>

next in thread | raw e-mail | index | archive | help
Hi,

As even Intel's new CPUs have integrated memory controllers and thus 
become NUMA, I'm interested in what is, in theory (I'm not proposing to 
do it, I'm just curious), necessary to change in an OS to support NUMA. 
My guess is:

1) node topology detection - something similar to what ULE does but also 
recording which memory ranges are "close" to which CPU and the 
"distance" between nodes/CPUs
2) on new image load (exec), pick a node for it, among "least used" 
nodes and record the choice per-proc; on fork, keep the new process on 
the same node
3) schedule threads on a CPU from the proc's node if at all possible 
(e.g, when a 6-core CPU is still 1 node), then on a "near" node from a 
list of distances sorted in order of cost
4) allocate new pages for a proc from its node's memory range(s) if at 
all possible.

Is this all?

On the other hand, did someone do a study of performance increase for 
todays "consumer" NUMA systems (e.g. 2-4 sockets/nodes x86/x64 systems) 
- is it worth it?




Want to link to this message? Use this URL: <https://mail-archive.FreeBSD.org/cgi/mid.cgi?gffsof$vpp$1>