Asynchronous I/O is very important to performance especially on high transaction volume processing environments. In summary, processes that issue synchronous read() or write() I/O calls must wait for the I/O to complete before it can continue. In contrast, processes can issue multiple asynchronous (non-blocking) aio_read() or aio_write() I/O calls in parallel without waiting.
HP-UX does not enable asynchronous I/O by default. HP-UX also only supports asynchronous I/O on files that reside on raw devices and not on filesystems. If you don't enable asynchronous I/O, workloads such as Oracle will try to run multiple DBWRs processes to get a limited amount of I/O parallelism.
To enable asynchronous I/O on HP-UX, you have to:
# /sbin/mknod /dev/async c 101 0x104
# chown oracle:dba /dev/async
# chmod 660 /dev/async
# ls -l /dev/async
crw-rw-rw- 1 bin bin 101 0x000104 May 29 2011 /dev/async
In order to use asynchronous I/O, the OS group (typically dba) that the Oracle user belongs to must be granted the MLOCK privilege. You can check if the group has the privileges by issuing the following command:
# /usr/bin/getprivgrp dba
dba: RTPRIO MLOCK RTSCHED
dba RTPRIO RTSCHED MLOCK
/usr/bin/setprivgrp -f /etc/privgroup
# kctune -v max_async_ports
Tunable max_async_ports
Description Maximum number of open asyncdsk ports
Module io
Current Value 600
Value at Next Boot 600
Value at Last Boot 600
Default Value 50
Can Change At Next Boot Only