[gclist] Real-Time GC for high-level languages

Jim Larson jim@sendmail.com
Tue, 30 Jan 2001 14:36:56 -0800

In message <20010130194828.A553@ZhengHe.augustin.thierry> you write:
>In practice, what kind of "soft-real-time" constraints are met by
>Erlang-deployed systems? And what impact does management of the shared
>data (bulk as well as system management information about processes)
>have on the real-time response?

I'm not sure what kinds of GC pauses are typical - I think a few
milliseconds, but I don't know how much that can change in unusual
environments.  Since the GC is only run when the Erlang process
(thread) is scheduled (I think), the GC, as well as ordinary
execution, is sensitive to the scheduling algorithm, which could
be the tall tentpole in any real-time concerns.

As far as the GC is concerned, the shared data is much like a remote
reference in distributed GC - you need to know when the last
reference to the remote object in your local heap goes away so that
you can take some corrective action - in this case, grab a
lightly-contested lock and decrement a reference count.  Several
straightforward methods can be used to track these references, and
none should show any significant overhead in this context.