Re: Protect syscache from bloating with negative cache entries - Mailing list pgsql-hackers

From Robert Haas
Subject Re: Protect syscache from bloating with negative cache entries
Date
Msg-id CA+TgmoY_2MYoLm_qyYPJ3xDMzTVe+Er33F=gXkXxpiHHfgxUDA@mail.gmail.com
Whole thread Raw
In response to Re: Protect syscache from bloating with negative cache entries  ("andres@anarazel.de" <andres@anarazel.de>)
Responses Re: Protect syscache from bloating with negative cache entries  ("andres@anarazel.de" <andres@anarazel.de>)
List pgsql-hackers
On Fri, Jan 18, 2019 at 4:23 PM andres@anarazel.de <andres@anarazel.de> wrote:
> My proposal for this was to attach a 'generation' to cache entries. Upon
> access cache entries are marked to be of the current
> generation. Whenever existing memory isn't sufficient for further cache
> entries and, on a less frequent schedule, triggered by a timer, the
> cache generation is increased and th new generation's "creation time" is
> measured.  Then generations that are older than a certain threshold are
> purged, and if there are any, the entries of the purged generation are
> removed from the caches using a sequential scan through the cache.
>
> This outline achieves:
> - no additional time measurements in hot code paths
> - no need for a sequential scan of the entire cache when no generations
>   are too old
> - both size and time limits can be implemented reasonably cheaply
> - overhead when feature disabled should be close to zero

Seems generally reasonable.  The "whenever existing memory isn't
sufficient for further cache entries" part I'm not sure about.
Couldn't that trigger very frequently and prevent necessary cache size
growth?

-- 
Robert Haas
EnterpriseDB: http://www.enterprisedb.com
The Enterprise PostgreSQL Company


pgsql-hackers by date:

Previous
From: Tom Lane
Date:
Subject: Re: Fixing findDependentObjects()'s dependency on scan order (regressions in DROP diagnostic messages)
Next
From: Peter Geoghegan
Date:
Subject: Re: Fixing findDependentObjects()'s dependency on scan order(regressions in DROP diagnostic messages)