Details
-
Improvement
-
Resolution: Duplicate
-
Minor
-
None
-
None
-
None
-
3
-
9223372036854775807
Description
We design a hybrid I/O path engine to perform buffered I/O as direct I/O. It can switch from the default buffered I/O to direct I/O path and allow the buffered I/O which meets the requirements and conditions to perform I/O in direct mode appropirately.
It is completely implemented inside the file system, and there is no need any changes for applications. In the user space the application does simple read() or write() calls. The filesystem decides internally to do buffered I/O via page cache, or switch to unligned (or aligned if possible) direct I/O accordingly.
i.e. to obtain better performance, the client can use buffered I/O for samll I/O size and direct I/O for large I/O size. For the sequential write, it can perform buffer I/O when the file is in small size at the beginning, and switch to high efficient direct I/O when the file is gradually growing large or the system memory is under pressure.
Switching to use direct I/O may provide some performance benefits in the following cases:
- There is no access locality;
- The system is under memory pressure or high CPU usage;
- A file is shared access under high contention from many clients;
This ticket tracks this feature to automatically switch from BIO to DIO path.