[Python-ideas] cross platform memory usage high water mark for improved gc?

Adam Olsen rhamph at gmail.com
Tue Mar 11 17:25:48 CET 2008


On Tue, Mar 11, 2008 at 7:28 AM, Aaron Watters <aaron.watters at gmail.com> wrote:
> On Mon, Mar 10, 2008 at 12:30 PM, Adam Olsen <rhamph at gmail.com> wrote:
> > You can of course tweak gc.set_threshold() (and I would expect this to
> > be quite effective, once you find out what an appropriate threshold0
> > is for your app.)  I don't believe you'll find any existing counters
> > of the current heap size though (be it number of allocated objects or
> > total size consumed by those objects.)...
>
>  It would be nice if the threshold would adjust based
>  on the performance characteristics of the app.
>  In particular it'd be nice if the garbage collector would
>  notice when it's never finding anything and wait longer
>  everytime it finds nothing for the next collection attempt.
>
>  How about this.
>  - The threshold slides between minimumThresh and maximumThresh
>  - At each collection the current number of objects
>    collected is compared to the last number collected (collectionTrend).
>  - If the collectionTrend is negative or zero the next threshold slides
>    towards the maximum.
>  - If the collectionTrend is a small increase, the threshold stays the same.
>  - If the collectionTrend is a large increase the next threshold slides
> towards
>    the minimum.
>  That way for apps that need no garbage collection
>  (outside of refcounting) the threshold would slide to the
>  maximum and stay there, but for apps that need a lot of
>  gc the threshold would bounce up and down near the minimum.
>
>  This is almost easy enough that I could implement it...
>      -- Aaron Watters

It sounds plausible to me.

But have you tried just tweaking the threshold?  Surely there's a
value at which it performs well, and that'd need to be within your
maximum anyway.

-- 
Adam Olsen, aka Rhamphoryncus



More information about the Python-ideas mailing list