[gclist] Distributed Garbage Collection Revisited 1

H.C.C.Rodrigues hccdr@ukc.ac.uk
Wed, 03 Jul 1996 14:14:07 +0100


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?

I am preparing a camera-ready version for the WDAG96, that I will send to you
if you are intersted. I would like to get some comments 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.

I agree that the system can do that, but the algorithm would be very dependent
from the time a local collection is performed. May happen that the DGC returns
several times to the same processor. In this case I agree that an
implementation would be necessary to study 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.

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

"The solution is to make a second pass, and to implement a "new
scion" barrier. This is similar to the write barrier used by
local 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:

I think it is not necessary an infinite number of new incoming references
appear before the distributed trace terminates to not terminate the algorithm.
We can have a cycle of objects spawning two processes being reachable from a
root either in one process or in the 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. 

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

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

Thank you,
Helena Rodrigues.