[gclist] Distributed Garbage Collection Revisited 1

Rick Hudson hudson@freya.cs.umass.edu
Wed, 3 Jul 1996 10:33:45 -0400 (EDT)


>From my reading of the algorithms they traverse the graph twice. Once to see
if any node in the graph is reachable and a confirming trace to determine if
the graph has changed since the first traversal.  During the first trace each
object in the graph notes when this node was visited. Between the time the
node is first visited and the time the confirming trace of the graph is done a
barrier is built around the object and any new references are noted.  When the
confirming trace is done the node indicates that it has leaked a reference and
therefore this chain can not collected. Some algorithms pass the first pass
information around with the traversal information. I am not sure how where
they keep the last time updated information.

Before the object can be collected one must somehow determine if the last read
of the node happened after the first trace. Determining that the object is
locally unreachable at the time of the confirming trace reaches it is not
enough since the reference could have been leaked and the path to the leakage
could have been removed before the confirming trace arrives.

- Rick Hudson


>>>>> "HCC" == H C C Rodrigues <hccdr@ukc.ac.uk> writes:

    HCC> Matthew,
    >> Will you be making a description of your algorithm available over the
    >> Web, or post it here?  Is this similar to Lang, et al.'s algorithm of
    >> ever growing groups?

    HCC> I am preparing a camera-ready version for the WDAG96, that I will
    HCC> send to you if you are intersted. I would like to get some comments
    HCC> from you.

    >> Since computation is not halted during DGC, it is inevitable that some
    >> garbage will not be collected, although one should certainly try to
    >> minimize this.  This is partly an implementation issue.  The local
    >> system can (should?) choose to perform a local GC, or briefly delay the
    >> algorithm until one can be performed, before continuing the distributed
    >> trace or replying.

    HCC> I agree that the system can do that, but the algorithm would be very
    HCC> dependent from the time a local collection is performed. May happen
    HCC> that the DGC returns several times to the same processor. In this
    HCC> case I agree that an implementation would be necessary to study
    HCC> theses cases.

    >> I assume by "confirming trace" you mean a local collection from the
    >> scions?  There are two ways to address this: 1) Use a different bit for
    >> marking nodes involved in a DGC.  2) Continue performing collections as
    >> before, which involves tracing from the scions.  This will remark all
    >> the necessary nodes.

    HCC> I didn't understand what do you mean with 1) and 2).  "confirming
    HCC> trace" is the token ("CHECK-SEQUENCE, ...) in Gustavo Algorithm, and
    HCC> what Giuliano means when he says:

    HCC> "The solution is to make a second pass, and to implement a "new
    HCC> scion" barrier. This is similar to the write barrier used by local
    HCC> collectors to determine that they must rescan an area of memory."

    >> I am not sure I understand.  The algorithm would only not terminate if
    >> an infinite number of new incoming references appear before the
    >> distributed trace terminates.  The new incoming reference can only come
    >> to a scion, since there cannot be a remote reference to any object
    >> without a scion.  The new incoming reference can only belong to either:

    HCC> I think it is not necessary an infinite number of new incoming
    HCC> references appear before the distributed trace terminates to not
    HCC> terminate the algorithm.  We can have a cycle of objects spawning two
    HCC> processes being reachable from a root either in one process or in the
    HCC> other. The DGC may never reach a root.

    >> 1) A remotely rooted object.  If there are no garbage processes, we can
    >> just use this as proof the object is alive.

    HCC> I think the problem I presented does not exist if you consider the
    HCC> objects being remotely accessed live. In this case I imagine that the
    HCC> back-search would terminate.  What would happen when a "grey" object
    HCC> is remoteley accessed?  Sorry If am thinking to much in an
    HCC> implementation level, but I think that it was what is more important
    HCC> now. There are lots of algorithms in DGC litterature, without being
    HCC> implemented.

    HCC> I would like to ask as well to the people working in implementations,
    HCC> which kind of applications/tests they are using?

    HCC> Thank you, Helena Rodrigues.