DIRECT_IO configuration parameter (UNIX)
Use the DIRECT_IO configuration parameter to control the use of direct I/O for cooked files used for dbspace chunks.
This parameter enables direct I/O (bypassing file system buffering) on UNIX platforms or concurrent IO (bypassing both file system buffering and unnecessary write serialization) on AIX® operating systems.
- onconfig.std value
- DIRECT_IO 0
- values
- 0 = Neither direct I/O or concurrent I/O is used
- 1 = Direct I/O, which bypasses file system buffering, is used if available
- 2 = Concurrent I/O is enabled on AIX operating systems (The concurrent I/O option includes direct I/O and concurrent I/O.)
- takes effect
- After you edit your onconfig file and restart the database server.
Usage
Direct I/O can only be used for dbspace chunks whose file systems support direct I/O for the page size.
By using direct I/O, you might be able to reduce the number of AIO virtual processors.
If direct I/O is enabled, KAIO (kernel asynchronous I/O) is used if the file system supports it. However, KAIO is not used if the environment variable KAIOOFF is set. When direct IO and KAIO are both used, the number of AIO virtual processors can be reduced. If direct IO is used, but KAIO is not, the number of AIO virtual processors should not be reduced.
IBM® Informix® does not use direct or concurrent I/O for cooked files used for temporary dbspace chunks.
On AIX, if Informix uses concurrent I/O for a chunk, another program (such as an online external backup program) must also use concurrent I/O. If not, the file open operation will fail.
If Informix uses direct I/O for a chunk, and another program tries to open the chunk file without using direct I/O, the open operation will normally succeed, but there can be a performance penalty. The penalty can occur because the file system might attempt to ensure that each open operation views the same file data, either by not using direct I/O at all for the duration of the conflicting open operation, or by flushing the file system cache before each direct I/O and invalidating the file system cache after each direct write.
Direct I/O is used for dbspace chunks on Windows platforms regardless of the value of the DIRECT_IO configuration parameter.