O.S. Evals

Kyriakos Lakkas (klakkas@cs.ucsd.edu)
Thu, 1 Jun 2000 08:20:07 -0700

Marshall K. McKusick, William N. Joy, Samuel J. Leffler, and Robert S.
Fabry, "A Fast File System for Unix," ACM Transactions on Computer Systems,
2(3), August 1984, pp. 181-197.

This paper presents the modifications made to the old UNIX file system,
aiming to better performance. The authors start by identifying the flaws of
the original implementation, along with some statistical and empirical file
access and size information. Then they talk in detail about their new
approaches, discussing the impact that they will have in practice. Finally,
taking advantage of the fact that the old file system will have to be dumped
and rebuilt, they also introduce five new functional enhancements.

The performance results that they include in the paper are quite impressive,
but also expected. The use of a bigger block size in addition to the
fragmentation of the blocks, increases the I/O bandwidth's utilization,
without wasting valuable disk space. Also, the ability to change most of the
file system parameters (especially the "hardware" oriented ones) on-line and
without having to dumb and rebuilt the whole thing, greatly increases the
flexibility and the portability of the system. Good work, presented
efficiently in a well written paper.

Mendel Rosenblum and John K. Ousterhout, "The Design and Implementation of a
Log-Structured File System," Proceedings of the 13th ACM Symposium on
Operating Systems Principles, December 1991.

The paper describes a new file system called LFS (Log-structured File
System). As opposed to traditional file systems, LFS writes data in a
log-style fashion, appending data and metadata (inodes, directory
information etc.) at the end of the log. The log is the only structure of
the disk and all data is resident in the log. The reason for such a system
is that writes to disk can be buffered and written together in one I/O
thereby using all the available disk bandwidth. To speed up read access LFS
outputs index information about the location of files in the log. When
available space on the disk falls below a minimum value a user-level
cleaning process compacts live data at the beginning of the log and appends
them to the log.

Something that I would like to have seen is the performance of read access
if files are grouped together into segments according to their access
patterns or directory information instead of age. Since most disk
optimization programs try to group files in the same directory together to
speed up access, it would be interesting to see how LFS would perform using
such a policy. Overall this is one of the best papers I've read so far.