On Wed, Dec 1, 2010 at 4:25 AM, Greg Smith <greg(at)2ndquadrant(dot)com> wrote:
>> I ask because I don't have a mental model of how the pause can help.
>> Given that this dirty data has been hanging around for many minutes
>> already, what is a 3 second pause going to heal?
> The difference is that once an fsync call is made, dirty data is much more
> likely to be forced out. It's the one thing that bypasses all other ways
> the kernel might try to avoid writing the data
I had always assumed the problem was that other I/O had been done to
the files in the meantime. I.e. the fsync is not just syncing the
checkpoint but any other blocks that had been flushed since the
checkpoint started. The longer the checkpoint is spread over the more
other I/O is included as well.
Using sync_file_range you can specify the set of blocks to sync and
then block on them only after some time has passed. But there's no
documentation on how this relates to the I/O scheduler so it's not
clear it would have any effect on the problem. We might still have to
delay the begining of the sync to allow the dirty blocks to be synced
naturally and then when we issue it still end up catching a lot of
other i/o as well.
In response to
pgsql-hackers by date
|Next:||From: Josh Berkus||Date: 2010-12-02 19:48:54|
|Subject: Re: Spread checkpoint sync|
|Previous:||From: Kevin Grittner||Date: 2010-12-02 19:16:09|
|Subject: Re: crash-safe visibility map, take three|