Re: [rvm-research] Pre-Tenuring

Shoaib Akram <[email protected]> Fri, 10 Aug 2018 21:58:11 +0200
Newsgroups gmane.comp.java.jikes.rvm.devel
Message-ID <[email protected]>
Thanks for clarifications. Objects in LOS are only collected during a full-heap GC in my case so I took the liberty of calling them pre-tenured. You are right that one can have logical generations in a non-moving heap region, and pre-tenuring would mean something else. 

About copying *which* objects, I meant that while the mutator is pre-tenuring objects of type T in the immix mature space, all other (small) object that survive a minor GC are copied to the same immix space (where mutator is allocated type T objects). And based on the failure logs, it seems the fault happens during the copying of a nursery survivor to the immix mature space.

I could try to create a 2nd immix space to allocate all object of type T. But in theory, mutator and GC can allocate (and promote) objects to the same space. I have an allocator per GC and Mutator. It should (and must) work out of the box ;)

Yes, an object of type T can be large. But in Jikes, the mutator performs a size-check at runtime, and during this check, if the object is larger than a threshold, the allocator picked during compile-time  is overruled, and replaced with the large object allocator.

Thanks, 
Shoaib

> On Aug 10, 2018, at 9:42 PM, Eliot Moss <[email protected]> wrote:
> 
> On 8/10/2018 3:19 PM, Shoaib Akram wrote:
>> There is one large object space. Objects larger than a threshold are pre-tenured to the large object space as in all default generational collectors. That is perfectly fine!
> 
> LOS is not necessarily a *mature* space.  It is different in that objects allocated there are
> never moved.  However, I believe that they can *logically* progress from being "nursery" to
> being "mature".  The notion of generations can be orthogonal to whether a space is moving or
> non-moving.
> 
>> Small objects go to the nursery, with the exception that, objects of type T go to the mature (immix) space. Note that in default generational collectors, there is no such pre-tenuring. This is my modification.
> 
> Yes, that seems right - it is what pre-tenuring means.
> 
>> Pre-tenuring objects of type T creates the problem.
>> What I am guessing is that when the GC tries to copy objects from nursery to immix mature space, that creates a problem.
> 
> Copy *which* objects?  Pre-tenured objects should not be in the nursery.  They should be allocated
> directly into mature space.  Now it is possible that the nursery collector is not expecting that
> any objects will have been allocated into mature space since the last collection, and direct
> allocation in mature space confuses it.  However, I would expect the mature space allocator to
> have been designed such that this is not a problem.
> 
>> I am not new to Jikes and have a list of steps that I can follow to get to the root of this. But being in an emergency, I wanted some quick tips in case some one has tried similar things ;)
>> Sorry for possibly missing more details.
> 
> I think someone more familiar with the specific code will need to help further.
> 
> Can an object of type T be large, i.e., allocated into LOS?  If so, I am not sure
> what behavior that might lead to.
> 
> I am hoping that Steve Blackburn or other MMTk experts will pick up the thread and
> help you out on this ...
> 
> Bst - EM
> 
> ------------------------------------------------------------------------------
> Check out the vibrant tech community on one of the world's most
> engaging tech sites, Slashdot.org! http://sdm.link/slashdot
> _______________________________________________
> Jikesrvm-researchers mailing list
> [email protected]
> https://lists.sourceforge.net/lists/listinfo/jikesrvm-researchers


------------------------------------------------------------------------------
Check out the vibrant tech community on one of the world's most
engaging tech sites, Slashdot.org! http://sdm.link/slashdot