Re: Latches vs lwlock contention
vignesh C <vignesh21@gmail.com>
From: vignesh C <vignesh21@gmail.com>
To: Thomas Munro <thomas.munro@gmail.com>
Cc: pgsql-hackers <pgsql-hackers@postgresql.org>,
Yura Sokolov <y.sokolov@postgrespro.ru>, Andres Freund <andres@anarazel.de>
Date: 2023-01-27T14:39:16Z
Lists: pgsql-hackers
On Tue, 1 Nov 2022 at 16:40, Thomas Munro <thomas.munro@gmail.com> wrote: > > On Fri, Oct 28, 2022 at 4:56 PM Thomas Munro <thomas.munro@gmail.com> wrote: > > See attached sketch patches. I guess the main thing that may not be > > good enough is the use of a fixed sized latch buffer. Memory > > allocation in don't-throw-here environments like the guts of lock code > > might be an issue, which is why it just gives up and flushes when > > full; maybe it should try to allocate and fall back to flushing only > > if that fails. > > Here's an attempt at that. There aren't actually any cases of uses of > this stuff in critical sections here, so perhaps I shouldn't bother > with that part. The part I'd most like some feedback on is the > heavyweight lock bits. I'll add this to the commitfest. The patch does not apply on top of HEAD as in [1], please post a rebased patch: === Applying patches on top of PostgreSQL commit ID 456fa635a909ee36f73ca84d340521bd730f265f === === applying patch ./v2-0003-Use-SetLatches-for-condition-variables.patch patching file src/backend/storage/lmgr/condition_variable.c patching file src/backend/storage/lmgr/lwlock.c Hunk #1 FAILED at 183. 1 out of 1 hunk FAILED -- saving rejects to file src/backend/storage/lmgr/lwlock.c.rej patching file src/include/storage/condition_variable.h patching file src/include/storage/lwlock.h Hunk #1 FAILED at 193. 1 out of 1 hunk FAILED -- saving rejects to file src/include/storage/lwlock.h.rej [1] - http://cfbot.cputube.org/patch_41_3998.log Regards, Vignesh
Commits
-
Fix crash if LockErrorCleanup() is called twice
- 51a0382e8d87 18.0 landed
-
Split ProcSleep function into JoinWaitQueue and ProcSleep
- 3c0fd64fec8e 18.0 landed
-
Move TRACE calls into WaitOnLock()
- 6ae0897e4241 18.0 landed
-
Set MyProc->heldLocks in ProcSleep
- 0464f25b6aa1 18.0 landed
-
Fix comment in LockReleaseAll() on when locallock->nLock can be zero
- 1fe0466cf2cb 18.0 landed
-
Allow a no-wait lock acquisition to succeed in more cases.
- 2346df6fc373 17.0 cited
-
Teach planner about more monotonic window functions
- 456fa635a909 16.0 cited