Hi,
On 2014-03-20 16:58:42 +0000, Tom Lane wrote:
> Again fix initialization of auto-tuned effective_cache_size.
>
> The previous method was overly complex and underly correct; in particular,
> by assigning the default value with PGC_S_OVERRIDE, it prevented later
> attempts to change the setting in postgresql.conf, as noted by Jeff Janes.
> We should just assign the default value with source PGC_S_DYNAMIC_DEFAULT,
> which will have the desired priority relative to the boot_val as well as
> user-set values.
>
> There is still a gap in this method: if there's an explicit assignment of
> effective_cache_size = -1 in the postgresql.conf file, and that assignment
> appears before shared_buffers is assigned, the code will substitute 4 times
> the bootstrap default for shared_buffers, and that value will then persist
> (since it will have source PGC_S_FILE). I don't see any very nice way
> to avoid that though, and it's not a case to be expected in practice.
> The existing comments in guc-file.l look forward to a redesign of the
> DYNAMIC_DEFAULT mechanism; if that ever happens, we should consider this
> case as one of the things we'd like to improve.
This still is pretty ugly. Couldn't we just have a function in
costsize.c that returns the actual value and computes it based on
NBuffers if set to -1? Which is also called by a show_hook?
Greetings,
Andres Freund
--
Andres Freund http://www.2ndQuadrant.com/
PostgreSQL Development, 24x7 Support, Training & Services