pg.ddx.io  pgsql-performance@postgresql.org mailing list archive  
help / color / mirror / Atom feed
From: Mark Mielke <mark@mark.mielke.cc>
To: Florian Weimer <fw@deneb.enyo.de>
Cc: Tom Lane <tgl@sss.pgh.pa.us>
Cc: Andres Freund <andres@anarazel.de>
Cc: Greg Stark <gsstark@mit.edu>
Cc: Robert Haas <robertmhaas@gmail.com>
Cc: pgsql-hackers@postgresql.org
Subject: Re: Re: Faster CREATE DATABASE by delaying fsync
Date: Sun, 14 Feb 2010 15:41:02 -0500
Message-ID: <4B785FDE.8040308@mark.mielke.cc> (raw)
In-Reply-To: <87wryfpnuv.fsf@mid.deneb.enyo.de>
References: <4427a97a0912101235x3ade510blcc00d5ce9883c6b6@mail.gmail.com>
	<407d949e1002140731j85a4f97nc053ec1b0f3cc458@mail.gmail.com>
	<22295.1266167499@sss.pgh.pa.us>
	<201002141827.04993.andres@anarazel.de>
	<22649.1266169035@sss.pgh.pa.us>
	<87wryfpnuv.fsf@mid.deneb.enyo.de>

On 02/14/2010 03:24 PM, Florian Weimer wrote:
> * Tom Lane:
>    
>>> Which options would that be? I am not aware that there any for any of the
>>> recent linux filesystems.
>>>        
>> Shouldn't journaling of metadata be sufficient?
>>      
> You also need to enforce ordering between the directory update and the
> file update.  The file metadata is flushed with fsync(), but the
> directory isn't.  On some systems, all directory operations are
> synchronous, but not on Linux.
>    

        dirsync
               All directory updates within the filesystem should be 
done  syn-
               chronously.   This  affects  the  following system calls: 
creat,
               link, unlink, symlink, mkdir, rmdir, mknod and rename.

The widely reported problems, though, did not tend to be a problem with 
directory changes written too late - but directory changes being written 
too early. That is, the directory change is written to disk, but the 
file content is not. This is likely because of the "ordered journal" 
mode widely used in ext3/ext4 where metadata changes are journalled, but 
file pages are not journalled. Therefore, it is important for some 
operations, that the file pages are pushed to disk using fsync(file), 
before the metadata changes are journalled.

In theory there is some open hole where directory updates need to be 
synchronized with file updates, as POSIX doesn't enforce this ordering, 
and we can't trust that all file systems implicitly order things 
correctly, but in practice, I don't see this sort of problem happening.

If you are concerned, enable dirsync.

Cheers,
mark

-- 
Mark Mielke<mark@mielke.cc>




view thread (40+ messages)  latest in thread

Message-ID: <4B785FDE.8040308@mark.mielke.cc>
Permalink:  ../4B785FDE.8040308@mark.mielke.cc/
Also on:    postgresql.org/message-id/4B785FDE.8040308@mark.mielke.cc

 · 

reply

Reply instructions:

You may reply publicly to this message via plain-text email
using any one of the following methods:

* Reply to all the recipients using the --to and --cc options:
  reply via email

  To: pgsql-performance@postgresql.org
  Cc: mark@mark.mielke.cc, fw@deneb.enyo.de, tgl@sss.pgh.pa.us, andres@anarazel.de, gsstark@mit.edu, robertmhaas@gmail.com, pgsql-hackers@postgresql.org
  Subject: Re: Re: Faster CREATE DATABASE by delaying fsync
  In-Reply-To: <4B785FDE.8040308@mark.mielke.cc>

* Save the following mbox file, import it into your mail client,
  and reply-to-all from there: mbox

This inbox is served by DDX for PostgreSQL; see mirroring instructions
for how to clone and mirror all data and code used for this inbox