From: | Andrey Borodin <x4mmm(at)yandex-team(dot)ru> |
---|---|
To: | Andrey Borodin <x4mmm(at)yandex-team(dot)ru> |
Cc: | Gilles Darold <gilles(at)darold(dot)net>, Tomas Vondra <tomas(dot)vondra(at)enterprisedb(dot)com>, Tomas Vondra <tomas(dot)vondra(at)2ndquadrant(dot)com>, Alexander Korotkov <aekorotkov(at)gmail(dot)com>, Anastasia Lubennikova <a(dot)lubennikova(at)postgrespro(dot)ru>, Daniel Gustafsson <daniel(at)yesql(dot)se>, Kyotaro Horiguchi <horikyota(dot)ntt(at)gmail(dot)com>, pgsql-hackers <pgsql-hackers(at)postgresql(dot)org>, Thomas Munro <thomas(dot)munro(at)gmail(dot)com> |
Subject: | Re: MultiXact\SLRU buffers configuration |
Date: | 2021-12-26 10:09:59 |
Message-ID: | 28051640513399@vla1-36b7415cbc1b.qloud-c.yandex.net |
Views: | Raw Message | Whole Thread | Download mbox | Resend email |
Thread: | |
Lists: | pgsql-hackers |
>> 8 апр. 2021 г., в 15:22, Thomas Munro <thomas(dot)munro(at)gmail(dot)com> написал(а):
>>
> I have one more idea inspired by CPU caches.
> Let's make SLRU n-associative, where n ~ 8.
> We can divide buffers into "banks", number of banks must be power of 2.
> All banks are of equal size. We choose bank size to approximately satisfy user's configured buffer size.
> Each page can live only within one bank. We use same search and eviction algorithms as we used in SLRU, but we only need to search\evict over 8 elements.
> All SLRU data of a single bank will be colocated within at most 2 cache line.
>
> I did not come up with idea how to avoid multiplication of bank_number * bank_size in case when user configured 31337 buffers (any number that is radically not a power of 2).
We can avoid this multiplication by using gapped memory under SLRU page_statuses, but from my POV here complexity does not worth possible performance gain.
PFA rebase of the patchset. Also I've added a patch to combine page_number, page_status, and page_dirty together to touch less cachelines.
Best regards, Andrey Borodin.
Attachment | Content-Type | Size |
---|---|---|
v-18-0001-Make-all-SLRU-buffer-sizes-configurable.patch | text/x-diff | 25.7 KB |
v-18-0003-Pack-SLRU-page_number-page_status-and-page_dirt.patch | text/x-diff | 23.6 KB |
v-18-0002-Divide-SLRU-buffers-into-8-associative-banks.patch | text/x-diff | 4.7 KB |
From | Date | Subject | |
---|---|---|---|
Next Message | Justin Pryzby | 2021-12-26 15:13:14 | Re: Inconsistent ellipsis in regression test error message? |
Previous Message | Michael Paquier | 2021-12-26 08:42:55 | Re: correct the sizes of values and nulls arrays in pg_control_checkpoint |