Hi, On 2019-03-13 11:56:19 +1300, Thomas Munro wrote: > A user complained about CREATE DATABASE taking > 200ms even with fsync > set to off. Andres pointed out that that'd be the clunky poll/sleep > loops in checkpointer.c. > > Here's a draft patch to use condition variables instead. > > Unpatched: > > postgres=# checkpoint; > CHECKPOINT > Time: 101.848 ms > > Patched: > > postgres=# checkpoint; > CHECKPOINT > Time: 1.851 ms
Neat. That's with tiny shmem though, I bet? > + <row> > + <entry><literal>CheckpointDone</literal></entry> > + <entry>Waiting for a checkpoint to complete.</entry> > + </row> > + <row> > + <entry><literal>CheckpointStart</literal></entry> > + <entry>Waiting for a checkpoint to start.</entry> > + </row> Not sure I like these much, but I can't quite ome up with something meaningfully better. Looks good to me. Having useful infrastructure is sure cool. - Andres