Jan Wieck wrote: > > If the background cleaner has to not just write() but write/fsync or > > write/O_SYNC, it isn't going to be able to clean them fast enough. It > > creates a bottleneck where we didn't have one before. > > > > We are trying to eliminate an I/O storm during checkpoint, but the > > solutions seem to be making the non-checkpoint times slower. > > > > It looks as if you're assuming that I am making the backends unable to > write on their own, so that they have to wait on the checkpointer. I > never said that. > > If the checkpointer keeps the LRU heads clean, that lifts off write load > from the backends. Sure, they will be able to dirty pages faster. > Theoretically, because in practice if you have a reasonably good cache > hitrate, they will just find already dirty buffers where they just add > some more dust. > > If after all the checkpointer (doing write()+whateversync) is not able > to keep up with the speed of buffers getting dirtied, the backends will > have to do some write()'s again, because they will eat up the clean > buffers at the LRU head and pass the checkpointer.
Yes, there are a couple of issues here --- first, have a background writer to write dirty pages. This is good, no question. The bigger question is removing sync() and using fsync() or O_SYNC for every write --- if we do that, the backends doing private write will have to fsync their writes too, meaning if the checkpointer can't keep up, we now have backends doing slow writes too. -- Bruce Momjian | http://candle.pha.pa.us [EMAIL PROTECTED] | (610) 359-1001 + If your life is a hard drive, | 13 Roberts Road + Christ can be your backup. | Newtown Square, Pennsylvania 19073 ---------------------------(end of broadcast)--------------------------- TIP 5: Have you checked our extensive FAQ? http://www.postgresql.org/docs/faqs/FAQ.html