Oracle FAQ Your Portal to the Oracle Knowledge Grid
HOME | ASK QUESTION | ADD INFO | SEARCH | E-MAIL US
 

Home -> Community -> Usenet -> c.d.o.server -> Re: Async I/O is NOT supppressed for filesystem datafiles in 8.1.5?

Re: Async I/O is NOT supppressed for filesystem datafiles in 8.1.5?

From: Yong Huang <yong321_at_yahoo.com>
Date: 28 Dec 2001 15:36:32 -0800
Message-ID: <b3cb12d6.0112281536.59d4eab4@posting.google.com>


It looks like AIO is indeed used on filesystem based files, but kaio() is not. We shouldn't be confused about the terminology. The question "is AIO used or not" should be more specific about libaio or kaio.

Here's something from an authority:



Hi,

I forwarded your comments on to the author, Bob Sneed, who replies below.

Dave Miller
Sun Microsystems, Inc.

[snipped]
Our offering provides AIO to filesystem files via the same interface as
for RAW, and this has proven to be a real workhorse. Since the current
implementation must somehow branch between the file versus RAW path, the logic is a 'feature' because ...

        if (ioctl() says it's RAW)
        then do KAIO
        else do LWP-based AIO

... would require an extra system call per I/O compared to the way it is now implemented ...

        do KAIO
        if (that failed)
        then do LWP-based AIO

... and as it turns out, the extra kaio call for the LWP case is a very
slight per-call overhead to the LWP-managed logic. I am sympathetic to
the notion that 'clever' is merely 'irritating' when the documentation is
not there. I would support a customer filing a bug report complaining that
kaio(2) is not documented, and should be, even if only to say that it is
not a 'supported' or 'exposed' interface.

>Much later, in the footnotes, the author acknowledges that "Certain
Oracle
>8.1 releases suppress AIO use on ordinary filesystem files ".
Suppress? How?

The logic used was essentially "if file is not character special, then use pread/pwrite directly".


Also look at the articles at
http://www.ixora.com.au/q+a/0011/14171201.htm and a Q&A at http://www.ixora.com.au/q+a/0105/03171458.htm.

My own test on 8.1.7 shows that if disk_asynch_io is true, kaio() is attempted by DBWR with ENOTSUP returned, followed by lwp_cond_signal(), lwp_cond_wait and pwrite64(). If disk_asynch_io is false, pwrite64() is not preceded by kaio() and the lwp_cond_XX calls.

Yong Huang
yong321_at_yahoo.com Received on Fri Dec 28 2001 - 17:36:32 CST

Original text of this message

HOME | ASK QUESTION | ADD INFO | SEARCH | E-MAIL US