"Bruce Momjian" <[EMAIL PROTECTED]> writes:

> Josh Berkus wrote:
>> All,
>> 
>> Hey, is there any good reason why FSM is sized by a static GUC variable?   
>> Why couldn't we just automatically have the system use as much memory as 
>> it needs for FSM, provided that it's not more than some reasonable limit, 
>> like 15% of shared memory?
>> 
>> Seems like that would eliminate one area of user confusion, as well as 
>> over-allocation.
>
> I don't think any of our shared memory segments auto-size.  What would
> you take memory from to increase FSM?

The obvious answer to this question is the shared buffer cache.

The real problem is that we don't have, and don't particularly want, a memory
manager for the shared memory. So where and how do you keep track of which
memory is being used for what?

You could sort of get it for free by just using the buffer manager to open FSM
data files -- even getting spilling to disk of FSM data for rarely used
relations for free. But then you would be fighting so much machinery, for
example, log flushing buffers before flushing, that it might be easier to just
have a separate data structure.

I think replacing the FSM with something more flexible is on several
developers' long-term todo lists, but it's not entirely clear yet -- at least
to me -- what features we need. Someone working on vacuum or bgwriter
improvements will probably find the FSM a stumbling block along the way and
know better what needs to be done to it.

-- 
  Gregory Stark
  EnterpriseDB          http://www.enterprisedb.com

---------------------------(end of broadcast)---------------------------
TIP 6: explain analyze is your friend

Reply via email to