Re: Move PinBuffer and UnpinBuffer to atomics - Mailing list pgsql-hackers

From Alexander Korotkov
Subject Re: Move PinBuffer and UnpinBuffer to atomics
Date
Msg-id CAPpHfdvv4Ei+p_0woWBTwFG+GS3nUSmV0RwPEf0E2O-MsQ0jqw@mail.gmail.com
Whole thread Raw
In response to Re: Move PinBuffer and UnpinBuffer to atomics  (Alexander Korotkov <a.korotkov@postgrespro.ru>)
Responses Re: Move PinBuffer and UnpinBuffer to atomics  (Andres Freund <andres@anarazel.de>)
List pgsql-hackers
On Thu, Oct 29, 2015 at 8:18 PM, Alexander Korotkov <a.korotkov@postgrespro.ru> wrote:
On Thu, Sep 24, 2015 at 6:36 PM, Alexander Korotkov <a.korotkov@postgrespro.ru> wrote:
On Thu, Sep 24, 2015 at 6:32 PM, Andres Freund <andres@anarazel.de> wrote:
On 2015-09-15 20:16:10 +0300, YUriy Zhuravlev wrote:
> We will be tested.

Did you have a chance to run some benchmarks?
 
Yes, we now have 60 physical cores intel server and we're running benchmarks on it.

We got a consensus with Andres that we should commit the CAS version first and look to other optimizations.
Refactored version of atomic state patch is attached. The changes are following:
1) Macros are used for access refcount and usagecount.
2) likely/unlikely were removed. I think introducing of likely/unlikely should be a separate patch since it touches portability. Also, I didn't see any performance effect of this.
3) LockBufHdr returns the state after taking lock. Without using atomic increments it still can save some loops on skip atomic value reading.

pinunpin-cas-original-fix.patch is just original patch by Andres Freund with fixed bug which causes hang.
Performance comparison on 72-cores Intel server in attached. On this machine we see no regression in version of patch in previous letter.

------
Alexander Korotkov
Postgres Professional: http://www.postgrespro.com
The Russian Postgres Company
 
Attachment

pgsql-hackers by date:

Previous
From: Robert Haas
Date:
Subject: Re: Patch: Implement failover on libpq connect level.
Next
From: Euler Taveira
Date:
Subject: Re: WIP: Fix parallel workers connection bug in pg_dump (Bug #13727)