Tuesday, October 31, 2006

Paper: "Rethink the Sync"

Rethink the Sync
Edmund B. Nightingale, Kaushik Veeraraghavan, Peter M. Chen, and Jason Flinn, University of Michigan

Abstract

We introduce external synchrony, a new model for local file I/O that provides the reliability and simplicity of synchronous I/O, yet also closely approximates the performance of asynchronous I/O. An external observer cannot distinguish the output of a computer with an externally synchronous file system from the output of a computer with a synchronous file system. No application modification is required to use an externally synchronous file system: in fact, application developers can program to the simpler synchronous I/O abstraction and still receive excellent performance. We have implemented an externally synchronous file system for Linux, called xsyncfs. Xsyncfs provides the same durability and ordering guarantees as those provided by a synchronously mounted ext3 file system. Yet, even for I/O-intensive benchmarks, xsyncfs performance is within 7% of ext3 mounted asynchronously. Compared to ext3 mounted synchronously, xsyncfs is up to two orders of magnitude faster.

2 Comments:

Blogger lianqiao said...

I am wondering if the external sync will fail when two processes are syncing with something like mutex.

Suppose following case:
1) process a process b
2) acq_mutex(x)
3) write(filey) acq_mutex(x)
4) rel_mutex(x) ...success here
5) read(filey)
6) rel_mutex(x)
7) print(z)

the problem is:
a) will process b fail to read (step 5) the update by process a?
b) will the print (step 7) comes before the write (step 3) in process a really commited?

7:06 PM  
Blogger lianqiao said...

I am wondering if the external sync will fail when two processes are syncing with something like mutex.

Suppose following case:
1) process a...|process b
2) acq_mutex(x)|
3) write(filey)|acq_mutex(x)
4) rel_mutex(x)|(success here)
5) ............|read(filey)
6) ............|rel_mutex(x)
7) ............|print(z)

the problem is:
a) will process b fail to read (step 5) the update by process a?
b) will the print (step 7) comes before the write (step 3) in process a really commited?

7:10 PM  

Post a Comment

<< Home