Skip site navigation (1) Skip section navigation (2)

Asynchronous I/O Support

From: "Raja Agrawal" <raja(dot)agrawal(at)gmail(dot)com>
To: pgsql-hackers(at)postgresql(dot)org
Subject: Asynchronous I/O Support
Date: 2006-10-14 22:46:07
Message-ID: 14006f560610141546m52a38b39s76053b6a08774b01@mail.gmail.com (view raw or flat)
Thread:
Lists: pgsql-hackers
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

Responses

pgsql-hackers by date

Next:From: Sean DavisDate: 2006-10-14 22:47:45
Subject: Problems building 8.2beta1 on macos G5 xserve
Previous:From: Merlin MoncureDate: 2006-10-14 22:20:45
Subject: Re: more anti-postgresql FUD

Privacy Policy | About PostgreSQL
Copyright © 1996-2014 The PostgreSQL Global Development Group