Apache Ignite Direct IO is plugin, which provides page store with ability to write and read cache partitions in O_DIRECT mode.
OS gets the data and stores it in a file buffer cache (Page Cache).
Similarly, for every write operation, the OS first writes the data in a cache and then transfers to the disk. To eliminate this process you can enable Direct I/O in which case the data is read and written directly from/to the disk bypassing the file buffer cache.
Direct I/O plugin in Ignite is used for the checkpointing process where the dirty pages in RAM are written to the disk.
If you are using Maven to manage dependencies of your project, you can add Direct IO Module dependency like this (replace ‘${ignite.version}’ with actual Ignite version you are interested in):
<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd"> ... <dependencies> ... <dependency> <groupId>org.apache.ignite</groupId> <artifactId>ignite-direct-io</artifactId> <version>${ignite.version}</version> </dependency> ... </dependencies> ... </project>
For gradle you can add compile dependency, where igniteVersion is actual Ignite version:
compile group: 'org.apache.ignite', name: 'ignite-direct-io', version: igniteVersion
Additional setup is not required. Once plugin is available in classpath, it will be used for Durable Memory IO.
See more information in Apache Ignite documentation: How to enable Direct IO
and description of internal desing can be found in Wiki: Under the hood: Direct IO