On Tue, 14 Oct 2008, Mikkel Høgh wrote:
You are targetting DBAs using servers with less than 512 MB RAM. Is
PostgreSQL supposed to be used by professional DBAs on enterprise
systems or is it supposed to run out of the box on my old Pentium 3?
Take a look at http://bugzilla.kernel.org/show_bug.cgi?id=11381
There you'll discover that the Linux default for how much memory an
application like PostgreSQL can allocate is 32MB. This is true even if
you install the OS on a system with 128GB of RAM. If PostgreSQL created a
default configuration optimized for "enterprise systems", that
configuration wouldn't even start on *any* Linux system with the default
kernel settings. The above is an attempt to change that, rejected with
the following text that aptly describes the default PostgreSQL
configuration as well: "The requirement is that SHMMAX is sane for the
user by default and that means *safe* rather than as big as possible".
The situation on most other operating systems is similarly bad.
So the dichotomy here is even worse than you think: it's not just that
the performance profile would be wrong, it's that defaults targeting
modern hardware would make it so the database won't even start on your old
Pentium 3. The best the PostgreSQL community can do is provide
documentation on how you re-tune your *operating system first*, then the
database server, to get good performance on systems with modern amounts of
RAM.
Admittedly, that documentation and related support tools should be better,
mainly by being easier to find. This discussion is well timed in that I
was planning this month to propose adding a URL with a tuning guide and/or
sample configurations to the top of the postgresql.conf file before the
next release comes out; when that comes up I can point to this thread as a
reminder of why that's needed.
--
* Greg Smith gsmith@xxxxxxxxxxxxx http://www.gregsmith.com Baltimore, MD
--
Sent via pgsql-general mailing list (pgsql-general@xxxxxxxxxxxxxx)
To make changes to your subscription:
http://www.postgresql.org/mailpref/pgsql-general