Re: Excessive PostmasterIsAlive calls slow down WAL redo
Thomas Munro <thomas.munro@enterprisedb.com>
From: Thomas Munro <thomas.munro@enterprisedb.com>
To: Michael Paquier <michael@paquier.xyz>
Cc: Andres Freund <andres@anarazel.de>, Heikki Linnakangas <hlinnaka@iki.fi>,
Tom Lane <tgl@sss.pgh.pa.us>, pgsql-hackers <pgsql-hackers@postgresql.org>
Date: 2018-04-25T06:23:26Z
Lists: pgsql-hackers
Attachments
- 0001-Use-signals-for-postmaster-death-on-Linux-v4.patch (application/octet-stream) patch v4-0001
- 0002-Use-signals-for-postmaster-death-on-FreeBSD-v4.patch (application/octet-stream) patch v4-0002
On Tue, Apr 24, 2018 at 7:37 PM, Michael Paquier <michael@paquier.xyz> wrote: > I have been looking at the proposed set for Linux, and the numbers are > here. By replaying 1GB worth of WAL after a pgbench run with the data > folder on a tmpfs the recovery time goes from 33s to 28s, so that's a > nice gain. Thanks for testing. > Do you have numbers with FreeBSD? I get that this would be more > difficult to set up without a GA release perhaps... I don't have production build numbers, but a similar test to yours went from 91s to 61s on a debug kernel in a virtual machine. > I can also see the difference in profiles by looking for > HandleStartupProcInterrupts which gets close 10% of the attention when > unpatched, and down to 0.1% when patched. > > @@ -2484,6 +2484,8 @@ ClosePostmasterPorts(bool am_syslogger) > if (bonjour_sdref) > close(DNSServiceRefSockFD(bonjour_sdref)); > #endif > + > + PostmasterDeathInit(); > > Thomas, trying to understand here... Why this place for the signal > initialization? Wouldn't InitPostmasterChild() be a more logical place > as we'd want to have this logic caught by all other processes? Yeah, you're right. Here's one like that. -- Thomas Munro http://www.enterprisedb.com
Commits
-
Poll postmaster less frequently in recovery.
- 57dcc2ef3320 14.0 landed
-
Use signals for postmaster death on FreeBSD.
- f98b8476cd4a 12.0 landed
-
Use signals for postmaster death on Linux.
- 9f09529952ac 12.0 landed
-
Introduce a pipe between postmaster and each backend, which can be used to
- 89fd72cbf26f 9.2.0 cited