Re: Reducing ClogControlLock contention - Mailing list pgsql-hackers

From Simon Riggs
Subject Re: Reducing ClogControlLock contention
Date
Msg-id CANP8+jLxC1yhMtwPCGfbyqjuhoasYvuT8C09hqK=3tGsN_Hf+Q@mail.gmail.com
Whole thread Raw
In response to Re: Reducing ClogControlLock contention  (Amit Kapila <amit.kapila16@gmail.com>)
Responses Re: Reducing ClogControlLock contention  (Amit Kapila <amit.kapila16@gmail.com>)
List pgsql-hackers
On 26 August 2015 at 11:40, Amit Kapila <amit.kapila16@gmail.com> wrote:
On Tue, Aug 25, 2015 at 2:21 PM, Simon Riggs <simon@2ndquadrant.com> wrote:
On 22 August 2015 at 15:14, Andres Freund <andres@anarazel.de> wrote:
 
TransactionIdSetPageStatus() calls TransactionIdSetStatusBit(), which
writes an 8 byte variable (the lsn). That's not safe.

Agreed, thanks for spotting that.

I see this as the biggest problem to overcome with this patch.

How about using 64bit atomics or spinlock to protect this variable?

Spinlock is out IMHO because this happens on every clog lookup. So it must be an atomic read. 

I'm wondering if its worth making this work on 32-bit systems at all. The contention problems only occur on higher end servers, so we can just disable this optimization if we aren't on a 64bit server.

--
Simon Riggs                http://www.2ndQuadrant.com/
PostgreSQL Development, 24x7 Support, Remote DBA, Training & Services

pgsql-hackers by date:

Previous
From: Amit Kapila
Date:
Subject: Re: Reducing ClogControlLock contention
Next
From: Pavel Stehule
Date:
Subject: Re: proposal: multiple psql option -c