Re: Way to check whether a particular block is on the shared_buffer?

Поиск
Список
Период
Сортировка
От Kouhei Kaigai
Тема Re: Way to check whether a particular block is on the shared_buffer?
Дата
Msg-id 9A28C8860F777E439AA12E8AEA7694F8011A551D@BPXM15GP.gisp.nec.co.jp
обсуждение исходный текст
Ответ на Re: Way to check whether a particular block is on the shared_buffer?  (Alvaro Herrera <alvherre@2ndquadrant.com>)
Список 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 по дате отправления:

Предыдущее
От: Anastasia Lubennikova
Дата:
Сообщение: Re: [WIP] Effective storage of duplicates in B-tree index.
Следующее
От: Robert Haas
Дата:
Сообщение: Re: [PATCH] Refactoring of LWLock tranches