> I don't have much to add because I'm pretty new to Postgres and have
> been soliciting advice here recently, but I totally agree with
> everything you said. I don't mind if it's in the postgres.conf file
> or in a faq that is easy to find, I just would like it to be in one
> place. A good example of the need for this is when I was tuning
> "effective_cache" I thought that was creating a cache for Postgres
> when in fact as it was pointed out to me, it's just hinting to
> postgres the size of the OS cache. Lots of ways for people to get
> really confused here.
I looked through the src/doc/runtime.sgml for a good place to stick
this and couldn't find a place that this seemed appropriate, but on
FreeBSD, this can be determined with a great deal of precision in a
programmatic manner:
echo "effective_cache_size = $((`sysctl -n vfs.hibufspace` / 8192))"
The same OID is available via C too. It'd be slick if PostgreSQL
could tune itself (on FreeBSD) at initdb time with the above code. If
Linux exports this info via /proc and can whip out the appropriate
magic, even better. An uncommented out good guess that shows up in
postgresql.conf would be stellar and quite possible with the use of
sed.
Maybe an initdb switch could be added to have initdb tune the config
it generates? If a -n is added, have it generate a config and toss it
to stdout?
case `uname` in
"FreeBSD")
echo "effective_cache_size = $((`sysctl -n vfs.hibufspace` / 8192))"
;;
*)
echo "Unable to automatically determine the effective cache size" >> /dev/stderr
;;
esac
-sc
--
Sean Chittenden