[PATCH] Linux NUMA support for HotSpot

Igor Veresov Igor.Veresov at Sun.COM
Mon Mar 3 05:25:53 PST 2008

On Monday 03 March 2008 15:57:19 Andi Kleen wrote:
> On Mon, Mar 03, 2008 at 03:19:13PM +0300, Igor Veresov wrote:
> > > > all working quite well, actually.
> > >
> > > One obvious issue I found in the Solaris code was that it neither
> > > binds threads to nodes (afaik), nor tries to keep up with a thread
> > > migrating to another node. It just assumes always the same thread:node
> > > mapping which surely cannot be correct?
> >
> > It is however correct. Solaris assigns a home locality group (a node) to
> > each lwp. And while lwps can be temporary migrated to a remote group,
> > page allocation still happens on a home node and the lwp is predominantly
> > scheduled to run in its home lgroup. For more information you could refer
> > to
> Interesting. I tried a similar scheduling algorithm on Linux a long time
> ago (it was called the "homenode scheduler") and it was a general loss on
> my testing on smaller AMD systems. But maybe Solaris does it all different.
> Anyways on Linux that won't work because it doesn't have the concept
> of a homenode.

Yes, but it has static memory binding instead, which alleviates this problem.

> The other problems is that it seemed to always assume all the threads
> will consume the whole system and set up for all nodes, which seemed dodgy.

You mean the allocator? Actually it is adaptive to the allocation rate on a 
node, which in effect makes the whole eden space usable for applications with 
asymmetric per-thread allocation rate. This of course also helps with the 
case when the number of threads is less than the number of nodes.


More information about the hotspot-dev mailing list