Re: Opteron scaling with PostgreSQL - Mailing list pgsql-general

From Dann Corbit
Subject Re: Opteron scaling with PostgreSQL
Date
Msg-id 54798A299E68514AB7C4DEBA25F03BE101BA26@postal.corporate.connx.com
Whole thread Raw
In response to Opteron scaling with PostgreSQL  (Steve Wolfe <nw@codon.com>)
Responses Re: Opteron scaling with PostgreSQL  (Steve Wolfe <nw@codon.com>)
List pgsql-general
> -----Original Message-----
> From: pgsql-general-owner@postgresql.org
> [mailto:pgsql-general-owner@postgresql.org] On Behalf Of Steve Wolfe
> Sent: Thursday, June 10, 2004 2:09 PM
> To: pgsql-general
> Subject: [GENERAL] Opteron scaling with PostgreSQL
>
>
>
>    Some time ago, I asked about how well PostgreSQL scales with the
> number of processors in an Opteron system.  To my surprise, no one
> seemed to know!  Well, a couple of days ago, a shiny, new Celestica
> A8440 showed up at my office, so I decided to run it through
> the paces.
>   Hopefully, this will be useful to someone else as well!
>
> Hardware info
> -------------
> Celestica A8440
> 4xOpteron 848
> 8 gigs PC3200 reg/ECC memory
>
> Software info
> -------------
> Fedora core 2 x86-64
> PostgreSQL 7.4.2
> Added compile options: -O3 -m64
> Startup options:  256 MB shared buffer, fsync OFF to
> eliminate the disk
> system as a variable, 128 megs sort memory

I would very much like to see the same test with Fsync on.
A test that does not reflect real-world use has less value than one that
just shows how fast it can go.

For a read-only database, fsync could be turned off.  For any other
system it would be hair-brained and nobody in their right mind would do
it.

> Testing method
> --------------
>     I logged 10,000 queries from our production DB server,
> and wrote a Perl
> program to issue them via an arbitrary number of "workers".
> Before each
> run, the database was "warmed up" by going through two
> preliminary runs
> to ensure that caches and buffers were populated.
>
>     Instead of removing processors (which would have also
> reduced the
> memory), I used the boot argument "maxcpus" to limit the
> number of CPUs
> that Linux would use.
>
> Preliminary thoughts
> --------------------
>     After playing around, I found that the optimal size for
> the shared
> buffer was 256 megs.  To the opposite of my expectations, using more
> shared buffer resulted in a lower throughput.
>
> Results!
> --------
>
> maxcpus        max queries per second
> -------        ----------------------
> 1        378 qps @ 32 connections (baseline)
> 2        609 qps @ 96 connections (161% of baseline)
> 3        853 qps @ 48 connections (225% of baseline)
> 4        1033 qps @ 64 connections (273% of baseline)
>
>
>    A graph of the throughputs for various numbers of CPUs and
> connections can be found at  http://www.codon.com/PG-scaling.gif

It is very impressive how well the system scales.  I would like to see a
PostgreSQL system run against these guys:
http://www.tpc.org/

It might prove interesting to see how it stacks up against commercial
systems.
Certainly when it comes to Dollars per TPS, there would be a stupendous
leg up to start with!
;-)

pgsql-general by date:

Previous
From: Tom Lane
Date:
Subject: Re: Trying to minimize the impact of checkpoints (resend)
Next
From: Steve Wolfe
Date:
Subject: Re: Opteron scaling with PostgreSQL