Re: pg_basebackup throttling doesn't throttle as promised
Jeff Janes <jeff.janes@gmail.com>
From: Jeff Janes <jeff.janes@gmail.com>
To: pgsql-hackers <pgsql-hackers@postgresql.org>
Date: 2017-09-01T21:42:12Z
Lists: pgsql-hackers
Attachments
- pg_basebackup_throttle_1_v1.patch (application/octet-stream) patch v1
- pg_basebackup_throttle_2_v1.patch (application/octet-stream) patch v1
On Fri, Sep 1, 2017 at 1:32 PM, Jeff Janes <jeff.janes@gmail.com> wrote: > The "-r" option to pg_basebackup is supposed to throttle the rate of the > backup. But it only works properly if the server is mostly idle. > > Every non-trivial call to XLogFlush or XLogBackgroundFlush will wake up > the wal sender (the one which is not really sending wal, but base files), > and the throttling routine doesn't go back to sleep after being awoke > early. Rather, it releases another 32kb of data. > > > Should the basebackup.c throttle sleep in a loop until its time has > expired? > > Or should walsender.c WalSndWakeup not wake a wal sender whose status > is WALSNDSTATE_BACKUP? > > Or both? > I'm attaching a patch for each option. Each one independently solves the problem. But I think we should do both. There is no point in issuing unnecessary kill system calls, and there may also be more spurious wake-ups than just these ones. Cheers, Jeff
Commits
-
Correct base backup throttling
- 1861b20cd63b 10.0 landed
- ebd346caf41b 11.0 landed