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