Re: fdatasync performance problem with large number of DB files
Fujii Masao <masao.fujii@oss.nttdata.com>
From: Fujii Masao <masao.fujii@oss.nttdata.com>
To: Thomas Munro <thomas.munro@gmail.com>,
Michael Brown <michael.brown@discourse.org>
Cc: pgsql-hackers <pgsql-hackers@postgresql.org>
Date: 2021-03-11T01:00:37Z
Lists: pgsql-hackers
On 2021/03/11 8:30, Thomas Munro wrote: > On Thu, Mar 11, 2021 at 11:38 AM Thomas Munro <thomas.munro@gmail.com> wrote: >> On Thu, Mar 11, 2021 at 11:01 AM Michael Brown >> <michael.brown@discourse.org> wrote: >>> * is there a knob missing we can configure? >>> * can we get an opt-in knob to use a single sync() call instead of a >>> recursive fsync()? >>> * would you be open to merging a patch providing said knob? >>> * is there something else we missed? >> >> As discussed on that other thread, I don't think sync() is an option >> (it doesn't wait on all OSes or in the standard and it doesn't report >> errors). syncfs() on Linux 5.8+ looks like a good candidate though, >> and I think we'd consider a patch like that. I mean, I even posted >> one[1] in that other thread. There will of course be cases where >> that's slower (small database sharing filesystem with other software >> that has a lot of dirty data to write back). > > Thinking about this some more, if you were to propose a patch like > that syncfs() one but make it a configurable option, I'd personally be > in favour of trying to squeeze it into v14. Others might object on > commitfest procedural grounds, I dunno, but I think this is a real > operational issue and that's a fairly simple and localised change. +1 to push this kind of change into v14!! > I've run into a couple of users who have just commented that recursive > fsync() code out! BTW, we can skip that recursive fsync() by disabling fsync GUC even without commenting out the code? Regards, -- Fujii Masao Advanced Computing Technology Center Research and Development Headquarters NTT DATA CORPORATION
Commits
-
Change recovery_init_sync_method to PGC_SIGHUP.
- 34a8b64b4e5f 14.0 landed
-
Provide recovery_init_sync_method=syncfs.
- 61752afb2640 14.0 landed