Hi Bruce,
I saw even on this alias also that people assumed that the default
wal_sync_method was fsync on Solaris.
I would select fsync or fdsync as the default on Solaris. (I prefer
fsync as it is already highlighted as default in postgresql)
Another thing to improve the defaults on Solaris will be to increase the
defaults of
wal_buffers
and
checkpoint_segments
(I think in 8.1 checkpoint_segments have been already improved to a
default of 8 from the previous 3 and that may be already some help in
performance out there. )
These three changes improve out-of-box performance of PostgreSQL quite a
bit on Solaris (SPARC as well as x64 platforms).
Then you will suddenly see decrease in the number of people PostgreSQL
community complaining about Solaris 10, as well as Solaris community
complaining about PostgreSQL. (The benefits are mutual)
Don't get me wrong. As Luke mentioned it took a while to get the
potential of PostgreSQL on Solaris and people like me start doing other
complex workarounds in Solaris like "forcedirectio", etc. (Yeah I did a
test, if you force fsync as wal_sync_method while on Solaris, then
you may not even require to do forcedirectio of your $PGDATA/pg_xlogs to
get back the lost performance)
If we had realized that fsync/odatasync difference was the culprit we
could have saved couple of months of efforts.
Yes I agree that putting OS specific things in PostgreSQL hurts
community and sticking to POSIX standards help.
Just my two cents.
Regards,
Jignesh
Bruce Momjian wrote:
Jignesh K. Shah wrote:
Bruce,
Hard to answer that... People like me who know and love PostgreSQL and
Solaris finds this as an opportunity to make their favorite database
work best on their favorite operating system.
Many times PostgreSQL has many things based on assumption that it will
run on Linux and it is left to Solaris to emulate that behavior.That
said there are ways to improve performance even on UFS on Solaris, it
just requires more tweaks.
Hopefully this will lead to few Solaris friendly default values like
fsync/odatasync :-)
Yes, if someone wants to give us a clear answer on which wal_sync method
is best on all versions of Solaris, we can easily make that change.