wjt, Tue Sep 18 12:38:54 CEST 2001
The database dbwr process currently uses a combination of aio_suspend/aio_error
to figure out if an async I/O has completed. The problem with these interfaces
is that they only allow you to ask "which one of those I/Os are completed".
This results in a lot of checking. It also adds to the latency
of the dbwr process because the I/Os it is waiting for might not be the
ones which completed athe fastest. The dbwr process however is
interested in knowing about any N I/Os that have already completed. In
other words give me the fastest ones. This can easily be implemented by
returning N elements out of the done Q. There is also a request by Oracle to
implement such an interface. The interface could be similar to our Solaris
aio interface aiowait which returns one completed I/O. aio_nawait would just
returns N completed I/Os or wait until N I/Os have completed.