Re: Re: Increasing work_mem and shared_buffers on Postgres 9.2 significantly slows down queries

From: Petr Praus <petr(at)praus(dot)net>
To: Gunnar Nick Bluth <gunnar(dot)bluth(at)pro-open(dot)de>
Cc: Marcos Ortiz <mlortiz(at)uci(dot)cu>, pgsql-performance(at)postgresql(dot)org
Subject: Re: Re: Increasing work_mem and shared_buffers on Postgres 9.2 significantly slows down queries
Date: 2012-11-02 16:12:22
Message-ID: CACezXZ-p1UK0K4EJH8b+EBuiD5HY0vNaQvxrnMcjwvjf9cb+oQ@mail.gmail.com
Views: Raw Message | Whole Thread | Download mbox | Resend email
Thread:
Lists: pgsql-performance

On 1 November 2012 18:25, Gunnar "Nick" Bluth <gunnar(dot)bluth(at)pro-open(dot)de>wrote:

> Am 01.11.2012 21:40, schrieb Marcos Ortiz:
>
> Regards, Petr.
> Tuning PostgreSQL is not just change the postgresql.conf, it includes more
> things like:
> - the filesystem that you are using
> - the kernel version that you using (particularly in Linux systems)
> - the tuning to kernel variables
> - the type of discs that you are using (SSDs are very fast, like you saw
> in your iMac system)
>
> On 10/30/2012 02:44 PM, Petr Praus wrote:
>
> I just found one particularly interesting fact: when I perform the same
> test on my mid-2010 iMac (OSX 10.7.5) also with Postgres 9.2.1 and 16GB
> RAM, I don't experience the slow down.
> Specifically:
> set work_mem='1MB';
> select ...; // running time is ~1800 ms
> set work_mem='96MB';
> select ...' // running time is ~1500 ms
>
> When I do exactly the same query (the one from my previous post) with
> exactly the same data on the server:
> I get 2100 ms with work_mem=1MB and 3200 ms with 96 MB.
>
> Just some thoughts (interested in this, once seen a Sybase ASE come
> close to a halt when we threw a huge lot of SHM at it...).
>
> 8 cores, so probably on 2 sockets? What CPU generation?
>

The processors are two quad core Intel x7350 Xeon at 2.93Ghz. It's somewhat
older (released late 2007) but it's not absolute speed I'm after - it's the
difference in speed when increasing work_mem.

> Both explain outputs show an amount of "read" buffers. Did you warm the
> caches before testing?
>

I did warm the caches before testing.

>
> Maybe you're hitting a NUMA issue there? If those reads come from the OS'
> cache, the scheduler might decide to move your process to a different core
> (that can access the cache better), then moves it back when you access the
> SHM segment more (the ~4GB get allocated at startup, so probably "close" to
> the CPU the postmaster ist running on). A migration to a different
> cacheline is very expensive.
>
> The temp reads/writes (i.e., the OS cache for the temp files) would
> probably be allocated close to the CPU requesting the temp file.
>
> Just groping about in the dark though... but the iMac is obviously not
> affected by this, with one socket/memory channel/cache line.
>

I made a test with Ubuntu 12.04 VM machine (vmware workstation 4.1.3 on the
same iMac) with 4GB memory and shared_buffers=1GB. To my slight surprise,
the query is faster on Ubuntu VM machine then on the OSX (~1050ms vs.
~1500ms with work_mem=1MB). This might be caused
by effective_io_concurrency which is enabled on Ubuntu but can't be enabled
on OSX because postgres does not support it there. The interesting thing is
that increasing work_mem to 96MB on Ubuntu slows down the query to about
~1250ms from ~1050ms.

>
> Might be worth to
> - manually pin (with taskset) the session you test this in to a particular
> CPU (once on each socket) to see if the times change
>

I tested this and it does not seem to have any effect (assuming I used
taskset correctly but I think so: taskset 02 psql to pin down to CPU #1 and
taskset 01 psql to pin to CPU #0).

> - try reducing work_mem in the session you're testing in (so you have
> large SHM, but small work mem)
>

Did this and it indicates to me that shared_buffers setting actually does
not have an effect on this behaviour as I previously thought it has. It
really boils down to work_mem: when I set shared_buffers to something large
(say 4GB) and just play with work_mem the problem persists.

>
> Cheers,
>
> --
> Gunnar "Nick" Bluth
> RHCE/SCLA
>
> Mobil +49 172 8853339
> Email: gunnar(dot)bluth(at)pro-open(dot)de
> __________________________________________________________________________
> In 1984 mainstream users were choosing VMS over UNIX. Ten years later
> they are choosing Windows over UNIX. What part of that message aren't you
> getting? - Tom Payne
>
>

In response to

Responses

Browse pgsql-performance by date

  From Date Subject
Next Message Claudio Freire 2012-11-02 18:17:10 Constraint exclusion in views
Previous Message list, mailing 2012-11-02 14:39:02 freebsd or linux