Re: Excessive PostmasterIsAlive calls slow down WAL redo
Andres Freund <andres@anarazel.de>
From: Andres Freund <andres@anarazel.de>
To: Thomas Munro <thomas.munro@enterprisedb.com>,Heikki Linnakangas
<hlinnaka@iki.fi>
Cc: Tom Lane <tgl@sss.pgh.pa.us>,pgsql-hackers <pgsql-hackers@postgresql.org>
Date: 2018-04-19T06:20:33Z
Lists: pgsql-hackers
On April 18, 2018 8:05:50 PM PDT, Thomas Munro <thomas.munro@enterprisedb.com> wrote: >On Wed, Apr 18, 2018 at 5:04 PM, Thomas Munro ><thomas.munro@enterprisedb.com> wrote: >> On Wed, Apr 11, 2018 at 10:22 PM, Heikki Linnakangas ><hlinnaka@iki.fi> wrote: >>>> On Tue, Apr 10, 2018 at 12:53 PM, Andres Freund ><andres@anarazel.de> >>>> wrote: >>>>> That person said he'd work on adding an equivalent of linux' >>>>> prctl(PR_SET_PDEATHSIG) to FreeBSD. >> >> Here is an implementation of Andres's idea for Linux, and also for >> patched FreeBSD (for later if/when that lands). Do you think this >> makes sense Heikki? I am planning to add this to the next CF. > >Here's a new version with a stupid bug fixed (I accidentally posted a >testing version that returned false instead of true, as cfbot quickly >pointed out -- d'oh). > >By the way, these patches only use the death signal to make >PostmasterIsAlive() fast, for use by busy loops like recovery. The >postmaster pipe is still used for IO/timeout loops to detect >postmaster death. In theory you could get rid of the postmaster pipe >completely when USE_POSTMASTER_DEATH_SIGNAL is defined and make it >like the latch code, using the same self-pipe. I'm not sure if there >is anything to be gained by that (that wasn't already gained by using >epoll/kqueue) so I'm not proposing it. In my local prototype patch I'd done so. And I think it makes sense, because it's s somewhat contended object, even when using epoll/kqueue. On the other hand, it makes the chide changed a bit harder, making it pretty was were I suspended the work for a bit... -- Sent from my Android device with K-9 Mail. Please excuse my brevity.
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