Re: pg_basebackup throttling doesn't throttle as promised

From: Jeff Janes <jeff(dot)janes(at)gmail(dot)com>
To: pgsql-hackers <pgsql-hackers(at)postgresql(dot)org>
Subject: Re: pg_basebackup throttling doesn't throttle as promised
Date: 2017-09-01 21:42:12
Message-ID: CAMkU=1wtMbDSGHcheo_xSHpFi=M2dLsFX6deqJNNoP33N=gvug@mail.gmail.com
Views: Raw Message | Whole Thread | Download mbox | Resend email
Thread:
Lists: pgsql-hackers

On Fri, Sep 1, 2017 at 1:32 PM, Jeff Janes <jeff(dot)janes(at)gmail(dot)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

Attachment Content-Type Size
pg_basebackup_throttle_1_v1.patch application/octet-stream 1.4 KB
pg_basebackup_throttle_2_v1.patch application/octet-stream 899 bytes

In response to

Responses

Browse pgsql-hackers by date

  From Date Subject
Next Message Thomas Munro 2017-09-01 22:32:16 Re: Parallel Hash take II
Previous Message Bruce Momjian 2017-09-01 21:40:18 Re: tupconvert.c API change in v10 release notes