Re: [HACKERS] Fix performance degradation of contended LWLock on NUMA - Mailing list pgsql-hackers

From Sokolov Yura
Subject Re: [HACKERS] Fix performance degradation of contended LWLock on NUMA
Date
Msg-id 2f88b1871423873bff45b1d2d3e58cf8@postgrespro.ru
Whole thread Raw
In response to Re: [HACKERS] Fix performance degradation of contended LWLock on NUMA  (Sokolov Yura <funny.falcon@postgrespro.ru>)
List pgsql-hackers
On 2017-07-18 20:20, Sokolov Yura wrote:
> On 2017-06-05 16:22, Sokolov Yura wrote:
>> Good day, everyone.
>> 
>> This patch improves performance of contended LWLock.
>> Patch makes lock acquiring in single CAS loop:
>> 1. LWLock->state is read, and ability for lock acquiring is detected.
>>   If there is possibility to take a lock, CAS tried.
>>   If CAS were successful, lock is aquired (same to original version).
>> 2. but if lock is currently held by other backend, we check ability 
>> for
>>   taking WaitList lock. If wait list lock is not help by anyone, CAS
>>   perfomed for taking WaitList lock and set LW_FLAG_HAS_WAITERS at 
>> once.
>>   If CAS were successful, then LWLock were still held at the moment 
>> wait
>>   list lock were held - this proves correctness of new algorithm. And
>>   Proc is queued to wait list then.
>> 3. Otherwise spin_delay is performed, and loop returns to step 1.
>> 
> 
> I'm sending rebased version with couple of one-line tweaks.
> (less skip_wait_list on shared lock, and don't update spin-stat on 
> aquiring)
> 
> With regards,

Here are results for zipfian distribution (50/50 r/w) in conjunction
with "lazy hash table for XidInMVCCSnapshot":
(https://www.postgresql.org/message-id/642da34694800dab801f04c62950ce8a%40postgrespro.ru)

clients | master | hashsnap2 | hashsnap2_lwlock
--------+--------+-----------+------------------     10 | 203384 |    203813 |           204852     20 | 334344 |
334268|           363510     40 | 228496 |    231777 |           383820     70 | 146892 |    148173 |           221326
 110 |  99741 |    111580 |           157327    160 |  65257 |     81230 |           112028    230 |  38344 |     56790
|           77514    310 |  22355 |     39249 |            55907    400 |  13402 |     26899 |            39742    500
|  8382 |     17855 |            28362    650 |   5313 |     11450 |            17497    800 |   3352 |      7816 |
      11030
 

With regards,
-- 
Sokolov Yura aka funny_falcon
Postgres Professional: https://postgrespro.ru
The Russian Postgres Company



pgsql-hackers by date:

Previous
From: Aleksander Alekseev
Date:
Subject: Re: [HACKERS] Funny WAL corruption issue
Next
From: Nicolas Thauvin
Date:
Subject: [HACKERS] Foreign tables privileges not shown ininformation_schema.table_privileges