Re: [RFC] Lock-free XLog Reservation from WAL

From: Japin Li <japinli(at)hotmail(dot)com>
To: Yura Sokolov <y(dot)sokolov(at)postgrespro(dot)ru>
Cc: "Zhou, Zhiguo" <zhiguo(dot)zhou(at)intel(dot)com>, wenhui qiu <qiuwenhuifx(at)gmail(dot)com>, "pgsql-hackers(at)postgresql(dot)org" <pgsql-hackers(at)postgresql(dot)org>
Subject: Re: [RFC] Lock-free XLog Reservation from WAL
Date: 2025-01-22 12:37:44
Message-ID: ME0P300MB044585D2D723DDBDAF3D2153B6E12@ME0P300MB0445.AUSP300.PROD.OUTLOOK.COM
Views: Raw Message | Whole Thread | Download mbox | Resend email
Thread:
Lists: pgsql-hackers

On Wed, 22 Jan 2025 at 16:49, Japin Li <japinli(at)hotmail(dot)com> wrote:
> On Wed, 22 Jan 2025 at 11:22, Yura Sokolov <y(dot)sokolov(at)postgrespro(dot)ru> wrote:
>> 22.01.2025 10:54, Japin Li пишет:
>>> On Wed, 22 Jan 2025 at 10:25, Yura Sokolov <y(dot)sokolov(at)postgrespro(dot)ru> wrote:
>>>> 22.01.2025 09:09, Japin Li пишет:
>>>>> Hi, Yura Sokolov
>>>>> Thanks for updating the patch.
>>>>> I test the v2 patch using BenchmarkSQL 1000 warehouse, and here is the tpmC
>>>>> result:
>>>>> case | min | avg | max
>>>>> --------------------+------------+------------+--------------
>>>>> master (patched) | 988,461.89 | 994,916.50 | 1,000,362.40
>>>>> master (44b61efb79) | 857,028.07 | 863,174.59 | 873,856.92
>>>>> The patch provides a significant improvement.
>>>>> I just looked through the patch, here are some comments.
>>>>> 1.
>>>>> The v2 patch can't be applied cleanly.
>>>>> Applying: Lock-free XLog Reservation using lock-free hash-table
>>>>> .git/rebase-apply/patch:33: trailing whitespace.
>>>>> .git/rebase-apply/patch:37: space before tab in indent.
>>>>> {
>>>>> .git/rebase-apply/patch:38: space before tab in indent.
>>>>> int i;
>>>>> .git/rebase-apply/patch:39: trailing whitespace.
>>>>> .git/rebase-apply/patch:46: space before tab in indent.
>>>>> LWLockReleaseClearVar(&WALInsertLocks[i].l.lock,
>>>>> warning: squelched 4 whitespace errors
>>>>> warning: 9 lines add whitespace errors.
>>>>> 2.
>>>>> And there is a typo:
>>>>> + * PrevLinksHash is a lock-free hash table based on Cuckoo
>>>>> algorith. It is
>>>>> + * mostly 4 way: for every element computed two positions h1, h2, and
>>>>> s/algorith/algorithm/g
>>>>
>>>> Hi, Japin
>>>>
>>>> Thank you a lot for measuring and comments.
>>>>
>>>> May I ask you to compare not only against master, but against straight
>>>> increase of NUM_XLOGINSERT_LOCKS to 128 as well?
>>>> This way the profit from added complexity will be more obvious: does
>>>> it pay for self or not.
>>> The above test already increases NUM_XLOGINSERT_LOCKS to 64;
>>
>> Ok, that is good.
>> Did you just increased number of locks, or applied
>> "several-attempts-to-lock"
>> from [1] as well? It will be interesting how it affects performance in this
>> case. And it is orthogonal to "lock-free reservation", so they could
>> applied simultaneously.
>
> I apply the following two patches:
>
> 1. Lock-free XLog Reservation using lock-free hash-table

Hi, Yura Sokolov

When I try to test the performance by only applying the Lock-free XLog
Reservation patch, there is an error:

2025-01-22 20:06:49.976 CST [1271602] PANIC: stuck spinlock detected at LinkAndFindPrevPos, /home/postgres/postgres/build/../src/backend/access/transam/xlog.c:1425
2025-01-22 20:06:49.976 CST [1271602] STATEMENT: UPDATE bmsql_customer SET c_balance = c_balance - $1, c_ytd_payment = c_ytd_payment + $2, c_payment_cnt = c_payment_cnt + 1 WHERE c_w_id = $3 AND c_d_id = $4 AND c_id = $5
2025-01-22 20:06:50.078 CST [1271748] PANIC: stuck spinlock detected at LinkAndFindPrevPos, /home/postgres/postgres/build/../src/backend/access/transam/xlog.c:1425

However, it does not always occur.

--
Regrads,
Japin Li

In response to

Responses

Browse pgsql-hackers by date

  From Date Subject
Next Message Vitaly Davydov 2025-01-22 12:45:30 Re: An improvement of ProcessTwoPhaseBuffer logic
Previous Message Laurenz Albe 2025-01-22 12:30:17 Re: Extend ALTER DEFAULT PRIVILEGES for large objects