I couldn't get async I/O to work on Linux. That is it "worked" but
performed the same as reading one block at a time. On solaris the
situation is reversed.
In what way is fadvise a kludge?
greg
On 24 Oct 2008, at 01:44 AM, Bruce Momjian <bruce@momjian.us> wrote:
> Jonah H. Harris wrote:
>> On Thu, Oct 23, 2008 at 4:53 PM, Greg Smith <gsmith@gregsmith.com>
>> wrote:
>>>> I think the current plan is to use posix_advise() to allow
>>>> parallel I/O,
>>>> rather than async I/O becuase posix_advise() will require fewer
>>>> code
>>>> changes.
>>>
>>> These are not necessarily mutually exclusive designs. fadvise
>>> works fine on
>>> Linux, but as far as I know only async I/O works on Solaris.
>>> Linux also has
>>> an async I/O library, and it's not clear to me yet whether that
>>> might work
>>> even better than the fadvise approach.
>>
>> fadvise is a kludge. While it will help, it still makes us
>> completely
>> reliant on the OS. For performance reasons, we should be
>> supporting a
>> multi-block read directly into shared buffers. IIRC, we currently
>> have support for rings in the buffer pool, which we could read
>> directly into. Though, an LRU-based buffer manager design would be
>> more optimal in this case.
>
> True, it is a kludge but if it gives us 95% of the benfit with 10% of
> the code, it is a win.
>
> --
> Bruce Momjian <bruce@momjian.us> 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