• Tom Lane's avatar
    Reduce pg_ctl's reaction time when waiting for postmaster start/stop. · c61559ec
    Tom Lane authored
    pg_ctl has traditionally waited one second between probes for whether
    the start or stop request has completed.  That behavior was embodied
    in the original shell script written in 1999 (commit 5b912b08) and
    I doubt anyone's questioned it since.  Nowadays, machines are a lot
    faster, and the shell script is long since replaced by C code, so it's
    fair to reconsider how long we ought to wait.
    
    This patch adjusts the coding so that the wait time can be any even
    divisor of 1 second, and sets the actual probe rate to 10 per second.
    That's based on experimentation with the src/test/recovery TAP tests,
    which include a lot of postmaster starts and stops.  This patch alone
    reduces the (non-parallelized) runtime of those tests from ~4m30s to
    ~3m5s on my machine.  Increasing the probe rate further doesn't help
    much, so this seems like a good number.
    
    In the real world this probably won't have much impact, since people
    don't start/stop production postmasters often, and the shutdown checkpoint
    usually takes nontrivial time too.  But it makes development work and
    testing noticeably snappier, and that's good enough reason for me.
    
    Also, by reducing the dead time in postmaster restart sequences, this
    change has made it easier to reproduce some bugs that have been lurking
    for awhile.  Patches for those will follow.
    
    Discussion: https://postgr.es/m/18444.1498428798@sss.pgh.pa.us
    c61559ec
pg_ctl.c 63.1 KB