From: | Jeff Janes <jeff(dot)janes(at)gmail(dot)com> |
---|---|
To: | Robert Haas <robertmhaas(at)gmail(dot)com> |
Cc: | Simon Riggs <simon(at)2ndquadrant(dot)com>, Peter Geoghegan <peter(at)2ndquadrant(dot)com>, PG Hackers <pgsql-hackers(at)postgresql(dot)org> |
Subject: | Re: Why do we still have commit_delay and commit_siblings? |
Date: | 2012-05-15 16:07:07 |
Message-ID: | CAMkU=1xhGw_aJ+WYzjOM6YJ_gVmw7sYi8yMq26jSZNyTtmdXEg@mail.gmail.com |
Views: | Raw Message | Whole Thread | Download mbox | Resend email |
Thread: | |
Lists: | pgsql-hackers |
On Tue, May 15, 2012 at 7:47 AM, Robert Haas <robertmhaas(at)gmail(dot)com> wrote:
> On Mon, May 14, 2012 at 8:42 AM, Jeff Janes <jeff(dot)janes(at)gmail(dot)com> wrote:
>> On Sun, May 13, 2012 at 11:07 PM, Simon Riggs <simon(at)2ndquadrant(dot)com> wrote:
>>>
>>> Keeping a parameter without any clue as to whether it has benefit is
>>> just wasting people's time.
>>>
>>> We don't ADD parameters based on supposition, why should we avoid
>>> removing parameters that have no measured benefit?
>>
>> Using pgbench -T30 -c 2 -j 2 on a 2 core laptop system, with a scale
>> that fits in shared_buffers:
>>
>> --commit-delay=2000 --commit-siblings=0
>> tps = 162.924783 (excluding connections establishing)
>>
>> --commit-delay=0 --commit-siblings=0
>> tps = 89.237578 (excluding connections establishing)
>
> These results are astonishingly good, and I can't reproduce them. I
> spent some time this morning messing around with this on the IBM
> POWER7 machine and my MacBook Pro. Neither of these have
> exceptionally good fsync performance, and in particular the MacBook
> Pro has really, really bad fsync performance.
Did you also set --commit-siblings=0?
Are you using -i -s 1, and therefor serializing on the sole entry in
pgbench_branches?
Could you instrument the call to pg_usleep and see if it is actually
being called?
(Or, simply strace-ing the process would probably tell you that).
> On the IBM POWER7 machine, I'm not able to demonstrate any performance
> improvement at all from fiddling with commit delay. I tried tests at
> 2 clients, 32 clients, and 80 clients, and I'm getting... nothing.
> No improvement at all. Zip. I tried a few different settings for
> commit_delay, too. On the MacBook Pro, with
> wal_sync_method=obscenely_slow^Wfsync_writethrough,
If one of the methods gives sync times that matches the rotational
speed of your disks, that is the one that I would use. If the sync is
artificially slow because something in the kernel is gummed up, maybe
whatever the problem is also interferes with other things. (Although
I wouldn't expect it to, that is just a theory). I have a 5400 rpm
drive, so 89 single client TPS is almost exactly to be expected.
> I can't
> demonstrate any improvement at 2 clients, but at 80 clients I observe
> a roughly 1.8x performance gain (~50 tps -> ~90 tps). Whether this is
> anything to get excited about is another matter, since you'd hope to
> get more than 1.1 transactions per second no matter how slow fsync is.
Yeah, you've got something much worse going on there than commit_delay
can solve.
With the improved group-commit code, or whatever we are calling it, if
you get 50tps single-client then at 80 clients you should get almost
40x50 tps, assuming the scale is large enough to not block on row
locks.
Cheers,
Jeff
From | Date | Subject | |
---|---|---|---|
Next Message | Robert Haas | 2012-05-15 16:09:42 | Re: Why do we still have commit_delay and commit_siblings? |
Previous Message | Andres Freund | 2012-05-15 15:30:27 | Re: WalSndWakeup() and synchronous_commit=off |