Setting the number of AIO VPs
Use the aio and num options of the VPCLASS configuration parameter to indicate the number of AIO virtual processors that the database server starts initially.
If your operating system does not support kernel asynchronous I/O (KAIO), the database server uses AIO virtual processors (VPs) to manage all database I/O requests.
If the VPCLASS configuration parameter does not specify the number of AIO VPs to start in the onconfig file, the number of AIO VPs initially started is equal to the number of chunks that use AIO, up to a maximum of 128.
VPCLASS aio,autotune=1
- If AUTO_AIOVPS is set to
1
(on), the number of AIO VPs initially started is equal to the number of chunks that use AIO, up to a maximum of 128. - If AUTO_AIOVPS is set to
0
(off), the number of AIO VPs started is equal to the greater of 6 or twice the number of chunks that use AIO, up to a maximum of 128.
The recommended number of AIO virtual processors depends on how many disks your configuration supports. If KAIO is not implemented on your platform, you should allocate one AIO virtual processor for each disk that contains database tables. You can add an additional AIO virtual processor for each chunk that the database server accesses frequently.
You can use the AUTO_AIOVPS configuration parameter to enable the database server to automatically increase the number of AIO virtual processors and page-cleaner threads when the server detects that AIO virtual processors are not keeping up with the I/O workload.
The machine notes file for your version of the database server indicates whether the operating system supports KAIO. If KAIO is supported, the machine notes describe how to enable KAIO on your specific operating system.
If your operating system supports KAIO, the CPU VPs make asynchronous I/O requests to the operating system instead of AIO virtual processors. In this case, configure only one AIO virtual processor, plus two additional AIO virtual processor for every file chunk that does not use KAIO.
If you use cooked files and if you enable direct I/O using the DIRECT_IO configuration parameter, you can reduce the number of AIO virtual processors. If the database server implements KAIO and if direct I/O is enabled, the database server will attempt to use KAIO, so you probably do not need more than one AIO virtual processor. Temporary dbspaces do not use direct I/O. If you have temporary dbspaces, you will probably need more than one AIO virtual processors.
Even when direct I/O is enabled with the DIRECT_IO configuration parameter, if the file system does not support either direct I/O or KAIO, you still must allocate two additional AIO virtual processors for every active dbspace chunk that is not using KAIO.
The goal in allocating AIO virtual processors is to allocate enough of them so that the lengths of the I/O request queues are kept short (that is, the queues have as few I/O requests in them as possible). When the I/O request queues remain consistently short, I/O requests are processed as fast as they occur. Use the onstat -g ioq command to monitor the length of the I/O queues for the AIO virtual processors.
Allocate enough AIO VPs to accommodate the peak number of I/O requests. Generally, allocating a few extra AIO VPs is not detrimental. To start additional AIO VPs while the database server is in online mode, use the onmode -p command. You cannot drop AIO VPs in online mode.