[Openmcl-devel] native threads
Tim McNerney
mc at media.mit.edu
Fri Jan 5 10:55:04 PST 2024
To the best of my knowledge, CCL's GC is kicked off by whichever thread
calls a storage allocator that triggers a garbage collection.
The GC then stops all (other) "mutator" threads while it "does its
thing," where "stop" includes single-stepping through any in-line
consing vinsns. This means that the GC needs to be able to /parse/
compiled code to detect whether a mutator thread is in an atomic consing
operation without the need for any expensive locking mechanism. For all
you ITS historians, look up "PCLSRing." Same deal, except I don't think
CCL ever backs out of a code sequence, it just pushes forward. ITS had
the option of backing out of a machine instruction that "hadn't gotten
very far."
On 1/5/24 1:39 PM, David McClain wrote:
>> However in this case it looks mostly like the SBCL GC is doing better: CCL is spending 85% of the time in GC, SBCL somewhat less (about 65%).
>>
> In systems that are SMP capable, I would think that one thread could be dedicated, if needed, to GC duties. The amount of time spent in GC would then depend on how productive the rest of the system is. And I wouldn’t necessarily think ill of a high GC percentage.
>
>
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <https://lists.clozure.com/pipermail/openmcl-devel/attachments/20240105/dec4ed64/attachment.htm>
More information about the Openmcl-devel
mailing list