About the shared buffers size configuration discussion:
Like a few others here, I've spent a sizable proportion of my career
dealing with this issue (not with PG, with other products I've developed
that had a similar in-memory page pool).
There are roughly six stages in understanding this problem:
Stage 1: "Just make it figure out how much memory the system has, and go
use all of it".
Stage 2: "Oh, oops, often that's too much. The process won't start or
the system becomes unstable. Darn."
Stage 3: "Ok, how about we make it use a big pile of the system's
memory, but not so much that it won't start and the system won't become
unstable".
Stage 4: "Oh, there's no practical way to achieve #3 (e.g. the
filesystem cache completes with your buffer space in unpredictable and
unstable ways). Oops".
Stage 5: "Ah...you know, using all the available memory isn't even
necessarily the goal of the system's owner -- they may be running other
applications that should be allowed to use most of the available memory".
Stage 6: "Rats, without some kind of resource policy allocation
mechanism built into the OS, this problem is intractable, let's try to
document the issue as best we can and define a moderately sized default
so nobody shoots their feet off. The filesystem cache does a reasonable
job for most deployments anyway.".