Обсуждение: bad performance on Solaris 10

Поиск
Список
Период
Сортировка

bad performance on Solaris 10

От
Chris Mair
Дата:
Hi,

I've got a somewhat puzzling performance problem here.

I'm trying to do a few tests with PostgreSQL 8.1.3 under Solaris
(an OS I'm sort of a newbie in).

The machine is a X4100 and the OS is Solaris 10 1/06 fresh install
according to manual. It's got two SAS disks in RAID 1, 4GB of RAM.

Now the problem is: this box is *much* slower than I expect.

I've got a libpg test program that happily inserts data
using PQputCopyData().

It performs an order of magnitude worse than the same thing
on a small Sun (Ultra20) running Linux. Or 4 times slower than
an iBook (sic!) running MacOS X.

So, I've this very bad feeling that there is something basic
I'm missing here.

Following are some stats:

"sync; dd; sync" show these disks write at 53 MB/s => good.

iostat 1 while my test is running says:

   tty        sd0           sd1           sd2           sd5
cpu
 tin tout kps tps serv  kps tps serv  kps tps serv  kps tps serv   us sy
wt id
   1   57   0   0    0    0   0    0    0   0    0  1809  23   70    0
1  0 99
   0  235   0   0    0    0   0    0    0   0    0  2186 223   14    1
1  0 99
   0   81   0   0    0    0   0    0    0   0    0  2488 251   13    1
1  0 98
   0   81   0   0    0    0   0    0    0   0    0  2296 232   15    1
0  0 99
   0   81   0   0    0    0   0    0    0   0    0  2416 166    9    1
0  0 98
   0   81   0   0    0    0   0    0    0   0    0  2528 218   14    1
1  0 99
   0   81   0   0    0    0   0    0    0   0    0  2272 223   15    1
0  0 99

If I interpret this correctly the disk writes at not more than 2.5
MB/sec while the Opterons do nothing => this is bad.

I've tried both, a hand compile with gcc and the solarispackages
from pgfoundry.org => same result.

Eons ago PCs had those "turbo" switches (it was never totally clear
why they put them there in the first place, anyway). I've this bad
feeling there's a secret "turbo" switch I can't spot hidden somewhere
in Solaris :/


Bye, Chris.


Re: bad performance on Solaris 10

От
Josh Berkus
Дата:
Chris,

> Eons ago PCs had those "turbo" switches (it was never totally clear
> why they put them there in the first place, anyway). I've this bad
> feeling there's a secret "turbo" switch I can't spot hidden somewhere
> in Solaris :/

Yes.   Check out Jignesh's configuration advice .... ach, this is down.
Hold on, I will get you instructions on how to turn on filesystem caching
and readahead in Solaris.

--
--Josh

Josh Berkus
Aglio Database Solutions
San Francisco

Re: bad performance on Solaris 10

От
"Luke Lonergan"
Дата:
Jignesh’s blog has some of the good stuff in it:
  http://blogs.sun.com/roller/page/jkshah

- Luke


On 4/3/06 5:49 PM, "Josh Berkus" <josh@agliodbs.com> wrote:

Chris,

> Eons ago PCs had those "turbo" switches (it was never totally clear
> why they put them there in the first place, anyway). I've this bad
> feeling there's a secret "turbo" switch I can't spot hidden somewhere
> in Solaris :/

Yes.   Check out Jignesh's configuration advice .... ach, this is down.  
Hold on, I will get you instructions on how to turn on filesystem caching
and readahead in Solaris.

--
--Josh

Josh Berkus
Aglio Database Solutions
San Francisco

---------------------------(end of broadcast)---------------------------
TIP 5: don't forget to increase your free space map settings



Re: bad performance on Solaris 10

От
Mark Kirkwood
Дата:
Chris Mair wrote:
> Hi,
>
> I've got a somewhat puzzling performance problem here.
>
> I'm trying to do a few tests with PostgreSQL 8.1.3 under Solaris
> (an OS I'm sort of a newbie in).
>
> The machine is a X4100 and the OS is Solaris 10 1/06 fresh install
> according to manual. It's got two SAS disks in RAID 1, 4GB of RAM.
>
> Now the problem is: this box is *much* slower than I expect.
>
> I've got a libpg test program that happily inserts data
> using PQputCopyData().
>
> It performs an order of magnitude worse than the same thing
> on a small Sun (Ultra20) running Linux. Or 4 times slower than
> an iBook (sic!) running MacOS X.
>
> So, I've this very bad feeling that there is something basic
> I'm missing here.
>
> Following are some stats:
>
> "sync; dd; sync" show these disks write at 53 MB/s => good.
>
> iostat 1 while my test is running says:
>
>    tty        sd0           sd1           sd2           sd5
> cpu
>  tin tout kps tps serv  kps tps serv  kps tps serv  kps tps serv   us sy
> wt id
>    1   57   0   0    0    0   0    0    0   0    0  1809  23   70    0
> 1  0 99
>    0  235   0   0    0    0   0    0    0   0    0  2186 223   14    1
> 1  0 99
>    0   81   0   0    0    0   0    0    0   0    0  2488 251   13    1
> 1  0 98
>    0   81   0   0    0    0   0    0    0   0    0  2296 232   15    1
> 0  0 99
>    0   81   0   0    0    0   0    0    0   0    0  2416 166    9    1
> 0  0 98
>    0   81   0   0    0    0   0    0    0   0    0  2528 218   14    1
> 1  0 99
>    0   81   0   0    0    0   0    0    0   0    0  2272 223   15    1
> 0  0 99
>
> If I interpret this correctly the disk writes at not more than 2.5
> MB/sec while the Opterons do nothing => this is bad.
>
> I've tried both, a hand compile with gcc and the solarispackages
> from pgfoundry.org => same result.
>
> Eons ago PCs had those "turbo" switches (it was never totally clear
> why they put them there in the first place, anyway). I've this bad
> feeling there's a secret "turbo" switch I can't spot hidden somewhere
> in Solaris :/
>

I ran across something like this on a Solaris 8, RAID1 system, and
switching off logging on filesystem containing postgres made a huge
difference!

Now solaris 8 is ancient history, however see:

http://bugs.opensolaris.org/bugdatabase/view_bug.do?bug_id=6238533

Apparently there can still be issues with logging without forcedirectio
(which is the default I think).

I suspect that making a *separate* filesystem for the pg_xlog directory
and mounting that logging + forcedirectio would be a nice way to also
get performance while keeping the advantages of logging + file
buffercache for the *rest* of the postgres components.
Cheers

Mark

Re: bad performance on Solaris 10

От
Josh Berkus
Дата:
Mark,

> I suspect that making a *separate* filesystem for the pg_xlog directory
> and mounting that logging + forcedirectio would be a nice way to also
> get performance while keeping the advantages of logging + file
> buffercache for the *rest* of the postgres components.
> Cheers

Yes, we tested this.  It makes a huge difference in WAL speed.

--
Josh Berkus
Aglio Database Solutions
San Francisco

Re: bad performance on Solaris 10

От
Chris Mair
Дата:
Hi,

thanks for all replys.

I've done a few tests.

Remounting the fs where $PGDATA lives with "forcedirectio"
(together with logging, that is default) did not help
(if not harm...) performance.

Doing what http://blogs.sun.com/roller/page/jkshah suggests:
  wal_sync_method = fsync (unchanged)
  wal_buffers = 128 (was 8)
  checkpoint_segments = 128 (was 3)
  bgwriter_all_percent = 0 (was 0.333)
  bgwriter_all_maxpages = 0 (was 5)
and leaving everything else default (solarispackages from pgfoundry)
increased performance ~ 7 times!

Playing around with these modifications I find that it's
actually just the
  wal_buffers = 128
alone which makes all the difference!

Quickly playing around with wal_buffers on Linux and Mac OS X
I see it influences the performance of my test a bit, maybe in the
10-20% range (I'm really doing quick tests, nothing systematic),
but nowhere near as spectacularly as on Solaris.

I'm happy so far, but I find it very surprising that this single
parameter has such an impact (only on) Solaris 10.

(my test program is a bulk inserts using PQputCopyData in large
transactions - all test were 8.1.3).

Bye, Chris





Re: bad performance on Solaris 10

От
"Luke Lonergan"
Дата:
Chris,

On 4/5/06 2:31 PM, "Chris Mair" <list@1006.org> wrote:

> Doing what http://blogs.sun.com/roller/page/jkshah suggests:
>   wal_sync_method = fsync (unchanged)
>   wal_buffers = 128 (was 8)
>   checkpoint_segments = 128 (was 3)
>   bgwriter_all_percent = 0 (was 0.333)
>   bgwriter_all_maxpages = 0 (was 5)
> and leaving everything else default (solarispackages from pgfoundry)
> increased performance ~ 7 times!

In the recent past, Jignesh Shaw of Sun MDE discovered that changing the
bgwriter_* parameters to zero had a dramatic positive impact on performance.

There are also some critical UFS kernel tuning parameters to set, you should
find those in his blog.

We found and fixed some libpq issues with Solaris that were also critical -
they should be in 8.1.3 I think.

- Luke



Re: bad performance on Solaris 10

От
Alvaro Herrera
Дата:
Luke Lonergan wrote:
> Chris,
>
> On 4/5/06 2:31 PM, "Chris Mair" <list@1006.org> wrote:
>
> > Doing what http://blogs.sun.com/roller/page/jkshah suggests:
> >   wal_sync_method = fsync (unchanged)
> >   wal_buffers = 128 (was 8)
> >   checkpoint_segments = 128 (was 3)
> >   bgwriter_all_percent = 0 (was 0.333)
> >   bgwriter_all_maxpages = 0 (was 5)
> > and leaving everything else default (solarispackages from pgfoundry)
> > increased performance ~ 7 times!
>
> In the recent past, Jignesh Shaw of Sun MDE discovered that changing the
> bgwriter_* parameters to zero had a dramatic positive impact on performance.

This essentially means stopping all bgwriter activity, thereby deferring
all I/O until checkpoint.  Was this considered?  With
checkpoint_segments to 128, it wouldn't surprise me that there wasn't
any checkpoint executed at all during the whole test ...

--
Alvaro Herrera                                http://www.CommandPrompt.com/
The PostgreSQL Company - Command Prompt, Inc.

Re: bad performance on Solaris 10

От
"Luke Lonergan"
Дата:
Alvaro,

On 4/5/06 2:48 PM, "Alvaro Herrera" <alvherre@commandprompt.com> wrote:

> This essentially means stopping all bgwriter activity, thereby deferring
> all I/O until checkpoint.  Was this considered?  With
> checkpoint_segments to 128, it wouldn't surprise me that there wasn't
> any checkpoint executed at all during the whole test ...

Yes, many things about the Solaris UFS filesystem caused a great deal of
pain over the 10 months of experiments we ran with Sun MDE.  Ultimately, the
conclusion was that ZFS is going to make all of the pain go away.

In the meantime, all you can do is tweak up UFS and avoid I/O as much as
possible.

- Luke



Re: bad performance on Solaris 10

От
Chris Mair
Дата:
> > > Doing what http://blogs.sun.com/roller/page/jkshah suggests:
> > >   wal_sync_method = fsync (unchanged)
> > >   wal_buffers = 128 (was 8)
> > >   checkpoint_segments = 128 (was 3)
> > >   bgwriter_all_percent = 0 (was 0.333)
> > >   bgwriter_all_maxpages = 0 (was 5)
> > > and leaving everything else default (solarispackages from pgfoundry)
> > > increased performance ~ 7 times!

Ok, so I could quite believe my own benchmarks and I decided
to do a fresh initdb and retry everything.

At first it looked like I coudn't reproduce the speed up I just saw.

Then I realized it was the
wal_sync_method = fsync
line that makes all the difference!

Normally parameters that are commented are default values, but for
wal_sync_method it actually says (note the comment):

wal_sync_method = fsync          # the default is the first option
                                 # supported by the operating system:
                                 #   open_datasync
                                 #   fdatasync
                                 #   fsync
                                 #   fsync_writethrough
                                 #   open_sync

So Im my last mail I drew the wrong conclusion, because i didn't comment
wal_sync_method to double check.

To the point: the default wal_sync_method choosen on Solaris 10 appears
to be a very bad one - for me, picking fsync increases performance ~
times 7, all other parameters unchanged!

Would it be a good idea to change this in the default install?

Bye, Chris.

PS: yes I did a fresh initdb again to double check ;)


Re: bad performance on Solaris 10

От
Mark Kirkwood
Дата:
Chris Mair wrote:
> Hi,
>
> thanks for all replys.
>
> I've done a few tests.
>
> Remounting the fs where $PGDATA lives with "forcedirectio"
> (together with logging, that is default) did not help
> (if not harm...) performance.
>
>

Sure - forcedirectio on the entire $PGDATA is a definite loss, you only
want it on $PGDATA/pg_xlog. The usual way this is accomplished is by
making a separate filsystem for pg_xlog and symlinking from $PGDATA.

Did you try the other option of remounting the fs for $PGDATA without
logging or forcedirectio?

Cheers

Mark



Re: bad performance on Solaris 10

От
Chris Mair
Дата:
> > I've done a few tests.
> >
> > Remounting the fs where $PGDATA lives with "forcedirectio"
> > (together with logging, that is default) did not help
> > (if not harm...) performance.
> >
> >
>
> Sure - forcedirectio on the entire $PGDATA is a definite loss, you only
> want it on $PGDATA/pg_xlog. The usual way this is accomplished is by
> making a separate filsystem for pg_xlog and symlinking from $PGDATA.
>
> Did you try the other option of remounting the fs for $PGDATA without
> logging or forcedirectio?

not yet, I'm not on the final disk set yet.

when I get there I'll have two separate filesystems for pg_xlog and base
and will try what you suggest.

(but note the other mail about wal_sync_method = fsync)

bye, chris.


Re: bad performance on Solaris 10

От
Chris Mair
Дата:
appears this didn't make it to the list... resending to the list
directly...
---

> > > Doing what http://blogs.sun.com/roller/page/jkshah suggests:
> > >   wal_sync_method = fsync (unchanged)
> > >   wal_buffers = 128 (was 8)
> > >   checkpoint_segments = 128 (was 3)
> > >   bgwriter_all_percent = 0 (was 0.333)
> > >   bgwriter_all_maxpages = 0 (was 5)
> > > and leaving everything else default (solarispackages from
pgfoundry)
> > > increased performance ~ 7 times!

Ok, so I could quite believe my own benchmarks and I decided
to do a fresh initdb and retry everything.

At first it looked like I coudn't reproduce the speed up I just saw.

Then I realized it was the
wal_sync_method = fsync
line that makes all the difference!

Normally parameters that are commented are default values, but for
wal_sync_method it actually says (note the comment):

wal_sync_method = fsync          # the default is the first option
                                 # supported by the operating system:
                                 #   open_datasync
                                 #   fdatasync
                                 #   fsync
                                 #   fsync_writethrough
                                 #   open_sync

So Im my last mail I drew the wrong conclusion, because i didn't comment
wal_sync_method to double check.

To the point: the default wal_sync_method choosen on Solaris 10 appears
to be a very bad one - for me, picking fsync increases performance ~
times 7, all other parameters unchanged!

Would it be a good idea to change this in the default install?

Bye, Chris.

PS: yes I did a fresh initdb again to double check ;)


Re: bad performance on Solaris 10

От
Mark Kirkwood
Дата:
Chris Mair wrote:

>
> (but note the other mail about wal_sync_method = fsync)
>

Yeah - looks good! (is the default open_datasync still?). Might be worth
trying out the fdatasync method too (ISTR this being quite good... again
on Solaris 8, so things might have changed)!

Cheers

Mark


Re: bad performance on Solaris 10

От
Chris Mair
Дата:
> > Yeah - looks good! (is the default open_datasync still?). Might be worth
> > trying out the fdatasync method too (ISTR this being quite good... again
> > on Solaris 8, so things might have changed)!
>
> I was just talking to a member of the Solaris-UFS team who recommended that we
> test fdatasync.

Ok, so I did a few runs for each of the sync methods, keeping all the
rest constant and got this:

open_datasync      0.7
fdatasync          4.6
fsync              4.5
fsync_writethrough not supported
open_sync          0.6

in arbitrary units - higher is faster.

Quite impressive!

Bye, Chris.




Re: bad performance on Solaris 10

От
Josh Berkus
Дата:
Chris,

> Remounting the fs where $PGDATA lives with "forcedirectio"
> (together with logging, that is default) did not help
> (if not harm...) performance.

Not all of PG.  JUST pg_xlog.  forcedirectio is only a good idea for the xlog.

> Quickly playing around with wal_buffers on Linux and Mac OS X
> I see it influences the performance of my test a bit, maybe in the
> 10-20% range (I'm really doing quick tests, nothing systematic),
> but nowhere near as spectacularly as on Solaris.
>
> I'm happy so far, but I find it very surprising that this single
> parameter has such an impact (only on) Solaris 10.

That *is* interesting.  I hadn't tested this previously specifically on
Solaris.

--
Josh Berkus
Aglio Database Solutions
San Francisco

Re: bad performance on Solaris 10

От
Josh Berkus
Дата:
Mark, Chris,

> Yeah - looks good! (is the default open_datasync still?). Might be worth
> trying out the fdatasync method too (ISTR this being quite good... again
> on Solaris 8, so things might have changed)!

I was just talking to a member of the Solaris-UFS team who recommended that we
test fdatasync.

--
Josh Berkus
Aglio Database Solutions
San Francisco

Re: bad performance on Solaris 10

От
Robert Lor
Дата:
Chris Mair wrote:

>Ok, so I did a few runs for each of the sync methods, keeping all the
>rest constant and got this:
>
>open_datasync      0.7
>fdatasync          4.6
>fsync              4.5
>fsync_writethrough not supported
>open_sync          0.6
>
>in arbitrary units - higher is faster.
>
>Quite impressive!
>
>
>
>
Chris,
Just to make sure the x4100 config is similar to your Linux system, can
you verify the default setting for disk write cache and make sure they
are both enabled or disabled. Here's how to check in Solaris.
As root, run "format -e" -> pick a disk -> cache -> write_cache -> display

Not sure how to do it on Linux though!

Regards,
-Robert

Re: bad performance on Solaris 10

От
Chris Mair
Дата:
> >Ok, so I did a few runs for each of the sync methods, keeping all the
> >rest constant and got this:
> >
> >open_datasync      0.7
> >fdatasync          4.6
> >fsync              4.5
> >fsync_writethrough not supported
> >open_sync          0.6
> >
> >in arbitrary units - higher is faster.
> >
> >Quite impressive!
> >
> >
> >
> >
> Chris,
> Just to make sure the x4100 config is similar to your Linux system, can
> you verify the default setting for disk write cache and make sure they
> are both enabled or disabled. Here's how to check in Solaris.
> As root, run "format -e" -> pick a disk -> cache -> write_cache -> display
>
> Not sure how to do it on Linux though!
>
> Regards,
> -Robert

I don't have access to the machine for the next few days due to eh...
let's call it firewall accident ;), but it might very well be that it
was off on the x4100 (I know it's on the smaller Linux box).

That together with the bad default sync method can definitely explain
the strangely slow out of box performance I got.

So thanks again for explaining this to me :)

Bye, Chris.




Re: bad performance on Solaris 10

От
Chris Mair
Дата:
> > Chris,
> > Just to make sure the x4100 config is similar to your Linux system, can
> > you verify the default setting for disk write cache and make sure they
> > are both enabled or disabled. Here's how to check in Solaris.
> > As root, run "format -e" -> pick a disk -> cache -> write_cache -> display
> >
> > Not sure how to do it on Linux though!
> >
> > Regards,
> > -Robert
>
> I don't have access to the machine for the next few days due to eh...
> let's call it firewall accident ;), but it might very well be that it
> was off on the x4100 (I know it's on the smaller Linux box).
>
> That together with the bad default sync method can definitely explain
> the strangely slow out of box performance I got.
>
> So thanks again for explaining this to me :)
>
> Bye, Chris.

Just for completeness:
I checked now using the above commands and can confirm the write cache
was disabled on the x4100 and was on on Linux.

Bye, Chris.






Re: bad performance on Solaris 10

От
Bruce Momjian
Дата:
Luke Lonergan wrote:
> Alvaro,
>
> On 4/5/06 2:48 PM, "Alvaro Herrera" <alvherre@commandprompt.com> wrote:
>
> > This essentially means stopping all bgwriter activity, thereby deferring
> > all I/O until checkpoint.  Was this considered?  With
> > checkpoint_segments to 128, it wouldn't surprise me that there wasn't
> > any checkpoint executed at all during the whole test ...
>
> Yes, many things about the Solaris UFS filesystem caused a great deal of
> pain over the 10 months of experiments we ran with Sun MDE.  Ultimately, the
> conclusion was that ZFS is going to make all of the pain go away.
>
> In the meantime, all you can do is tweak up UFS and avoid I/O as much as
> possible.

It is hard to imagine why people spend so much time modifying Sun
machines run with acceptable performance when non-Sun operating systems
work fine without such hurtles.

--
  Bruce Momjian   http://candle.pha.pa.us
  EnterpriseDB    http://www.enterprisedb.com

  + If your life is a hard drive, Christ can be your backup. +

Re: bad performance on Solaris 10

От
"Luke Lonergan"
Дата:
Bruce,

On 4/12/06 12:56 PM, "Bruce Momjian" <pgman@candle.pha.pa.us> wrote:

> It is hard to imagine why people spend so much time modifying Sun
> machines run with acceptable performance when non-Sun operating systems
> work fine without such hurtles.

There are a lot of Solaris customers that we support and that we'd like to
support.  To many of them, Solaris has many advantages other than speed,
though they expect a reasonably comparable performance, perhaps within a
factor of 2 of other options.

Oracle has spent a great deal of time (a decade!) optimizing their software
for Solaris, and it shows.  There are also some typical strategies that
Solaris people used to use to make Solaris perform better, like using VxFS
(Veritas Filesystem), or Oracle Raw IO to make their systems perform better.

Lately I find people are not so receptive to VxFS, and Sun is promoting ZFS,
and we don't have a reasonable near term option for Raw IO in Postgres, so
we need to work to find a reasonable path for Solaris users IMO.  The long
delays in ZFS production haven't helped us there, as the problems with UFS
are severe.

We at Greenplum have worked hard over the last year to find options for
Postgres on Solaris and have the best configuration setup that we think is
possible now on UFS, and our customers benefit from that.  However, Linux on
XFS or even ext3 is definitely the performance leader.

- Luke



Re: bad performance on Solaris 10

От
Josh Berkus
Дата:
People,

> Lately I find people are not so receptive to VxFS, and Sun is promoting
> ZFS, and we don't have a reasonable near term option for Raw IO in
> Postgres, so we need to work to find a reasonable path for Solaris users
> IMO.  The long delays in ZFS production haven't helped us there, as the
> problems with UFS are severe.

FWIW, I'm testing on ZFS now.  But it's not stable yet.  People are welcome
to join the Solaris 11 beta program.

In the near term, there are fixes to be made both in PostgreSQL
configuration and in Solaris configuration.  Also, some of the work being
done for 8.2 ... the external sort work done by Simon and sponsored by
GreenPlum, and the internal sort work which Jonah and others are doing ...
will improve things on Solaris as our sort issues hit Solaris harder than
other OSes.

Expect lots more info on performance config for Solaris from me & Robert in
the next few weeks.

--
--Josh

Josh Berkus
PostgreSQL @ Sun
San Francisco

Re: bad performance on Solaris 10

От
"Jignesh K. Shah"
Дата:
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 :-)

Regards,
Jignesh


Bruce Momjian wrote:

>
>It is hard to imagine why people spend so much time modifying Sun
>machines run with acceptable performance when non-Sun operating systems
>work fine without such hurtles.
>
>

Re: bad performance on Solaris 10

От
Tom Lane
Дата:
"Jignesh K. Shah" <J.K.Shah@Sun.COM> writes:
> 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.

Au contraire --- PG tries its best to be OS-agnostic.  I've personally
resisted people trying to optimize it by putting in Linux-specific
behavior.  The above sounds to me like making excuses for a poor OS.

(And yes, I will equally much resist any requests to put in Solaris-
specific behavior...)

            regards, tom lane

Re: bad performance on Solaris 10

От
Bruce Momjian
Дата:
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.

--
  Bruce Momjian   http://candle.pha.pa.us
  EnterpriseDB    http://www.enterprisedb.com

  + If your life is a hard drive, Christ can be your backup. +

Re: bad performance on Solaris 10

От
Robert Lor
Дата:
Bruce Momjian wrote On 04/13/06 01:39 AM,:
>
> 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.
>

We're doing tests to see how various parameters in postgresql.conf
affect performance on Solaris and will share the results shortly.

Regards,
-Robert


Re: bad performance on Solaris 10

От
"Merlin Moncure"
Дата:
On 4/12/06, Josh Berkus <josh@agliodbs.com> wrote:
> People,
>
> > Lately I find people are not so receptive to VxFS, and Sun is promoting
> > ZFS, and we don't have a reasonable near term option for Raw IO in
> > Postgres, so we need to work to find a reasonable path for Solaris users
> > IMO. The long delays in ZFS production haven't helped us there, as the
> > problems with UFS are severe.

I just recently worked with sun solaris 10 and found it to be
reasonably performant without much tuning.  This was on a dual sparc
sunblade workstation which i felt was very well engineered.  I was
able (with zero solaris experience) to get postgresql up and crunching
away at some really data intensive tasks while running an application
compiled their very excellent fortran compiler.

In the enterprise world I am finding that the only linux distrubutions
supported are redhat and suse, meaning if you have a problem with your
san running against your gentoo box you have a serious problem.
Solaris OTOH, is generally very well supported (especially on sun
hardware) and is free.  So I give sun great credit for providing a
free if not necessarily completely open platform for developing open
source applications in an enterprise environment.

Merlin

Re: bad performance on Solaris 10

От
"Jignesh K. Shah"
Дата:
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.
>
>
>

Re: bad performance on Solaris 10

От
Josh Berkus
Дата:
Jignesh,

> 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)

I didn't see these later test results.   Can you link?

Also, I presume this was on DW, and not on OLTP, yes?

--
--Josh

Josh Berkus
PostgreSQL @ Sun
San Francisco