Re: [COMMITTERS] pgsql: Make walsender more responsive.

Robert Haas <robertmhaas@gmail.com>

From: Robert Haas <robertmhaas@gmail.com>
To: Andres Freund <andres@2ndquadrant.com>
Cc: pgsql-hackers@postgresql.org, Fujii Masao <masao.fujii@gmail.com>, Robert Haas <rhaas@postgresql.org>
Date: 2012-07-02T18:50:23Z
Lists: pgsql-hackers
On Mon, Jul 2, 2012 at 1:53 PM, Andres Freund <andres@2ndquadrant.com> wrote:
>> This commit makes the synchronous replication slow down very much
>> when wal_sync_method is set to open_sync or open_datasync. I think
>> the attached patch needs to be applied.
> Hm. Yes, definitely. No idea why I placed the call there, sorry.

Committed.

>> +#define WalSndWakeupProcessRequests()                \
>> +     do                                                                              \
>> +     {                                                                               \
>> +             if (wake_wal_senders)                           \
>> +             {                                                                       \
>> +                     wake_wal_senders = false;               \
>> +                     if (max_wal_senders > 0)                \
>> +                             WalSndWakeup();                         \
>> +             }                                                                       \
>> +     } while (0)
>>
>> I'm not sure it's really worth doing, but isn't it good idea to test
>> max_wal_sender > 0 first to eliminate any CPU cycle in non replication
>> case?
> I think the difference is ignorable. wake_wal_senders probably has better
> cache locality but is set to true more often, but not that often...

I was wondering if we shouldn't do this as:

if (max_wal_senders > 0 && wake_wal_senders)
    WalSndWakeup();

....and then put wake_wal_senders = false into WalSndWakeup().

-- 
Robert Haas
EnterpriseDB: http://www.enterprisedb.com
The Enterprise PostgreSQL Company

Commits

Same data as JSON: GET /api/v1/messages/:b64id/commits the thread's linked commits as JSON, with link sources. API reference →
  1. Make walsender more responsive.