[rucksack-devel] thoughts on deferring GC
Arthur Lemmens
alemmens at xs4all.nl
Tue Jan 16 10:06:15 UTC 2007
Cyrus Harmon wrote:
> 1. Do we want an interface for doing GC at some point?
Yes, I think so. We'd probably want at least the following:
- turn it off completely
- run one complete round of GC
- set the ratio between amount of work / amount of allocated
- (maybe) specify some kind of maximum heap size. If specified,
the heap may never grow beyond this size.
> How do we go about recovering the additional space from
> the transactions with :gc-inhibit t?
If you turn GC on afterwards, sooner or later it will recover the
additional space. Probably ;-)
> 2. Do we ever reclaim the disk space, besides just freeing the blocks
> up for later use?
Not in this version of the GC: it's a mark and sweep collector that
doesn't compact the heap. I've written most of a copying collector,
but I haven't committed that to CVS yet because it isn't finished.
But in the long run, I think Rucksack should move to a copying GC.
It's safer, simpler and it compacts the heap as part of the copying
process.
> 3. The GC code seems to give SBCL fits. I'm a bit concerned about the
> fake_foreign_call falling through stuff, which is basically a SIGILL
> or SIGBUS in SBCL. These occasionally happen under rare circumstances
> with SBCL, but GC, both during the transaction, and when done after
> the fact, seem to greatly increase the likelihood of this happening.
> Either we're doing something funky or we're tickling an SBCL bug
> that's causing it to go haywire.
Hmm. If you finish the copying GC (should be relatively simple, I
think that all the basic work is already done), you could try that
one instead. I can send you the code if you're interested.
Arthur
More information about the rucksack-devel
mailing list