Monday, September 8, 2008

Analysis and Evolution of Journaling File Systems

This paper introduced the concepts of semantic block analysis (SBA) and semantic trace profiling (STP) as ways of analyzing and modifying file system behavior, respectively. SBA is similar to block-level tracing except that SBA has the added benefit of knowing the on-disk format of the file system. Generic SBA code can be combined with a smaller amount of file system specific code to accomodate ext3, ReiserFS, JFS, and NTFS. However, the authors could have made a more concrete, convincing argument about why this generic route is a better one to take than just implementing tracing straight into the file system. STP is a good way to test changes to the file system that are not too complex or "radical;" no time-consuming changing of the file system or accurate simulating of the file system is required. Actual case studies of ext3 and ReiserFS showed how useful SBA and STP can be, especially because of the handful of errors in ReiserFS that SBA uncovered.

The paper takes a close look at the ext3 file system and uses SBA to examine different aspects of its performance. In particular, it studies how the three journaling modes of ext3 handle sequential and random workloads. Based on these experiments, the authors recommend some techniques for improving performance. Adaptive journaling is suggested as a flexible journaling mode to efficiently handle a combination of sequential and random writes. Falsely limited parallelism can be combated by initiating journal and fixed-location writes at the same time, and tangled synchrony can be fixed by un-grouping synchronous and asynchronous traffic streams. It was hard to believe that ext3 didn't already employ differential journaling, especially when STP results showed it gave speedups of 6 and 200 using data journaling mode for two database workloads.

No comments: