Bruce Momjian <pgman@candle.pha.pa.us> writes:
> Just as a data point, I believe other database systems recommend very
> large shared memory areas if a lot of data is being accessed. I seem to
> remember Informix doing that.
Yeah, but isn't that theory a hangover from pre-Unix operating systems?
In all modern Unixen, you can expect the kernel to make use of any spare
RAM for disk buffer cache --- and that behavior makes it pointless for
Postgres to try to do large amounts of its own buffering.
Having a page in our own buffer instead of kernel buffer saves a context
swap to access the page, but it doesn't save I/O, so the benefit is a
lot less than you might think. I think there's seriously diminishing
returns in pushing shared_buffers beyond a few thousand, and once you
get to the point where it distorts the kernel's ability to manage
memory for processes, you're really shooting yourself in the foot.
regards, tom lane