Thread: slru bank

slru bank

From
"席冲(宜穆)"
Date:

Hello all,


This PostgreSQL version is 17beta2.

In SlruSelectLRUPage(),  Why do we need to traverse all slots to find that a page already has a buffer assigned? Why not find it 
from the [bankstart,bankend]?

Best regards

Re: slru bank

From
"David G. Johnston"
Date:
On Thu, Aug 22, 2024 at 7:07 PM 席冲(宜穆) <xichong.xc@alibaba-inc.com> wrote:

In SlruSelectLRUPage(),  Why do we need to traverse all slots to find that a page already has a buffer assigned? Why not find it 

from the [bankstart,bankend]?


Only the bank is searched, both of the logic loops are bounded by:

for (int slotno = bankstart; slotno < bankend; slotno++)

David J.

Re: slru bank

From
Tom Lane
Date:
"David G. Johnston" <david.g.johnston@gmail.com> writes:
> On Thu, Aug 22, 2024 at 7:07 PM 席冲(宜穆) <xichong.xc@alibaba-inc.com> wrote:
>> In SlruSelectLRUPage(),  Why do we need to traverse all slots to find that
>> a page already has a buffer assigned? Why not find it
>> from the [bankstart,bankend]?

> Only the bank is searched, both of the logic loops are bounded by:
> for (int slotno = bankstart; slotno < bankend; slotno++)

I think the OP has rediscovered the bug already fixed in 7b063ff26.
That's post-17beta2, though.

            regards, tom lane



Re: slru bank

From
"David G. Johnston"
Date:
On Thu, Aug 22, 2024 at 7:27 PM Tom Lane <tgl@sss.pgh.pa.us> wrote:
"David G. Johnston" <david.g.johnston@gmail.com> writes:
> On Thu, Aug 22, 2024 at 7:07 PM 席冲(宜穆) <xichong.xc@alibaba-inc.com> wrote:
>> In SlruSelectLRUPage(),  Why do we need to traverse all slots to find that
>> a page already has a buffer assigned? Why not find it
>> from the [bankstart,bankend]?

> Only the bank is searched, both of the logic loops are bounded by:
> for (int slotno = bankstart; slotno < bankend; slotno++)

I think the OP has rediscovered the bug already fixed in 7b063ff26.
That's post-17beta2, though.


Indeed.  I was looking at HEAD.

David J.