"Douglas McNaught" <[EMAIL PROTECTED]> writes: > On 12/2/07, Gregory Stark <[EMAIL PROTECTED]> wrote: >> >> The two interfaces I'm aware of for this are posix_fadvise() and libaio. I've >> run tests with a synthetic benchmark which generates a large file then reads >> a >> random selection of blocks from within it using either synchronous reads like >> we do now or either of those interfaces. I saw impressive speed gains on a >> machine with only three drives in a raid array. I did this a while ago so I >> don't have the results handy. I'll rerun the tests again and post them. > > The issue I've always seen raised with asynchronous I/O is > portability--apparently some platforms PG runs on don't support it (or > not well). AIUI Linux actually still has a fairly crappy > implementation of AIO--glibc starts threads to do the I/O and then > tracks when they finish. Not absolutely horrible, but a nice way to > suddenly have a threaded backend when you're not expecting one.
In the tests I ran Linux's posix_fadvise worked well and that's the simpler interface for us to adapt to anyways. On Solaris there was no posix_fadvise but libaio worked instead. -- Gregory Stark EnterpriseDB http://www.enterprisedb.com Get trained by Bruce Momjian - ask me about EnterpriseDB's PostgreSQL training! ---------------------------(end of broadcast)--------------------------- TIP 4: Have you searched our list archives? http://archives.postgresql.org