directio,dsync & sync , async IO
I came across very conceptual article about the sybase device io.
If you have any questions and suggestions please let me know. Thanks.
Source: Sybase Blogs, www, sybooks, sybase white paper for direct io.
- Asynchronous I/O allows the process issuing the I/O to continue executing while OS completes the request.
- Dataserver process does not block on this request till its completion.
- Synchronous I/O blocks the I/O issuing process from continuing executing while OS completes the request.
- The process is blocked till the request is completed. This generally results in poor throughput.
- In 12.0 sybase introduced the dsync flag – shorthand for “Data Synchronous.”
- When the dsync setting is on, Adaptive Server opens a database device file using the UNIX dsync flag.
- The dsync flag in ASE directly translates to the O_DSYNC open(2) flag. That is to say, when ASE opens a device that has the dsync flag set, ASE will pass O_DSYNC to open(2).
- This flag tells the file system that a write to that file must pass though the cache and be written to disk before the write is considered complete.
- In other words, for writes we throw away the cache efficiency and make sure the data goes to disk.
- This way if the system crashes, everything that we thought had been written to disk has in fact been written to disk.
Is DSYNC “synchronous”??
- This is not true.
- This synchronous / asynchronous conflict is at a different level. With async i/o we are talking about the context in which the i/o is executed, i.e. whether the i/o blocks the caller or if it is done in a different context.
- With dsync we are talking about when the write() is considered complete.
- These are not mutually exclusive, and you can asynchronously do a data synchronous i/o.
- The async portion is as always: the application issues an i/o and later polls (or is notified) for completion. The dsync portion means that the application won’t be told that the I/O has completed until the data has made it to disk.
- Direct I/O is another kind of file system i/o, introduced in ASE15.
- In the direct i/o model the file system cache is completely bypassed.
- Using direct i/o, writes are naturally safe because they bypass the cache and go straight to disk.
- Direct i/o is very, very similar to raw i/o.
- The main difference is that in direct i/o the structure of a file system still exists, easing manageability.
- With raw i/o, no file system exists. The performance of raw and direct i/o should be very similar.
Also like to add :
- The dsync and directio are mutually exclusive. Both cannt be turn on same time on the device. Both dsync and directio provide the full recoveribility.
- If you gone through the full article, the next question is, which would be best in raw device and filesystem device with direct io, both are bypassing the file system cache.