[prev in list] [next in list] [prev in thread] [next in thread] 

List:       postgresql-general
Subject:    Re: fdatasync performance problem with large number of DB files
From:       Michael Brown <michael.brown () discourse ! org>
Date:       2021-02-23 4:25:49
Message-ID: 2feba0d3-28c2-08a6-c398-7ddc415293d2 () discourse ! org
[Download RAW message or body]

On 2021-02-22 5:43 p.m., Tom Lane wrote:
> Michael Brown <michael.brown@discourse.org> writes:
>> * is there a knob missing we can configure?
> 
> No.  The trouble with sync() is that per POSIX, it only schedules the
> writes; there's no way to tell when the work has been done.  I see
> that Linux offers stronger promises in this department, but I don't
> think that's very portableTrue, but as mentioned below we're looking for a "this makes sense for
our environment" switch.

> Moreover, even on Linux there's no way to detect whether any of the writes failed.
Ugh. Presumably those would be noticed when the WAL replays? (I'll admit
I'd have to look at the sequence of events and think about it, I don't
know offhand.)

Oh, syncfs() exists but is Linux-specific, again, darn.

> Barring some solution to those problems, we would be unlikely to take
> a patch that uses sync() instead of fsync().
I wouldn't dare to propose outright switching to sync() for everyone,
but a knob we can turn on to say "use sync (or syncfd()) instead" is
what we need, discounting a better solution.

-- 
Michael Brown
Civilized Discourse Construction Kit, Inc.
https://www.discourse.org/


[prev in list] [next in list] [prev in thread] [next in thread] 

Configure | About | News | Add a list | Sponsored by KoreLogic