[gclist] Distr. GC general discussion for FAQ

David Chase chase@centerline.com
Thu, 21 Mar 96 11:36:18 EST


I've been wondering on and off for years, whether there was any role 
for randomization in some of these distributed GC algorithms, especially 
those that move data.  I'd hope that this did not seem completely 
off-the-wall; in hardware, networks use randomness to avoid hotspot 
contention at routing nodes, and super-duper-computers have been 
known to use hashing schemes for assigning addresses to memory banks 
to help avoid stride problems.  Ethernet protocols also incoprorate 
some notion of randomness (on collision, double(?) the backoff window, 
and retransmit at some randomly chosen time in the window).

So, has anyone else thought about this?  I was thinking of something 
along the lines of:

  objects with external references get (additional, local) finalizers

  the finalizer flips a coin, and either forwards the object to one
  of the external referers, or lets it sit for another round.  Or
  if it doesn't forward the object, maybe it forwards a description 
  of the link.

  (a miracle occurs here / the rest of the algorithm is left as
  an exercise)

Or, to look at it another way, there are otherwise-hard problems 
that have completely acceptable probablistic solutions.  Distributed 
GC is a hard problem.

It might make sense to restrict attention to the distributed 
detached-cycle-finding portion of the problem. (From experience in 
the land of flow analysis algorithms, I recall that the hardest incremental 
updates problems involve edge deletion; however, it is also the nature 
of the problem that once a subgraph is detached, it must stop changing 
its shape.) 

David