Re: Experimenting with hash join prefetch

2020-02-03 Thread Thomas Munro
On Tue, Feb 4, 2020 at 2:31 PM Andres Freund wrote: > How much of the benefit here comes from the prefetching, and how much > just from writing the code in a manner that allows for more out-of-order > execution? Because there's no dependencies preventing execution of the > next queued tuple

Re: Experimenting with hash join prefetch

2020-02-03 Thread Andres Freund
HI, On 2020-02-04 01:48:49 +1300, Thomas Munro wrote: > On Fri, Apr 12, 2019 at 4:23 PM Thomas Munro wrote: > > ... if we also prefetch during > > the build phase ... > > Here's an experimental patch to investigate just that part. I tried > initiating a prefetch of the bucket just before we

Re: Experimenting with hash join prefetch

2020-02-03 Thread Thomas Munro
On Fri, Apr 12, 2019 at 4:23 PM Thomas Munro wrote: > ... if we also prefetch during > the build phase ... Here's an experimental patch to investigate just that part. I tried initiating a prefetch of the bucket just before we copy the tuple and then finally insert it, but it doesn't seem to be

Re: Experimenting with hash join prefetch

2019-04-11 Thread Thomas Munro
On Fri, Apr 12, 2019 at 1:35 AM Robert Haas wrote: > It would be interesting to see how this does with moderately-long text > keys, say 32 or 64 byte strings, and with actually-long text keys, say > several kB, and then with gigantic text keys, say several MB. At some > point the key probably

Re: Experimenting with hash join prefetch

2019-04-11 Thread Robert Haas
On Wed, Apr 10, 2019 at 2:10 AM Thomas Munro wrote: > Here is an example of times for a trivial join on my laptop. Note > that this is prefetching only the probing phase, not while building > which should also be possible. I didn't get around to trying deeper > prefetch pipelines as discussed

Re: Experimenting with hash join prefetch

2019-04-10 Thread Thomas Munro
On Sun, Oct 14, 2018 at 11:11 PM Andrey Borodin wrote: > > 14 окт. 2018 г., в 9:18, Thomas Munro > > написал(а): > > > > + /* Prefetch the bucket for the next key */ > > + uint32 next_hash = hash_uint32(DatumGetInt32(keyval) + 1); > > + uint32

Re: Experimenting with hash join prefetch

2018-10-14 Thread Thomas Munro
On Mon, Oct 15, 2018 at 12:16 AM Dmitry Dolgov <9erthali...@gmail.com> wrote: > > On Sun, 14 Oct 2018 at 06:19, Thomas Munro > > wrote: > > Cache-oblivious hash joins cause a lot of TLB and cache misses. > > ... > > (There is another class of cache-aware hash join algorithms that partition > >

Re: Experimenting with hash join prefetch

2018-10-14 Thread Dmitry Dolgov
> On Sun, 14 Oct 2018 at 06:19, Thomas Munro > wrote: > > Cache-oblivious hash joins cause a lot of TLB and cache misses. > ... > (There is another class of cache-aware hash join algorithms that partition > carefully up front to avoid them; that's not us.) Just out of curiosity, can you please

Re: Experimenting with hash join prefetch

2018-10-14 Thread Andrey Borodin
Hi, Thomas! > 14 окт. 2018 г., в 9:18, Thomas Munro > написал(а): > > + /* Prefetch the bucket for the next key */ > + uint32 next_hash = hash_uint32(DatumGetInt32(keyval) + 1); > + uint32 next_bucket = next_hash % hashtable->nbuckets; > +