Re: Refactoring the checkpointer's fsync request queue
Shawn Debnath <sdn@amazon.com>
From: Shawn Debnath <sdn@amazon.com>
To: Robert Haas <robertmhaas@gmail.com>
Cc: Thomas Munro <thomas.munro@gmail.com>, Tom Lane <tgl@sss.pgh.pa.us>,
Andres Freund <andres@anarazel.de>,
Dmitry Dolgov <9erthalion6@gmail.com>,
PostgreSQL-development <pgsql-hackers@postgresql.org>
Date: 2019-03-26T16:47:58Z
Lists: pgsql-hackers
On Tue, Mar 26, 2019 at 09:22:56AM -0400, Robert Haas wrote: > On Tue, Mar 26, 2019 at 12:20 AM Thomas Munro <thomas.munro@gmail.com> wrote: > > I've been trying to decide if that is a problem. Maybe there is a > > performance angle, and I'm also wondering if it might increase the > > risk of missing a write-back error. Of course we'll find a proper > > solution to that problem (perhaps fd-passing or sync-on-close[1]), but > > I don't want to commit anything in the name of refactoring that might > > make matters worse incidentally. Or perhaps those worries are bogus, > > since the checkpointer calls smgrcloseall() at the end anyway. > > > > On balance, I'm inclined to err on the side of caution and try to keep > > things a bit closer to the way they are for now. > > > > Here's a fixup patch. 0001 is the same as Shawn's v12 patch, and 0002 > > has my proposed changes to switch to callbacks that actually perform > > the sync and unlink operations given a file tag, and do so via the > > SMGR fd cache, rather than exposing the path to sync.c. This moves us > > back towards the way I had it in an earlier version of the patch, but > > instead of using smgrsyncimmed() as I had it, it goes via Shawn's new > > sync handler function lookup table, allowing for non-smgr components > > to use this machinery in future (as requested by Andres). > > Strong +1. Not only might closing and reopening the files have > performance and reliability implications, but a future smgr might talk > to the network, having no local file to sync. Makes sense for now. When we re-visit the fd-passing or sync-on-close implementations, we can adapt the changes relatively easily given the rest of the framework is staying intact. I am hoping these patches do not delay the last fsync-gate issue discussion further. -- Shawn Debnath Amazon Web Services (AWS)
Commits
-
Fix bugs in mdsyncfiletag().
- 794c543b1736 12.0 landed
-
Refactor the fsync queue for wider use.
- 3eb77eba5a51 12.0 landed
-
Don't forget about failed fsync() requests.
- 1556cb2fc5c7 12.0 cited
-
PANIC on fsync() failure.
- 9ccdd7f66e33 12.0 cited
-
Move LockClauseStrength, LockWaitPolicy into new file nodes/lockoptions.h.
- 9fac5fd741ec 9.5.0 cited
-
Add new file for checkpointer.c
- bf405ba8e460 9.2.0 cited
-
Split work of bgwriter between 2 processes: bgwriter and checkpointer.
- 806a2aee3791 9.2.0 cited
-
Install infrastructure for shared-memory free space map. Doesn't actually
- e0c9301c8763 7.2.1 cited