On Mon, Jul 2, 2012 at 1:53 PM, Andres Freund <and...@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

-- 
Sent via pgsql-hackers mailing list (pgsql-hackers@postgresql.org)
To make changes to your subscription:
http://www.postgresql.org/mailpref/pgsql-hackers

Reply via email to