Impacts of the squeak garbage collector

Paul McCullough paulmc at ftconnect.com
Mon Feb 18 23:08:06 UTC 2002


At 07:55 AM 2/18/02 -0800, Alan Kay wrote:
>Interval had a great submillisecond GC that was terrific for real-time 
>apps. Maybe we can get this from them now that they have donated their 
>work to Stanford (per Glenn Edens).

Not to put a damper on things, but...
The Interval real-time collector (of which I am the author) should be 
viewed as a prototype. It was based on Baker's Treadmill algorithm -- not 
the Train algorithm.

Due to some design constraints, and due to running out of time (I was quite 
ill for a while and then left Interval shortly before they terminated the 
project) I certainly wouldn't call the collector finished. If Glenn Edens 
is saying that the collector was sub-millisecond, I have no idea where he 
got those numbers. On paper yes, in reality no one knows. In fact, due to 
some bugs in the in-liner, much of the code was never in-lined and it ran 
much, much slower than the standard Squeak collector. But it did run Squeak 
for hours without crashing so the concept worked.

Other research shows that real-time collectors use considerably more time 
to run than 'straightforward' collectors: 5 - 8 times more if I recall 
correctly. The real-time advantage is that the work is spread out and hence 
much less disruptive to the running system. But you have to pay the price 
somewhere.

Before anyone asks, I don't the source code (which was written in 
Interval's version of Slang). I know where it was on Interval's servers 
when I left the company, but have been asked by Tim Rowledge and others if 
I have a copy, so it may be lost or somewhere in backup-ether.

I occasionally have a flash of insight as to how to simplify the collector 
-- just the other day I realized how to deal with the difficulties of 
dealing with become: in a much simpler way.

If someone wants to pursue putting a real-time collector into Squeak, I can 
likely provide some guidance (off-list) . One thing that would help 
tremendously would be to simplify & clarify the interface between the 
Interpreter and ObjectMemory (at least it would have years ago, I haven't 
look at the interface recently).

paul




More information about the Squeak-dev mailing list