[PATCH] Linux NUMA support for HotSpot

Andi Kleen andi at firstfloor.org
Mon Mar 3 05:32:05 PST 2008


On Mon, Mar 03, 2008 at 04:25:53PM +0300, Igor Veresov wrote:
> 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.

That would require statically binding the threads too which is by default not
a good idea without explicit user configuration

The reasoning is that not using a CPU is always worse than using 
remote memory at least on systems with reasonable small NUMA factor.

(that is what killed the homenode scheduler too) 

> 
> >
> > 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.

It didn't seem to adapt though. Or maybe I'm misremembering the code,
it was some time ago.

-Andi 



More information about the hotspot-dev mailing list