Question about GC threads in parallel scavenge

Roman Kennke rkennke at
Tue Jul 24 19:54:35 UTC 2012


today I implemented 2 missing methods in os_linux.cpp
(distribute_processes() and bind_to_processor()) which are apparently
used for the parallel-scavenge GC to distribute the GC threads across
processors when -XX:+BindGCTaskThreadsToCPUs is set (in addition to -XX:

I now wonder if this is beneficial in a NUMA environment. There the GC
threads should be bound to the same processor (or more specifically
socket) that is 'close' to the GC thread's memory region. A random
distribution of GC threads over processors seems to undo some of the
benefits of NUMA. Right?

I am sure I must be missing something here. I am not very familiar with
Hotspot's GCs and also by far not an expert in NUMA, so I might be
totally looking in the wrong direction here. Would it make sense to make
the processor-assignment of GC threads NUMA-aware? Or maybe it already
is and I simply cannot see it (I am looking at current Solaris
implementation), maybe a different code path?

Kind regards,

More information about the hotspot-gc-dev mailing list