• Tom Lane's avatar
    Reduce idle power consumption of walwriter and checkpointer processes. · 5461564a
    Tom Lane authored
    This patch modifies the walwriter process so that, when it has not found
    anything useful to do for many consecutive wakeup cycles, it extends its
    sleep time to reduce the server's idle power consumption.  It reverts to
    normal as soon as it's done any successful flushes.  It's still true that
    during any async commit, backends check for completed, unflushed pages of
    WAL and signal the walwriter if there are any; so that in practice the
    walwriter can get awakened and returned to normal operation sooner than the
    sleep time might suggest.
    
    Also, improve the checkpointer so that it uses a latch and a computed delay
    time to not wake up at all except when it has something to do, replacing a
    previous hardcoded 0.5 sec wakeup cycle.  This also is primarily useful for
    reducing the server's power consumption when idle.
    
    In passing, get rid of the dedicated latch for signaling the walwriter in
    favor of using its procLatch, since that comports better with possible
    generic signal handlers using that latch.  Also, fix a pre-existing bug
    with failure to save/restore errno in walwriter's signal handlers.
    
    Peter Geoghegan, somewhat simplified by Tom
    5461564a
walwriter.c 10.4 KB