Sybase Blog -Anything About Sybase ASE,REP,IQ.

Tuesday, April 20, 2010

directio,dsync & sync , async IO

All,

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:

  • 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:

  • 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.




DSYNC :

  • 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 IO

  • 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.