Greg Smith <[EMAIL PROTECTED]> writes:
> On Fri, 26 Oct 2007, ITAGAKI Takahiro wrote:
>> Mixed usage of buffered and direct i/o is legal, but enforces complexity 
>> to kernels. If we simplify it, things would be more relaxed. For 
>> example, dropping zero-filling and only use direct i/o. Is it possible?

> It's possible, but performance suffers considerably.  I played around with 
> this at one point when looking into doing all database writes as sync 
> writes.  Having to wait until the entire 16MB WAL segment made its way to 
> disk before more WAL could be written can cause a nasty pause in activity, 
> even with direct I/O sync writes.  Even the current buffered zero-filled 
> write of that size can be a bit of a drag on performance for the clients 
> that get caught behind it, making it any sort of sync write will be far 
> worse.

This ties into a loose end we didn't get to yet: being more aggressive
about creating future WAL segments.  ISTM there is no good reason for
clients ever to have to wait for WAL segment creation --- the bgwriter,
or possibly the walwriter, ought to handle that in the background.  But
we only check for the case once per checkpoint and we don't create a
segment unless there's very little space left.

                        regards, tom lane

---------------------------(end of broadcast)---------------------------
TIP 1: if posting/reading through Usenet, please send an appropriate
       subscribe-nomail command to [EMAIL PROTECTED] so that your
       message can get through to the mailing list cleanly

Reply via email to