On Wed, Jul 13, 2011 at 10:56 PM, Peter Geoghegan <peter@2ndquadrant.com> wrote:
> Attached is patch for the WAL writer that removes its tight polling
> loop (which probably doesn't get hit often in practice, as we just
> sleep if wal_writer_delay is under a second), and, at least
> potentially, reduces power consumption when idle by using a latch.
>
> I will break all remaining power consumption work down into
> per-auxiliary process patches. I think that this is appropriate - if
> we hit a snag on one of the processes, there is no need to have that
> hold up everything.
>
> I've commented that we handle all expected signals, and therefore we
> shouldn't worry about having timeout invalidated by signals, just as
> with the archiver. Previously, we didn't even worry about Postmaster
> death within the tight polling loop, presumably because
> wal_writer_delay is typically small enough to avoid that being a
> problem. I thought that WL_POSTMASTER_DEATH might be superfluous here,
> but then again there is a codepath specifically for the case where
> wal_writer_delay exceeds one second, so it is included in this initial
> version.
>
> Comments?
ISTM that this in itself isn't enough to reduce power consumption.
Currently the only people that use WALWriter are asynchronous commits,
so we should include within RecordTransactionCommit() a SetLatch()
command for the WALWriter.
That way we can have WALWriter sleep until its needed.
--
Simon Riggs http://www.2ndQuadrant.com/
PostgreSQL Development, 24x7 Support, Training & Services