DIRECT_IO configuration parameter (UNIX™)
Use the DIRECT_IO configuration parameter to control the use of direct I/O for cooked files and block devices 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
- flag values
0x0= Neither direct I/O or concurrent I/O is used- 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.
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.
HCL Informix® does not use direct or concurrent I/O for temporary dbspace chunks unless the DIRECT_IO value contains the 0x4 flag
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.
- Example values
0x1= Direct I/O is enabled for non-temporary dbspace chunks.
Device Block Sizes on Linux
Prior to 15.0.1.x, Direct I/O on Linux was supported only on storage devices with a native or emulated 512-byte block size. Starting from 15.0.1.x, Direct I/O is also supported on devices with 2k and 4k block sizes.