[gclist] GC for multi-threaded and multi-processor systems?

David Bruce dib@dera.gov.uk
Wed, 08 Jul 1998 14:33:00 +0100


Some colleagues and I have been developing a parallel simulation system,
though to date we have been able to do the bulk of our work in a purely
sequential setting, for which the Boehm-Demers-Weiser collector has been
entirely adequate.

However, we now do need to move to multi-threaded and multi-processor
(shared-memory, for now) versions, and would appreciate advice from
anyone who has trod a similar route.

The documentation for the BDW collector (v4.11) explains how to
configure it for Solaris threads (we're using Suns, so that's OK), which
would make it MT-safe, but I'm concerned that this might not be
sufficient for a truly parallel system: alloc.c/solaris_threads.c
suggest that it stops the world (all the LWPs in the process) to do its
collection, thereby forming a potentially serious parallel bottleneck,
but how severe is this in practice?  (Or have I misunderstood how it
works?)  Does the BDW collector have a truly parallel version (and if
not, does its incremental mode help?), or can anyone recommend another
garbage collector that does?  Finally, are there any nasty gotchas I
should know about with any of the above?


    Dastatically vid Bruce
post: DERA Malvern, St Andrews Road, Malvern, WORCS WR14 3PS, ENGLAND
mailto:dib@dera.gov.uk ** phone: +44 1684 895112 ** fax: +44 1684 894389

[The views expressed above are entirely those of the writer and do not represent the views, policy or understanding of any other person or official body.]