Joannah Nanjekye <nanjekyejoan...@gmail.com> added the comment:

> The most common reason is that when promotions of the youngest generations 
> happen, 
>some very young objects that just arrived in the generation are >promoted 
>because we have >reached a threshold, and its death will be >delayed.

What threshold is this? Is it based on the number of objects in the young 
generation in that if the number of objects in the young generation reaches 
some value, then promotion occurs. If this is the case, we can use another 
scheme for the start before exploring steps IMHO.

Using Shaw’s Bucket Brigade Scheme  of semi-spaces or generational steps is 
good but this means a generation with n steps guarantees n scavenges before an 
object is promoted to the next generation. The surviving objects are copied 
between these pairs of semispaces b times before they are promoted to the next 
step. An n-bucket scheme guarantees that objects will be promoted to the old 
generation If they have survived between nb and nb-1 scavenges. For example, a 
2 bucket scheme, objects are copied up to three times before being promoted to 
the next generation. This method is good but we will still incur the overhead 
of copying objects between the semi-spaces.

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.

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.

----------
nosy: +nanjekyejoannah

_______________________________________
Python tracker <rep...@bugs.python.org>
<https://bugs.python.org/issue39143>
_______________________________________
_______________________________________________
Python-bugs-list mailing list
Unsubscribe: 
https://mail.python.org/mailman/options/python-bugs-list/archive%40mail-archive.com

Reply via email to