[gclist] Page grouping trick

John Levon moz@compsoc.man.ac.uk
Thu, 17 May 2001 19:53:16 +0100 (BST)


On Thu, 17 May 2001, Pekka P. Pirinen wrote:

> > moving collector. Each object could have a permanent address
> > composed of virtual page number and offset. On translation this will
> > translate to some offset in a physical page. This means we can copy
> > objects by copying and re-mapping. Any object lookup will NOT
> > require an object table lookup.
> 
> I must be missing something: What would be the purpose of this moving?
> If the virtual addresses are permanent, your live data will not be
> compacted in any useful sense: It's still fragmented and allocating
> new objects still requires a free list (of free virtual ranges).  So
> why did we expend the effort of moving it to different physical pages?

Hmm, that's a good point. However being able to move stuff easily allows
dynamic re-grouping, alleviating false sharing of physical pages for many
unrelated objects. This /could/ have a real impact on paging.

> The thing that's different about object tables is that each object, no
> matter how large, requires only one slot.  I suppose if _all_ your
> objects are smaller than a page, you'll get the same simplicity.  Then
> you hit the hardware limits mentioned.

I mentioned the idea to Rik van Riel and he recoiled in horror ;)

Maybe I should ask a more basic question: there is a fundamental clash
between fast object addressing and a moving collector. Some moving can be
allowed with Bartlett-style ambiguous roots collectors, but I'm not sure
about the trade-offs there. If I want a fully-moving collector, it seems
I must take the hit of indirection or implement some object-cache scheme
in h/w e.g. Mushroom-style. Is there a third way ?

I'm specifically interested in this question for Java. I can't have a
stop-the-world implementation...

thanks
john

p.s. My sig appears to be particularly pertinent today ;)

-- 
"Understanding. A cerebral secretion that enables one having it to know
 a house from a horse by the roof on the house. Its nature and laws have
 been exhaustively expounded by Locke, who rode a house, and Kant, who
 lived in a horse."
	- Ambrose Bierce