Rethink the Sync
Edmund B. Nightingale, Kaushik Veeraraghavan, Peter M. Chen, and Jason Flinn
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.