From: | "Raja Agrawal" <raja(dot)agrawal(at)gmail(dot)com> |
---|---|
To: | pgsql-patches(at)postgresql(dot)org |
Subject: | Asynchronous I/O Support |
Date: | 2006-10-14 22:49:26 |
Message-ID: | 14006f560610141549m20c28d96qc023c0a84a12fdff@mail.gmail.com |
Views: | Raw Message | Whole Thread | Download mbox | Resend email |
Thread: | |
Lists: | pgsql-patches |
Postgre8.1 doesn't seem to support asynchronous I/O. Has its design
been thought off already?
To tried doing with a simple example:
For a Index Nest loop join:
Fetch the outer tuples in an array, and then send all the
corresponding inner-tuple fetch requests asynchronously. Hence while
the IO is done for inner relation the new outer-tuple array can be
populated and other join operations can happen. This is maximum
overlap we could think of (doing minimal changes).
[The current implementation does sync IO, that is it fetches a outer
tuple, then requests corresponding inner tuple (waits till it gets),
does the processing, get another inner/outer tuple and so on.]
We have made appropriate changes in nodeNestloop.c but are unable to
track down how it issues the IO and gets the tuple in the slot.
Help! -- how to issue a async IO (given kernel 2.6 supports AIO), and
does a callback sceme or a sync IO on top of AIO, which of these will be best?
Also, as Graefe's paper suggests, a producer-consumer (thread-based)
is the best way to do this. But how to implement threading? (in case
its possible to?)
Sincere regards,
Raja Agrawal
From | Date | Subject | |
---|---|---|---|
Next Message | Bruce Momjian | 2006-10-14 23:08:54 | Re: small FAQ patch |
Previous Message | Tom Lane | 2006-10-14 18:55:03 | Re: [PATCHES] New shared memory hooks proposal (was Re: pre_load_libraries) |