This issue tracker has been migrated to GitHub, and is currently read-only.
For more information, see the GitHub FAQs in the Python's Developer Guide.

Author pablogsal
Recipients nanjekyejoannah, nascheme, pablogsal, tim.peters
Date 2019-12-28.16:24:35
SpamBayes Score -1.0
Marked as misclassified Yes
Message-id <1577550275.24.0.219913312346.issue39143@roundup.psfhosted.org>
In-reply-to
Content
> What threshold is this?

This is the different thresholds for the generations that you can get using gc.get_threshold(). They are in relationship to the number of objects in every generation (there are slightly different rules for the latest generation).

> This method is good but we will still incur the overhead of copying objects between the semi-spaces.

I am not sure what you mean with "copy" here. Moving objects from generations or spaces is just updating the pointers of the linked lists. Objects are not "copied" but "moved". 

> I have looked at a similar problem before for a different runtime and instead think to consider basing promotion on the number of collections survived by objects in the young generation. This requires using five bits from one of two header words of each object to record its age. The objects that reach the collection threshold are promoted to the old generation. This will give the young objects enough time to die thereby reducing how often objects are promoted to the old generation. This in turn reduces the frequency of major collections hence reduced pause times.

The reason I am proposing sub-generation steps is that making the object header bigger is a price too high to pay for this problem. We have recently gone to notable efforts to reduce one word per object by complicating the code substantially using tagged pointers, so recording the age in the object seems the opposite direction. 

> I would only consider the generational semi-spaces after we have explored basing promotion on the age of an object in a generation. If this doesn't work, then we can use the bucket brigade scheme.

As I mentioned before, recording per-object age will be probably a no-go (the solution to this problem will yield memory gains because objects won't suffer "generational nepotism" but making the object header bigger will annihilate those gains) so that is the reason I proposed generational sub-steps.
History
Date User Action Args
2019-12-28 16:24:35pablogsalsetrecipients: + pablogsal, tim.peters, nascheme, nanjekyejoannah
2019-12-28 16:24:35pablogsalsetmessageid: <1577550275.24.0.219913312346.issue39143@roundup.psfhosted.org>
2019-12-28 16:24:35pablogsallinkissue39143 messages
2019-12-28 16:24:35pablogsalcreate