I thought about how to support both and ran into probblems that would make the resulting solutions quite complex.

In the libaio view of the world you initiate io and either get a callback or call another syscall to test if it's complete. Either approach has problems for postgres. If the process that initiated io is in the middle of a long query it might takr a long time ot even never get back to complete the io. The callbacks use threads...

And polling for completion has the problem that another process could be waiting on the io and can't issue a read as long as the first process has the buffer locked and io in progress. I think aio makes a lot more sense if you're using threads so you can start a thread to wait for the io to complete.

Actually I think it might be doable with a lot of work but I'm worried that it would be a lot of extra complexity even when you're not using it. The current patch doesn't change anything when you're not using it and actually is quite simple.

greg

On 24 Oct 2008, at 03:18 PM, Bruce Momjian <[EMAIL PROTECTED]> wrote:

Jonah H. Harris wrote:
On Fri, Oct 24, 2008 at 7:59 AM, Hannu Krosing <[EMAIL PROTECTED]> wrote:
On Fri, 2008-10-24 at 00:52 -0400, Jonah H. Harris wrote:
While we could build an
abstract prefetch interface and simply use fadvise for it now (rather
than OS-specific code), I don't see an easy win in any case.

When building an abstract interface, always use at least two
implementations (I guess that would be fadvise on linux and AIO on
solaris in this case). You are much more likely to get the interface
right this way.

I agree, I just wasn't sure as to whether Greg's patch supported both methods.

It does not, and probably will not for the near future;  we can only
hope Solaris suports posix_fadvise() at some point.

--
 Bruce Momjian  <[EMAIL PROTECTED]>        http://momjian.us
 EnterpriseDB                             http://enterprisedb.com

 + If your life is a hard drive, Christ can be your backup. +

--
Sent via pgsql-hackers mailing list (pgsql-hackers@postgresql.org)
To make changes to your subscription:
http://www.postgresql.org/mailpref/pgsql-hackers

Reply via email to