Re: fdatasync performance problem with large number of DB files

From: David Steele <david(at)pgmasters(dot)net>
To: Thomas Munro <thomas(dot)munro(at)gmail(dot)com>, Fujii Masao <masao(dot)fujii(at)oss(dot)nttdata(dot)com>
Cc: Bruce Momjian <bruce(at)momjian(dot)us>, Paul Guo <guopa(at)vmware(dot)com>, Tom Lane <tgl(at)sss(dot)pgh(dot)pa(dot)us>, Michael Brown <michael(dot)brown(at)discourse(dot)org>, pgsql-hackers <pgsql-hackers(at)postgresql(dot)org>
Subject: Re: fdatasync performance problem with large number of DB files
Date: 2021-03-19 13:55:29
Views: Raw Message | Whole Thread | Download mbox | Resend email
Lists: pgsql-hackers

On 3/19/21 1:28 AM, Thomas Munro wrote:
> On Fri, Mar 19, 2021 at 3:23 PM Fujii Masao <masao(dot)fujii(at)oss(dot)nttdata(dot)com> wrote:
>> Thanks for updating the patch! It looks good to me!
>> I have one minor comment for the patch.
>> + elog(LOG, "could not open %s: %m", path);
>> + return;
>> + }
>> + if (syncfs(fd) < 0)
>> + elog(LOG, "could not sync filesystem for \"%s\": %m", path);
>> Since these are neither internal errors nor low-level debug messages, ereport() should be used for them rather than elog()? For example,
> Fixed.
> I'll let this sit until tomorrow to collect any other feedback or
> objections, and then push the 0001 patch
> (recovery_init_sync_method=syncfs).

I had a look at the patch and it looks good to me.

Should we mention in the docs that the contents of non-standard symlinks
will not be synced, i.e. anything other than tablespaces and pg_wal? Or
can we point them to some docs saying not to do that (if such exists)?

> On Fri, Mar 19, 2021 at 4:08 PM Fujii Masao <masao(dot)fujii(at)oss(dot)nttdata(dot)com> wrote:
>> 0002 patch looks good to me. Thanks!
>> I have minor comments.
> Ok, I made the changes you suggested. Let's see if anyone else would
> like to vote for or against the concept of the 0002 patch
> (recovery_init_sync_method=none).

It worries me that this needs to be explicitly "turned off" after the
initial recovery. Seems like something of a foot gun.

Since we have not offered this functionality before I'm not sure we
should rush to introduce it now. For backup solutions that do their own
syncing, syncfs() should provide excellent performance so long as the
file system is not shared, which is something the user can control (and
is noted in the docs).


In response to


Browse pgsql-hackers by date

  From Date Subject
Next Message Alvaro Herrera 2021-03-19 13:57:37 Re: ALTER TABLE .. DETACH PARTITION CONCURRENTLY
Previous Message Hannu Krosing 2021-03-19 13:54:16 Re: Feature improvement: can we add queryId for pg_catalog.pg_stat_activity view?