From: | Jeff Janes <jeff(dot)janes(at)gmail(dot)com> |
---|---|
To: | pgsql-hackers <pgsql-hackers(at)postgresql(dot)org> |
Subject: | Re: subscription worker signalling wal writer too much |
Date: | 2017-06-14 22:08:49 |
Message-ID: | CAMkU=1yz3RYqPta7kzv0dyPQNaGoutkYKmTWBLFKpsPc1DO9nQ@mail.gmail.com |
Views: | Raw Message | Whole Thread | Download mbox | Resend email |
Thread: | |
Lists: | pgsql-hackers |
On Wed, Jun 14, 2017 at 11:55 AM, Jeff Janes <jeff(dot)janes(at)gmail(dot)com> wrote:
> If I publish a pgbench workload and subscribe to it, the subscription
> worker is signalling the wal writer thousands of times a second, once for
> every async commit. This has a noticeable performance cost.
>
I've used a local variable to avoid waking up the wal writer more than once
for the same page boundary. This reduces the number of wake-ups by about
7/8.
I'm testing it by doing 1e6 transactions over 8 clients while replication
is in effect, then waiting for the logical replica to catch up. This cycle
takes 183.1 seconds in HEAD, and 162.4 seconds with the attached patch.
N=14, p-value for difference of the means 6e-17.
If I suppress all wake-ups just to see what would happen, it further
reduces the runtime to 153.7.
Cheers,
Jeff
Attachment | Content-Type | Size |
---|---|---|
wake_wal_writer_less_aggressively.patch | application/octet-stream | 877 bytes |
From | Date | Subject | |
---|---|---|---|
Next Message | Andres Freund | 2017-06-14 22:20:19 | Re: subscription worker signalling wal writer too much |
Previous Message | Tom Lane | 2017-06-14 22:01:58 | Re: intermittent failures in Cygwin from select_parallel tests |