Re: Way to check whether a particular block is on the shared_buffer? - Mailing list pgsql-hackers

From Kouhei Kaigai
Subject Re: Way to check whether a particular block is on the shared_buffer?
Date
Msg-id 9A28C8860F777E439AA12E8AEA7694F8011A551D@BPXM15GP.gisp.nec.co.jp
Whole thread Raw
In response to Re: Way to check whether a particular block is on the shared_buffer?  (Alvaro Herrera <alvherre@2ndquadrant.com>)
List pgsql-hackers
> > > On 1/31/16 7:38 PM, Kouhei Kaigai wrote:
> 
> > > To answer your direct question, I'm no expert, but I haven't seen any
> > > functions that do exactly what you want. You'd have to pull relevant
> > > bits from ReadBuffer_*. Or maybe a better method would just be to call
> > > BufTableLookup() without any locks and if you get a result > -1 just
> > > call the relevant ReadBuffer function. Sometimes you'll end up calling
> > > ReadBuffer even though the buffer isn't in shared buffers, but I would
> > > think that would be a rare occurrence.
> > >
> > Thanks, indeed, extension can call BufTableLookup(). PrefetchBuffer()
> > has a good example for this.
> >
> > If it returned a valid buf_id, we have nothing difficult; just call
> > ReadBuffer() to pin the buffer.
> 
> Isn't this what (or very similar to)
> ReadBufferExtended(RBM_ZERO_AND_LOCK) is already doing?
>
This operation actually acquires a buffer page, fills up with zero
and a valid buffer page is wiped out if no free buffer page.
I want to keep the contents of the shared buffer already loaded on
the main memory. P2P DMA and GPU preprocessing intends to minimize
main memory consumption by rows to be filtered by scan qualifiers.

Thanks,
--
NEC Business Creation Division / PG-Strom Project
KaiGai Kohei <kaigai@ak.jp.nec.com>


pgsql-hackers by date:

Previous
From: Anastasia Lubennikova
Date:
Subject: Re: [WIP] Effective storage of duplicates in B-tree index.
Next
From: Robert Haas
Date:
Subject: Re: [PATCH] Refactoring of LWLock tranches