Asynchronous I/O
AIX® supports both kernelized asynchronous I/O to raw devices or Veritas Quick I/O devices and threaded asynchronous I/O to filesystem files (e.g., JFS). With KAIO, the Oracle process queues I/O requests in the kernel and are notified of I/O completion by an interrupt. In contrast, threaded asynchronous I/O uses multiple threads with each thread issuing a synchronous I/O to simulate the asynchronous I/O.
If you are going to implement your database files on filesystems like JFS or JFS2, you may have to monitor and tune the asynchronous I/O tunable parameters. By default, these parameters may be set too low for Oracle Databases on large systems with 4 CPUs or more if you are using threaded asynchronous I/O.
The asynchronous I/O parameters are too low in your configuration if you find the following messages in the DBWR, CKPT, or LGWR files in the ORACLE_BASE/admin/dbname/bdump directory:
Warning: lio_listio returned EAGAIN
Performance degradation may be seen
The EAGAIN from the lio_listio function indicates that "the resources necessary to queue all the I/O requests were not available" (see lio_listio subroutine documentation in the AIX Technical Reference: Base Operating System and Extensions Volume 1).
You can find out the current asynchronous I/O settings by issuing the following command:
> lsattr -El aio0
autoconfig available STATE to be configured at system restart True
fastpath enable State of fast path True
kprocprio 39 Server PRIORITY True
maxreqs 4096 Maximum number of REQUESTS True
maxservers 10 MAXIMUM number of servers per cpu True
minservers 1 MINIMUM number of servers True