From: | Jeff Janes <jeff(dot)janes(at)gmail(dot)com> |
---|---|
To: | Amit Kapila <amit(dot)kapila16(at)gmail(dot)com> |
Cc: | "Tsunakawa, Takayuki" <tsunakawa(dot)takay(at)jp(dot)fujitsu(dot)com>, "pgsql-hackers(at)postgresql(dot)org" <pgsql-hackers(at)postgresql(dot)org> |
Subject: | Re: Remove the comment on the countereffectiveness of large shared_buffers on Windows |
Date: | 2016-11-07 23:42:52 |
Message-ID: | CAMkU=1xG+R-YCsXjgQHB35R1ZED1o8XHLyiVtMG+gQ04NT7Mjg@mail.gmail.com |
Views: | Raw Message | Whole Thread | Download mbox | Resend email |
Thread: | |
Lists: | pgsql-hackers |
On Mon, Nov 7, 2016 at 5:55 AM, Amit Kapila <amit(dot)kapila16(at)gmail(dot)com> wrote:
> On Tue, Sep 20, 2016 at 8:15 AM, Tsunakawa, Takayuki
> <tsunakawa(dot)takay(at)jp(dot)fujitsu(dot)com> wrote:
> > Hello,
> >
> >> From: pgsql-hackers-owner(at)postgresql(dot)org
> >> [mailto:pgsql-hackers-owner(at)postgresql(dot)org] On Behalf Of Magnus
> Hagander
> >> On Wed, Aug 24, 2016 at 4:35 AM, Tsunakawa, Takayuki
> >> <tsunakawa(dot)takay(at)jp(dot)fujitsu(dot)com> wrote:
> >> As a similar topic, I wonder whether the following still holds
> true,
> >> after many improvements on shared buffer lock contention.
> >>
> >> https://www.postgresql.org/docs/devel/static/runtime-config-re
> >> source.html
> >>
> >> "The useful range for shared_buffers on Windows systems
> >> is generally from 64MB to 512MB."
> >>
> >>
> >>
> >>
> >> Yes, that may very much be out of date as well. A good set of benchmarks
> >> around that would definitely be welcome.
> >
> >
> > I'd like to propose the above-mentioned comment from the manual. The
> patch is attached.
> >
> > I ran read-only and read-write modes of pgbench, and could not see any
> apparent decrease in performance when I increased shared_buffers. The
> scaling factor is 200, where the database size is roughly 3GB. I ran the
> benchmark on my Windows 10 PC with 6 CPU cores and 16GB of RAM. The
> database and WAL is stored on the same HDD.
> >
> > <<Test batch file>>
> > @echo off
> > for %%s in (256MB 512MB 1GB 2GB 4GB) do (
> > pg_ctl -w -o "-c shared_buffers=%%s" start
> > pgbench -c18 -j6 -T60 -S bench >> g:\b.txt 2>&1
> > pg_ctl -t 3600 stop
> > )
> >
> > <<Select-only (with -S)>>
> > shared_buffers tps
> > 256MB 63056
> > 512MB 63918
> > 1GB 65520
> > 2GB 66840
> > 4GB 68270
> >
> > <<Read-write (without -S)>>
> > shared_buffers tps
> > 256MB 1138
> > 512MB 1187
> > 1GB 1571
> > 2GB 1650
> > 4GB 1598
> >
>
> Isn't it somewhat strange that writes are showing big win whereas
> reads doesn't show much win?
I don't find that unusual, and have seen the same thing on Linux.
With small shared_buffers, you are constantly throwing dirty buffers at the
kernel in no particular order, and the kernel does a poor job of predicting
when the same buffer will be dirtied repeatedly and only needs the final
version of the data actually written to disk. With large shared_buffers,
you only send each dirty buffer to the kernel once per checkpoint.
Cheers,
Jeff
From | Date | Subject | |
---|---|---|---|
Next Message | Andreas Joseph Krogh | 2016-11-08 00:06:47 | Re: Exclude pg_largeobject form pg_dump |
Previous Message | Jim Nasby | 2016-11-07 22:39:12 | Re: Replace use malloc() & friend by memory contexts for plperl and pltcl |