native threads
Bryce Kampjes
bryce at kampjes.demon.co.uk
Sat Apr 16 14:03:39 UTC 2005
John M McIntosh writes:
> Yes, but what would that buy you? For example lets look at the image
> I'm currently
> editing
>
> uptime 1h39m29s
> memory 38,573,136 bytes
> old 34,237,936 bytes (88.8%)
> young 168,148 bytes (0.4%)
> used 34,406,084 bytes (89.2%)
> free 4,167,052 bytes (10.8%)
> GCs 13,757 (434ms between GCs)
> full 5 totalling 3,836ms (0.0% uptime), avg 767.0ms
> incr 13752 totalling 60,476ms (1.0% uptime), avg 4.0ms
> tenures 32 (avg 429 GCs/tenure)
>
> 13,757 youngspace GC events, but only 5 full (aka OldSpace) collections.
> If you hide the 3.836 seconds by mixing it in with other processing
> over the hour & 40 minutes my image has been running I certainly won't
> notice anything.
It's not the total 3.8 seconds that need to be hidden but the 0.767
seconds for an individual global GC. 0.767 seconds is a long time if
you're using Squeak as a musical instrument.
GC takes 20% of the time when running at 100% CPU. If Squeak was 3.4
times faster (Exupery's current bytecode benchmark performance) that
would mean over 40% of the time was going into the GC. At that point
it would be worthwhile overhauling the GC for uniprocessor
performance. If it's worthwhile overhauling the GC then looking at
ways to provide other benefits without too much extra work is
sensible.
This is very long range planning, I don't plan to do anything for at
least a year or two but it's still nice to know what the options are
with their costs and benefits. Doubling Exupery's current performance
without improving the GC performance will have limited returns.
Mostly concurrent GCs would be helpful for personal multimedia use
where short pauses matter and for large server applications where a
full GC takes more than a few seconds. Multiple interpreters could be
added fairly easily by providing each one with it's own new space
(ignoring any issues in the image).
Bryce
More information about the Squeak-dev
mailing list
|