Re: MultiXact\SLRU buffers configuration
Kyotaro Horiguchi <horikyota.ntt@gmail.com>
From: Kyotaro Horiguchi <horikyota.ntt@gmail.com>
To: x4mmm@yandex-team.ru
Cc: pgsql-hackers@postgresql.org
Date: 2020-05-14T01:25:26Z
Lists: pgsql-hackers
At Wed, 13 May 2020 23:08:37 +0500, "Andrey M. Borodin" <x4mmm@yandex-team.ru> wrote in > > > > 11 мая 2020 г., в 16:17, Andrey M. Borodin <x4mmm@yandex-team.ru> написал(а): > > > > I've went ahead and created 3 patches: > > 1. Configurable SLRU buffer sizes for MultiXacOffsets and MultiXactMembers > > 2. Reduce locking level to shared on read of MultiXactId members > > 3. Configurable cache size > > I'm looking more at MultiXact and it seems to me that we have a race condition there. > > When we create a new MultiXact we do: > 1. Generate new MultiXactId under MultiXactGenLock > 2. Record new mxid with members and offset to WAL > 3. Write offset to SLRU under MultiXactOffsetControlLock > 4. Write members to SLRU under MultiXactMemberControlLock But, don't we hold exclusive lock on the buffer through all the steps above? > When we read MultiXact we do: > 1. Retrieve offset by mxid from SLRU under MultiXactOffsetControlLock > 2. If offset is 0 - it's not filled in at step 4 of previous algorithm, we sleep and goto 1 > 3. Retrieve members from SLRU under MultiXactMemberControlLock > 4. ..... what we do if there are just zeroes because step 4 is not executed yet? Nothing, return empty members list. So transactions never see such incomplete mxids, I believe. > What am I missing? regards. -- Kyotaro Horiguchi NTT Open Source Software Center
Commits
-
Rework new SLRU test with injection points
- 94a3373ac5c3 18.0 landed
-
injection_point: Add injection_points.stats
- 2e35c67f9568 18.0 landed
-
injection_points: Add initialization of shmem state when loading module
- b2b023aa3706 18.0 landed
-
Add injection-point test for new multixact CV usage
- 768a9fd5535f 18.0 landed
-
Use conditional variable to wait for next MultiXact offset
- a0e0fb1ba56f 17.0 landed
-
Improve performance of subsystems on top of SLRU
- 53c2a97a9266 17.0 landed
-
Adjust VACUUM hastup LP_REDIRECT comments.
- 325bc54eed4e 16.0 cited
-
Test replay of regression tests, attempt II.
- f47ed79cc8a0 15.0 cited