When working with very large cache sizes, it was found that the Windows file system cache could grow to a level that impacted the cache memory usage of the c-treeACE process. On Windows systems, c-treeACE now supports the use of unbuffered disk I/O operations on a per-file basis. Unbuffered I/O bypasses the file system cache and avoids double-caching of data within the server process and the file system cache.
The c-treeACE configuration option UNBUFFERED_IO enables unbuffered I/O for the specified file. When the file is opened, additional logic determines the sector size of the disk on which the file resides and stores that information in the new file control block member dscsiz.
Windows enforces the following restrictions for I/O when using unbuffered I/O:
For files that use unbuffered I/O, c-tree’s file I/O function checks that these requirements are met. If not, logic is in place that makes the necessary adjustment by allocating a temporary buffer that is used in the I/O operation.
Example:
UNBUFFERED_IO <filename>
Use multiple entries to enable unbuffered I/O on multiple files. Wildcard characters are supported.
UNBUFFERED_IO custmast.dat
UNBUFFERED_IO *.dat
UNBUFFERED_IO data*
Restrictions:
An existing file:
mbopen: File <filename> disk sector size (<disk_sector_size>) exceeds page size (<page_size>)
A new file:
mbcratx: File <filename> disk sector size (<disk_sector_size>) exceeds page size (<page_size>)